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

</div>
---
> **[🇬🇧 English Version](./README-EN.md)**
---
## 🎯 Project Vision
> We are entering a new era of generative AI, where **language is the interface and data is the fuel**.
DAT is dedicated to solving the last mile problem of enterprise data querying—enabling business personnel to directly interact with databases using natural language, without the need to write complex SQL queries. Through pre-modeled semantic layers, DAT ensures that AI not only expresses itself confidently but also accurately.
The core driving force behind DAT is not solely derived from another intellectual explosion of large language models themselves, but from the Askdata Agent workflow we designed for it.
Everything we do is essentially exchanging `“higher precision and more complete knowledge”` (**the main focus of current development**), `“more computational steps”` and `“longer thinking time”` for something crucial in the real business world—the `“high quality”` and `“certainty”` of the results.
## ✨ Core Features
### 🏗️ Enterprise-Grade Architecture Design
- **🔌 Pluggable SPI Architecture** - Supports flexible expansion of various databases, LLMs, and embedding models
- **🏭 Factory Pattern Implementation** - Standardized component creation and management mechanisms
- **📦 Modular Design** - Clear separation of responsibilities for easy maintenance and expansion
### 🗃️ Multi-Database Support
- **MySQL** - Full support, including connection pooling and dialect conversion
- **PostgreSQL** - Enterprise-grade database support
- **Oracle** - Traditional enterprise database compatibility
- **More Databases** - Easily extendable through the SPI mechanism
### 🤖 Intelligent Semantic SQL Generation
- **Natural Language Understanding** - LLM-based semantic parsing
- **SQL Dialect Conversion** - Automatically adapts to different database syntax
- **Semantic Model Binding** - Ensures query accuracy through predefined models
### 📊 Rich Semantic Modeling
- **Entities** - Primary key and foreign key relationship definitions
- **Dimensions** - Time, category, and enumeration dimension support
- **Measures** - Aggregate function and calculated field definitions
- **YAML Configuration** - Intuitive model definition method
### 🔍 Vectorized Retrieval Enhancement
- **Content Storage** - Vectorization of SQL question-answer pairs, synonyms, and business knowledge
- **Semantic Retrieval** - Intelligent matching based on embedding models
- **Multi-Storage Backends** - Storage options such as DuckDB, Weaviate, and PGVector
---
## 🏗️ 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 can be used to develop DAT intelligent data querying projects locally through IDEs (vscode, idea, or eclipse), `transforming prompt (context) engineering into data engineering`.
As such, the development mode of DAT Project naturally aligns with AI Coding tools (such as Cursor, Claude Code, etc.), helping to achieve a more intelligent and automated intelligent data querying development process.
- 2. DAT is not a platform, but a `framework`; secondary developers can develop their own Web UI based on `dat-sdk`, which can be a web ide, drag-and-drop workflow, lists, and other interaction methods; or provide it externally as an `OpenAPI` or `MCP` service.
- 3. This model `allows data engineers or data analysts to develop intelligent data querying applications in the same way that software engineers develop applications`.
---
## 🚀 Quick Start
### 📋 Environment Requirements
- **Java 17+** - Recommended to use OpenJDK
- **Database** - Choose one of 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/hexinfo/dat/releases/latest/download/dat-cli-0.7.2-full.tar.gz
# Extract and configure environment variables
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 Systems
1. Visit the [Releases page](https://github.com/hexinfo/dat/releases/latest)
2. Download the `dat-cli-x.x.x.tar.gz` file
3. Extract using WinRAR, 7-Zip, or Windows built-in 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 DAT CLI bin directory path
#### 2️⃣ Initialize Project
```bash
# Create a new DAT project
dat init
# Enter project information as prompted
# Project name: my-dat-project
# Description: My first intelligent data querying 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 select `duckdb` for the database when initializing the project. By default, a local embedded data store with the prefix 'duckdb' will be created 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 data querying 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 `dat_project.yaml.template` under the project.
> 💡 <strong style="color: orange;">Tip:</strong>
>
> If you don't have existing data to use, you can execute the `seed` command to load the example seed data from the initialization project into the database.
>
> ```
> # Load seed data
> dat seed -p ./my-dat-project
> ```
>
> Then skip step 4️⃣ and use the example semantic model from the initialization project to proceed to step 5️⃣ "Start Intelligent Data 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: Sales date
type: time
type_params:
time_granularity: day
- name: region
description: Sales region
type: categorical
enum_values:
- value: "North"
label: "North Region"
- value: "South"
label: "South Region"
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 real data.
> For more semantic model configuration instructions, please refer to the `MODEL_GUIDE.md` manual under the project.
#### 5️⃣ Start Intelligent Data Querying
```bash
# Start interactive data querying
dat run -p ./my-dat-project -a default
# Or start the API service
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 multiple usage methods (CLI is mainly used for development and debugging) to meet the needs of different scenarios:
#### 1️⃣ Use through Dify Plugin (WEB-based Q&A)
If you need to perform intelligent Q&A through a **WEB interface** without developing your own front-end, you can directly use the DAT plugin on the **Dify platform**.
🔗 **Plugin Address**: [https://marketplace.dify.ai/plugins/hexinfo/dat](https://marketplace.dify.ai/plugins/hexinfo/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` to connect with it. You can then create intelligent data querying applications in Dify's visual interface, providing a user-friendly WEB interaction experience.
#### 2️⃣ Integrate into Your Own Project (Streaming Q&A API)
If you need to integrate streaming Q&A functionality into **your own WEB project**, you can [start the DAT OpenAPI service](#-dat-server---service-deployment) for integration.
#### 3️⃣ Integrate into Agent (Supports MCP Tools)
If you are using an Agent that supports **MCP (Model Context Protocol)** (such as Claude Desktop, Cline, etc.), you can [start the DAT MCP service](#-mcp-service) to integrate intelligent data querying capabilities into these Agents.
---
## 🛠️ CLI Command Details
### 📖 Command Overview

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

**Usage Example**:
```bash
# Interactively initialize a DAT project to the current working directory
dat init
# Interactively initialize a DAT project to the specified project workspace directory
dat init -w ./my-workspace
```

#### 🤖 `dat run` - Intelligent Data Querying
```bash
dat run --help
```

**Usage Example**:
```bash
# The current working directory is the DAT project directory and starts the default agent
dat run
# The current working directory is the DAT project directory and starts a specific agent
dat run -a sales-agent
# Specify the DAT project directory and start a specific agent
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 the DAT project directory
dat server openapi -p ./my-project
# Custom port
dat server openapi --port=9090
```

**Swagger UI Interface**:

**API Call Example**:
```bash
# Streaming question answering API
curl -X POST http://localhost:8080/api/v1/ask/stream \
-H "Content-Type: application/json" \
-d '{"question": "各个国家的病例总数"}' \
--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
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 load 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 module
│ ├── 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/ # 【Local call Reranking model】
│ ├── dat-reranker-jina/
│ └── dat-reranker-xinference/
├── 💾 dat-storers/ # Vector storage backend
│ ├── dat-storer-duckdb/ # 【Local built-in vector storage】
│ ├── dat-storer-pgvector/
│ ├── dat-storer-weaviate/
│ ├── dat-storer-qdrant/
│ └── dat-storer-milvus/
├── 🤖 dat-agents/ # Intelligent agent implementation
│ └── dat-agent-agentic/
├── 🌐 dat-servers/ # Server-side components
│ ├── dat-server-mcp/
│ └── dat-server-openapi/
├── 📦 dat-sdk/ # Development toolkit
└── 🖥️ dat-cli/ # Command-line tool
```
### 🔧 Local Development Environment
#### Environment Preparation
```bash
# Clone the project
git clone https://github.com/hexinfo/dat.git
cd dat
# Install dependencies and compile
mvn clean install -DskipTests
```
### 🚀 Secondary Development Guide
DAT provides the `dat-sdk` development toolkit to facilitate developers in integrating DAT's intelligent data querying capabilities into their own 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 dependencies to your project's `pom.xml`:
```xml
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-sdk</artifactId>
<version>0.7.2</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("每个国家病历总数");
// Process 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 advanced classes such as `ai.dat.boot.ProjectRunner`, `ai.dat.boot.ProjectBuilder`, and `ai.dat.boot.ProjectSeeder`.
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.hexinfo</groupId>
<artifactId>dat-storer-duckdb</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-storer-weaviate</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-storer-pgvector</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-storer-qdrant</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-storer-milvus</artifactId>
</dependency>
<!-- DAT Embedding Model -->
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-bge-small-zh</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-bge-small-zh-q</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-bge-small-zh-v15</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-bge-small-zh-v15-q</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-onnx-local</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-openai</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-ollama</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-jina</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-xinference</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-embedder-azure-openai</artifactId>
</dependency>
<!-- DAT Reranking Model -->
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-reranker-ms-marco-minilm-l6-v2</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-reranker-ms-marco-minilm-l6-v2-q</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-reranker-ms-marco-tinybert-l2-v2</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-reranker-ms-marco-tinybert-l2-v2-q</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-reranker-onnx-local</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-reranker-jina</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-reranker-xinference</artifactId>
</dependency>
<!-- DAT Chat Model -->
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-llm-openai</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-llm-anthropic</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-llm-ollama</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-llm-gemini</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-llm-xinference</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-llm-azure-openai</artifactId>
</dependency>
<!-- DAT Database Adapter -->
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-adapter-duckdb</artifactId> <!-- In-process -->
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-adapter-mysql</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-adapter-oracle</artifactId>
</dependency>
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-adapter-postgresql</artifactId>
</dependency>
<!-- DAT Askdata Agent -->
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-agent-agentic</artifactId>
</dependency>
```
You can also develop the corresponding interface class implementation on top of `dat-core`.
```xml
<dependency>
<groupId>cn.hexinfo</groupId>
<artifactId>dat-core</artifactId>
</dependency>
```
---
## 🤝 Contribution Guide
We welcome contributions of all forms! Whether it's bug reports, feature suggestions, documentation improvements, or code submissions.
### 🐛 Reporting Issues
Before submitting an issue, please ensure:
1. **Search existing issues** - Avoid duplicate submissions
2. **Provide detailed information** - Include error logs, configuration files, reproduction steps
3. **Use the issue template** - Help us quickly understand the issue
### 💡 Submitting Feature Suggestions
We encourage innovative ideas! Please include the following when submitting feature suggestions:
- **Use case description** - What practical problem does it solve?
- **Design ideas** - Preliminary implementation ideas
- **Scope of impact** - Impact assessment 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 the code specifications**:
- Use Chinese comments to explain business logic
- Follow the Alibaba Java Coding Guidelines
- Maintain test coverage > 80%
3. **Submit code**:
```bash
git commit -m "feat: Add ClickHouse database adapter
- Implement ClickHouse connection and query functions
- Add SQL dialect conversion support
- Improve unit test coverage
- Update related documentation
Closes #123"
```
4. **Create a Pull Request**:
- Describe the changes in detail
- Associate with related issues
- Ensure CI checks pass
#### Code Review Standards
- ☑️ **Functional integrity** - Implementation meets requirements
- ☑️ **Code quality** - Follows design patterns and best practices
- ☑️ **Test coverage** - Includes unit tests and integration tests
- ☑️ **Documentation update** - Synchronously update related documentation
- ☑️ **Backward compatibility** - Does not break existing APIs
### 🎯 Development To-Do List
- ✅ Configuration of data models (tables or views);
- ✅ Configuration of semantic models (bound to data models), including: entities, dimensions, metrics, etc.;
- ✅ Semantic SQL generation based on LLM, converting semantic SQL to real SQL, and finally executing and returning data;
- ✅ Intelligent question answering supports HITL (Human-in-the-Loop) interaction;
- ✅ Support for providing OpenAPI services for intelligent question answering projects;
- ✅ Support for providing MCP services for intelligent question answering projects;
- ✅ Support for using the seed command to initialize and load CSV files into the database;
- ✅ Vectorize and retrieve SQL question-answer pairs, synonyms, business knowledge, etc.;
- ✅ Support for Jinja template language in data models, which can achieve data permission control by passing variables through the command line;
- ⬜ Provide DAT project auxiliary development plugins for IDEs such as VSCode, IDEA, and Eclipse;
- ⬜ Data exploration based on LLM to assist in generating semantic models;
- ⬜ Unit tests for data models, semantic models, and intelligent question answering;
- ⬜ Configuration of metrics (metrics can be further added after building the semantic model);
---
## 🌟 Community and Support
### 💬 Communication Channels
- **GitHub Discussions** - Technical discussions and Q&A
- **WeChat Group** - Add WeChat `slime_liu` with the note `DAT` to join the community group
### 🏆 Contributor Acknowledgements
Thank you to all the developers who have contributed to the DAT project!
<a href="https://github.com/hexinfo/dat/graphs/contributors">
<img src="https://contrib.rocks/image?repo=hexinfo/dat" />
</a>
---
## 📊 Project Statistics
### ⭐ Star History
[](https://star-history.com/#hexinfo/dat&Date)
---
## 📄 License
This project is licensed under the Apache 2.0 License. See [LICENSE](https://github.com/hexinfo/dat/blob/main/LICENSE) for details.
---
<div align="center">
**🎯 Make data querying simple and natural**
**⭐ If this project is helpful to you, please give us a Star!**
[🚀 Quick Start](#-quick-start-example) • [📖 Documentation](https://github.com/hexinfo/dat) • [💬 Join the Community](#-community-and-support) • [🤝 Contribute](#-contribution-guide)
---
*Built with ❤️ by the DAT Community*
</div>
Connection Info
You Might Also Like
awesome-mcp-servers
A collection of MCP servers.
git
A Model Context Protocol server for Git automation and interaction.
Appwrite
Build like a team of hundreds
TrendRadar
TrendRadar: Your hotspot assistant for real news in just 30 seconds.
chatbox
User-friendly Desktop Client App for AI Models/LLMs (GPT, Claude, Gemini, Ollama...)
oh-my-opencode
Background agents · Curated agents like oracle, librarians, frontend...