Content
<div align="center">
# 🚀 DAT (Data Ask Tool)
**An enterprise-level AI tool for conversing with data in natural language**
*Dating with your data*
[](https://github.com/junjiem/dat/releases/latest)
[](https://github.com/junjiem/dat)
[](https://github.com/junjiem/dat/releases/latest)
[](https://github.com/junjiem/dat/blob/main/LICENSE)
[](https://openjdk.java.net/projects/jdk/17/)
[](https://maven.apache.org/)
[](https://deepwiki.com/junjiem/dat)

</div>
---
## 🎯 Project Vision
> We are entering a new era of generative artificial intelligence, **language is the interface, and data is the fuel**.
DAT is committed to solving the last mile problem of enterprise data querying—enabling business personnel to interact directly with databases using natural language, without the need to write complex SQL queries. Through a pre-modeled semantic layer, DAT ensures that AI can not only express itself confidently but also accurately.
The core driving force behind DAT does not solely stem from another intellectual explosion of large language models, but rather from the Askdata Agent workflow we designed for it. Everything we do is essentially about exchanging a critically important element in the real business world—`“high quality”` and `“certainty”` of results—with `“more precise and complete knowledge”` (**the main focus of current development**), `“more computational steps”`, and `“longer thinking time”`.
## ✨ Core Features
### 🏗️ Enterprise Architecture Design
- **🔌 Pluggable SPI Architecture** - Flexible extension supporting various databases, LLM (Large Language Models), and embedding models
- **🏭 Factory Pattern Implementation** - Standardized component creation and management mechanism
- **📦 Modular Design** - Clear separation of responsibilities, facilitating maintenance and expansion
### 🗃️ Multi-Database Support
- **MySQL** - Full support, including connection pooling and dialect conversion
- **PostgreSQL** - Enterprise-level database support
- **Oracle** - Compatibility with traditional enterprise databases
- **More Databases** - Easily extendable through the SPI (Service Provider Interface) mechanism
### 🤖 Intelligent Semantic SQL Generation
- **Natural Language Understanding** - LLM-based semantic parsing
- **SQL Dialect Conversion** - Automatic adaptation to different database syntax
- **Semantic Model Binding** - Ensuring query accuracy through predefined models
### 📊 Rich Semantic Modeling
- **Entities** - Definition of primary key and foreign key relationships
- **Dimensions** - Support for time, category, and enumeration dimensions
- **Measures** - Definition of aggregate functions and calculated fields
- **YAML Configuration** - Intuitive model definition method
### 🔍 Vectorized Retrieval Enhancement
- **Content Storage** - SQL Q&A pairs, synonyms, business knowledge vectorization
- **Semantic Retrieval** - Intelligent matching based on Embedding models
- **Multiple Storage Backends** - Storage options such as DuckDB, Weaviate, PGVector, etc.
## 🏗️ System Architecture
```
┌─────────────────────────────────────────────────────────────┐
│ DAT Framework │
├─────────────────────────────────────────────────────────────┤
│ 🎯 DAT Language (Creation Layer) │
│ ├── 📝 Semantic Model Definition (YAML) │
│ ├── 🗃️ Data Model Configuration │
│ └── 🤖 Intelligent Agent Configuration │
├─────────────────────────────────────────────────────────────┤
│ ⚙️ DAT Engine (Execution Layer) │
│ ├── 🔤 Natural Language Understanding │ 📊 Semantic SQL Generation │ 🗄️ Data Query Execution │
│ ├── 🧠 LLM Call Management │ 🔍 Vector Retrieval Enhancement │ 📈 Result Formatting │
│ └── 🔌 SPI Component Management │ 🏭 Factory Pattern Creation │ ⚡ Cache Optimization │
└─────────────────────────────────────────────────────────────┘
```
- 1. DAT CLI is used for local development, unit testing, and debugging. It allows the development of DAT intelligent query projects locally through IDEs (such as vscode, idea, or eclipse), `transforming prompts (context) into data engineering`. For this reason, the development model of DAT Project naturally aligns with AI Coding tools (like Cursor, Claude Code, etc.), facilitating a smarter and more automated intelligent query development process.
- 2. DAT is not a platform, but a `framework`; secondary developers can build their own Web UI based on `dat-sdk`, which can be a web IDE, drag-and-drop workflow, list, or other interactive methods; or provide services via `OpenAPI` or `MCP`.
- 3. This model `allows data engineers or data analysts to develop intelligent query applications in a manner similar to how software engineers develop applications`.
## 🚀 Quick Start
### 📋 Environment Requirements
- **Java 17+** - It is recommended to use OpenJDK
- **Database** - Choose one from MySQL / PostgreSQL / Oracle / DuckDB
- **LLM API** - OpenAI / Anthropic / Ollama / Gemini, etc.
### ⚡ 5-Minute Quick Experience
#### 1️⃣ Install DAT CLI
##### 🐧 Linux/macOS Systems
```bash
# Download the Latest Version
wget https://github.com/junjiem/dat/releases/latest/download/dat-cli-0.7.1-full.tar.gz
# Unzip and Configure Environment Variables
```bash
tar -xzf dat-cli-x.x.x.tar.gz
mv dat-cli-x.x.x dat-cli
export PATH=$PATH:$(pwd)/dat-cli/bin
```
##### 🪟 Windows System
1. Visit the [Releases page](https://github.com/junjiem/dat/releases/latest)
2. Download the `dat-cli-x.x.x.tar.gz` file
3. Extract it using WinRAR, 7-Zip, or the built-in Windows extraction tool
4. Add the extracted `dat-cli\bin` directory to the system PATH environment variable:
- Right-click "This PC" → "Properties" → "Advanced system settings"
- Click "Environment Variables" → Edit the "Path" variable
- Add the path to the DAT CLI's bin directory
#### 2️⃣ Initialize the Project
```bash
# Create a New DAT Project
dat init
# Enter Project Information as Prompted
# Project name: my-dat-project
# Description: My First Smart Questioning Project
# Database type: mysql
```

> 💡 <strong style="color: orange;">Tip:</strong> If you do not have an existing database to access, or just want to query local CSV data, you can choose `duckdb` as the database during project initialization. By default, it will create a local embedded data store with the 'duckdb' prefix in the project's `.dat` directory.
#### 3️⃣ Configure Data Source
Edit the generated `dat_project.yaml`:
```yaml
version: 1
name: my-dat-project
description: My first intelligent question project
```
# Database Configuration
db:
provider: mysql
configuration:
url: jdbc:mysql://localhost:3306/mydb
username: your_username
password: your_password
timeout: 1 min
# LLM Configuration
llm:
provider: openai
configuration:
api-key: your-openai-api-key
model-name: gpt-4
base-url: https://api.openai.com/v1
# Embedding Model Configuration
embedding:
provider: bge-small-zh-v15-q
```
> 💡 <strong style="color: orange;">Tip:</strong> For more project configurations, please refer to the `dat_project.yaml.template` under the project.
> 💡 <strong style="color: orange;">Tip:</strong>
>
> If you don't have any existing data to use, you can execute the `seed` command to load the seed data from the example in the initialized project into the database.
>
> ```
> # Load seed data
> dat seed -p ./my-dat-project
> ```
>
> Then skip step 4️⃣ and use the semantic model from the initialized project example to proceed to step 5️⃣ "Start Intelligent Querying".
#### 4️⃣ Create Semantic Model
Create `sales.yaml` in the `models/` directory:
```yaml
version: 1
semantic_models:
- name: sales_data
description: Sales Data Analysis Model
model: ref('sales_table')
entities:
- name: product_id
description: Product ID
type: primary
dimensions:
- name: sale_date
description: Sale Date
type: time
type_params:
time_granularity: day
- name: region
description: Sales Region
type: categorical
enum_values:
- value: "North"
label: "北区"
- value: "South"
label: "南区"
measures:
- name: sales_amount
description: Sales Amount
agg: sum
- name: order_count
description: Order Count
agg: count
```
> 💡 <strong style="color: orange;">Tip:</strong> This is just an example, please configure it according to your actual data.
> For more semantic model configuration instructions, please refer to the `MODEL_GUIDE.md` manual in the project.
#### 5️⃣ Start Intelligent Querying
```bash
# Start Interactive Query
dat run -p ./my-dat-project -a default
# Or Start the API Service
```bash
dat server openapi -p ./my-dat-project
```
Now you can query data using natural language!
```
💬 What was the sales amount in the North region last month?
📊 Analyzing your question...
🔍 Generating semantic SQL: SELECT SUM(sales_amount) FROM sales_data WHERE region='North' AND sale_date >= '2024-11-01'
✅ Query result: The sales amount in the North region last month was ¥1,234,567
```
### 🌐 Multiple Usage Methods
DAT provides various usage methods (CLI is mainly used for development and debugging) to meet the needs of different scenarios:
#### 1️⃣ Using Dify Plugin (WEB Q&A)
If you need to perform intelligent Q&A through the **WEB interface** without developing your own frontend, you can directly use the **Dify platform**'s DAT plugin.
🔗 **Plugin Address**: [https://marketplace.dify.ai/plugins/junjiem/dat](https://marketplace.dify.ai/plugins/junjiem/dat)
First, [start the DAT OpenAPI service](#-dat-server---service-deployment), then install the DAT plugin in Dify and configure the `DAT OpenAPI Base URL` for integration. You can then create intelligent Q&A applications in Dify's visual interface, providing a user-friendly WEB interaction experience.
#### 2️⃣ Integrating into Your Own Project (Streaming Q&A API)
If you need to integrate the streaming Q&A functionality into **your own WEB project**, you can [start the DAT OpenAPI service](#-dat-server---service-deployment) for integration.
#### 3️⃣ Integration into Agent (Supports MCP Tools)
If you are using an Agent that supports **MCP (Model Context Protocol)**, such as Claude Desktop or Cline, you can [start the DAT's MCP service](#-mcp-服务) to integrate the intelligent question-answering capabilities into these Agents.
## 🛠️ Detailed Explanation of CLI Commands
### 📖 Command Overview

### 🎯 Core Commands
#### 🚀 `dat init` - Project Initialization
```bash
dat init --help
```

**Usage Example**:
```bash
# Interactive Initialization of DAT Project in the Current Working Directory
dat init
# Interactive Initialization of DAT Project in the Specified Project Workspace Directory
```bash
dat init -w ./my-workspace
```

#### 🤖 `dat run` - Intelligent Query
```bash
dat run --help
```

**Usage Example**:
```bash
# The current working directory is the DAT project directory and start the default proxy
dat run
# The current working directory is the DAT project directory and start a specific agent
dat run -a sales-agent
# Specify DAT Project Directory and Start Specific Agent
```bash
dat run -p ./my-project -a sales-agent
```

#### 🌐 `dat server` - Service Deployment
```bash
dat server --help
```

##### 🔌 OpenAPI Service
```bash
dat server openapi --help
```

**Start Service**:
```bash
# The current working directory is the DAT project directory
dat server openapi
# Specify DAT Project Directory
dat server openapi -p ./my-project
# Custom Port
dat server openapi --port=9090
```

**Swagger UI Interface**:

**API Call Example**:
```bash
# Streaming Q&A API
```bash
curl -X POST http://localhost:8080/api/v1/ask/stream \
-H "Content-Type: application/json" \
-d '{"question": "Total number of cases in various countries"}' \
--no-buffer
```
##### 🔗 MCP Service
```bash
dat server mcp --help
```

**Start Service**:
```bash
# The current working directory is the DAT project directory
dat server mcp
# Specify the DAT Project Directory
dat server mcp -p ./my-project
# Custom Port
```bash
dat server mcp --port=9091
```

#### 🌱 `dat seed` - Load Seed Data
```bash
dat seed --help
```

**Usage Example**:
```bash
# The current working directory is the DAT project directory and loads the seed CSV file
dat seed
# Specify the DAT project directory and load the seed CSV file
dat seed -p ./my-project
```

## 🏗️ Development Guide
### 📦 Module Architecture
DAT adopts a modular design, with each module having clear responsibilities:
```
dat-parent/
├── ❤️ dat-core/ # Core interfaces and factory management
├── 🔌 dat-adapters/ # Database adapters
│ ├── dat-adapter-duckdb/ # 【Local built-in database】
│ ├── dat-adapter-mysql/
│ ├── dat-adapter-oracle/
│ └── dat-adapter-postgresql/
├── 🧠 dat-llms/ # LLM integration modules
│ ├── dat-llm-anthropic/
│ ├── dat-llm-gemini/
│ ├── dat-llm-ollama/
│ ├── dat-llm-openai/
│ ├── dat-llm-xinference/
│ └── dat-llm-azure-openai/
├── 📍 dat-embedders/ # Embedding model integration
│ ├── dat-embedder-bge-small-zh/ # 【Local built-in Embedding model】
│ ├── dat-embedder-bge-small-zh-q/ # 【Local built-in Embedding model】
│ ├── dat-embedder-bge-small-zh-v15/ # 【Local built-in Embedding model】
│ ├── dat-embedder-bge-small-zh-v15-q/ # 【Local built-in Embedding model】
│ ├── dat-embedder-jina/
│ ├── dat-embedder-ollama/
│ ├── dat-embedder-openai/
│ ├── dat-embedder-xinference/
│ └── dat-embedder-azure-openai/
├── ⚖️ dat-rerankers/ # Reranking model integration
│ ├── dat-reranker-onnx-builtin/
│ ├── dat-reranker-ms-marco-minilm-l6-v2/ # 【Local built-in Reranking model】
│ ├── dat-reranker-ms-marco-minilm-l6-v2-q/ # 【Local built-in Reranking model】
│ ├── dat-reranker-ms-marco-tinybert-l2-v2/ # 【Local built-in Reranking model】
│ ├── dat-reranker-ms-marco-tinybert-l2-v2-q/ # 【Local built-in Reranking model】
│ ├── dat-reranker-onnx-local/ # 【Locally invoked Reranking model】
│ ├── dat-reranker-jina/
│ └── dat-reranker-xinference/
├── 💾 dat-storers/ # Vector storage backends
│ ├── dat-storer-duckdb/ # 【Local built-in vector storage】
│ ├── dat-storer-pgvector/
│ ├── dat-storer-weaviate/
│ ├── dat-storer-qdrant/
│ └── dat-storer-milvus/
├── 🤖 dat-agents/ # Intelligent agent implementations
│ └── dat-agent-agentic/
├── 🌐 dat-servers/ # Server components
│ ├── dat-server-mcp/
│ └── dat-server-openapi/
├── 📦 dat-sdk/ # Software Development Kit
└── 🖥️ dat-cli/ # Command-line tools
```
### 🔧 Local Development Environment
#### Environment Preparation
```bash
```
# Clone the Project
git clone https://github.com/junjiem/dat.git
cd dat
# Install Dependencies and Compile
```
mvn clean install -DskipTests
```
### 🚀 Secondary Development Guide
DAT provides the `dat-sdk` development toolkit, which facilitates developers to integrate DAT's intelligent question-and-answer capabilities into their Java applications. You can develop custom Web UIs, API services, or integrate into existing systems based on the SDK.
#### Maven Dependency Configuration
Add the following dependency to your project's `pom.xml`:
```xml
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-sdk</artifactId>
<version>0.7.1</version>
</dependency>
```
#### Quick Start Example
```java
import ai.dat.boot.ProjectRunner;
import ai.dat.core.agent.data.StreamAction;
import ai.dat.core.agent.data.StreamEvent;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.Map;
public class DatProjectRunnerExample {
private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
public static void main(String[] args) {
// Initialize the project runner
Path projectPath = Paths.get("/path/to/your/dat-project").toAbsolutePath();
String agentName = "default";
Map<String, Object> variables = Collections.emptyMap();
ProjectRunner runner = new ProjectRunner(projectPath, agentName, variables);
// Ask a question
StreamAction action = runner.ask("Total number of cases in each country");
// Handle various stream events
for (StreamEvent event : action) {
System.out.println("-------------------" + event.name() + "-------------------");
event.getIncrementalContent().ifPresent(content -> System.out.println(content));
event.getSemanticSql().ifPresent(content -> System.out.println(content));
event.getQuerySql().ifPresent(content -> System.out.println(content));
event.getQueryData().ifPresent(data -> {
try {
System.out.println(JSON_MAPPER.writeValueAsString(data));
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
});
event.getToolExecutionRequest().ifPresent(request -> System.out.println("id: " + request.id()
+ "\nname: " + request.name() + "\narguments: " + request.arguments()));
event.getToolExecutionResult().ifPresent(result -> System.out.println("result: " + result));
event.getHitlAiRequest().ifPresent(request -> System.out.println(request));
event.getHitlToolApproval().ifPresent(request -> System.out.println(request));
event.getMessages().forEach((k, v) -> {
try {
System.out.println(k + ": " + JSON_MAPPER.writeValueAsString(v));
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
});
}
}
}
```
It is recommended to use high-level classes such as `ai.dat.boot.ProjectRunner`, `ai.dat.boot.ProjectBuilder`, `ai.dat.boot.ProjectSeeder`, etc.
For more SDK usage examples and best practices, please refer to:
- [Example 1: OpenAPI Server](./dat-servers/dat-server-openapi)
- [Example 2: MCP Server](./dat-servers/dat-server-mcp)
Add other implemented modules as needed, such as:
```xml
<!-- DAT Embedding Store -->
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-storer-duckdb</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-storer-weaviate</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-storer-pgvector</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-storer-qdrant</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-storer-milvus</artifactId>
</dependency>
```
<!-- DAT Embedding Model -->
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-bge-small-zh</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-bge-small-zh-q</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-bge-small-zh-v15</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-bge-small-zh-v15-q</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-onnx-local</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-openai</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-ollama</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-jina</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-xinference</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-embedder-azure-openai</artifactId>
</dependency>
<!-- DAT Reranking Model -->
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-reranker-ms-marco-minilm-l6-v2</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-reranker-ms-marco-minilm-l6-v2-q</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-reranker-ms-marco-tinybert-l2-v2</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-reranker-ms-marco-tinybert-l2-v2-q</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-reranker-onnx-local</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-reranker-jina</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-reranker-xinference</artifactId>
</dependency>
<!-- DAT Chat Model -->
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-llm-openai</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-llm-anthropic</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-llm-ollama</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-llm-gemini</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-llm-xinference</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-llm-azure-openai</artifactId>
</dependency>
<!-- DAT Database Adapter -->
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-adapter-duckdb</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-adapter-mysql</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-adapter-oracle</artifactId>
</dependency>
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-adapter-postgresql</artifactId>
</dependency>
<!-- DAT Askdata Agent -->
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-agent-agentic</artifactId>
</dependency>
```
You can also develop corresponding interface class implementations on top of `dat-core`.
```xml
<dependency>
<groupId>cn.datask</groupId>
<artifactId>dat-core</artifactId>
</dependency>
```
## 🤝 Contribution Guidelines
We welcome all forms of contributions! Whether it's bug reports, feature suggestions, documentation improvements, or code submissions.
### 🐛 Report Issues
Before submitting an issue, please ensure that:
1. **Search for existing issues** - Avoid duplicate submissions
2. **Provide detailed information** - Include error logs, configuration files, and reproduction steps
3. **Use the issue template** - Help us quickly understand the problem
### 💡 Submit Feature Suggestions
We encourage innovative ideas! When submitting a feature suggestion, please include:
- **Use Case Description** - What real problem does it solve
- **Design Concept** - Preliminary implementation ideas
- **Impact Assessment** - Evaluation of the impact on existing features
### 🔧 Code Contribution
#### Development Process
1. **Fork the project** and create a feature branch
```bash
git checkout -b feature/awesome-new-feature
```
2. **Follow coding standards**:
- Use Chinese comments to explain business logic
- Adhere to Alibaba Java Coding Guidelines
- Maintain test coverage > 80%
3. **Commit code**:
```bash
git commit -m "feat: Add ClickHouse database adapter
- Implement ClickHouse connection and query functionality
- Add SQL dialect conversion support
- Improve unit test coverage
- Update related documentation
Closes #123"
```
4. **Create a Pull Request**:
- Provide a detailed description of the changes
- Link related issues
- Ensure CI checks pass
#### Code Review Standards
- ☑️ **Functional Completeness** - Implementation meets the requirements specification
- ☑️ **Code Quality** - Follows design patterns and best practices
- ☑️ **Test Coverage** - Includes unit tests and integration tests
- ☑️ **Documentation Update** - Synchronize updates to relevant documentation
- ☑️ **Backward Compatibility** - Does not break existing APIs
### 🎯 Development Task List
- ✅ Configuration of data models (tables or views);
- ✅ Configuration of semantic models (bound to data models), including: entities, dimensions, measures, etc.;
- ✅ Generation of semantic SQL based on LLM, converting semantic SQL to real SQL, and finally executing to return data;
- ✅ Intelligent question answering supports HITL (Human-in-the-Loop) interaction;
- ✅ Supports providing OpenAPI services for intelligent question answering projects;
- ✅ Supports providing MCP services for intelligent question answering projects;
- ✅ Supports the seed command to initialize and load CSV files into the database;
- ✅ Vectorization and retrieval of SQL Q&A pairs, synonyms, business knowledge, etc.;
- ✅ Supports Jinja template language in data models, allowing control of data permissions by passing variables through the command line;
- ⬜ Provides plugins for assisting DAT project development in IDEs such as VSCode, IDEA, Eclipse, etc.;
- ⬜ Assists in generating semantic models based on LLM for data exploration;
- ⬜ Unit testing for data models, semantic models, and intelligent question answering;
- ⬜ Configuration of metrics (further metrics can be added after building the semantic model);
## 🌟 Community and Support
### 💬 Communication Channels
- **GitHub Discussions** - Technical discussions and Q&A
- **WeChat Group** - Add WeChat `JEROME1234` with the note `DAT` to join the community group
### 🏆 Acknowledgments to Contributors
Thanks to all the developers who contributed to the DAT project!
<a href="https://github.com/junjiem/dat/graphs/contributors">
<img src="https://contrib.rocks/image?repo=junjiem/dat" />
</a>
---
## 📊 Project Statistics
### ⭐ Star History
[](https://star-history.com/#junjiem/dat&Date)
---
## 📄 License
This project is licensed under the Apache 2.0 License. For more details, please refer to the [LICENSE](https://github.com/junjiem/dat/blob/main/LICENSE) file.
---
<div align="center">
**🎯 Making data queries simple and natural**
**⭐ If this project has been helpful to you, please give us a Star!**
[🚀 Quick Start](#-快速开始) • [📖 Documentation](https://github.com/junjiem/dat) • [💬 Join the Community](#-社区与支持) • [🤝 Contributing](#-贡献指南)
---
*Built with ❤️ by the DAT Community*
</div>
Connection Info
You Might Also Like
Git
Model Context Protocol Servers
TrendRadar
🎯 Say goodbye to information overload. AI helps you understand news hotspots...
repomix
Repomix packages your codebase into AI-friendly formats for seamless integration.
eechat
🚀 Powerful Local AI Chat Application - Mcp, Secure, Efficient, Personalized...
mcsmcp
Lab for creating an MCP Server and using it in Microsoft Copilot Studio.
mcp-server-azure-devops
An MCP server for Azure DevOps