Enhance dialog context handling for Text2SQL queries by integrating session history. Introduce new methods for summarizing previous assistant messages and determining if the last interaction was a data query. Update environment configuration for embedding options and improve error handling in SQL generation. Add user-facing delivery messages for successful SQL execution. This update supports more coherent follow-up questions and improves user experience in conversational interactions.
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
## 🚀 核心特性
|
||||
|
||||
- **🤖 多Agent协作流水线**:Schema Linker → SQL Generator → Validator 三阶段协作
|
||||
- **🎯 高精度表检索**:向量检索(Qwen3-Embedding)+ LLM精筛,从 250+ 张表中精准定位相关表
|
||||
- **🎯 高精度表检索**:向量检索(OpenAI 兼容 / ModelScope 等远程 Embedding,或可选本地模型)+ LLM精筛,从 250+ 张表中精准定位相关表
|
||||
- **💡 经验数据集 Few-Shot**:基于 50 条高质量样例的语义检索,动态注入相似示例提升准确率
|
||||
- **🔒 双重验证机制**:程序语法验证 + LLM语义验证,确保 SQL 正确性
|
||||
- **🏦 金融领域深度优化**:针对证券经纪业务(账户、持仓、现金、结算)定制 Prompt 和推断规则
|
||||
@@ -24,7 +24,7 @@
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 阶段1: Schema Linker Agent │
|
||||
│ ┌───────────────────────────────────────────────────────────┐ │
|
||||
│ │ 1.1 向量检索粗筛(ChromaDB + Qwen3-Embedding) │ │
|
||||
│ │ 1.1 向量检索粗筛(ChromaDB + Embedding 向量) │ │
|
||||
│ │ - 检索 Top 20 候选表(相似度阈值 0.1) │ │
|
||||
│ │ └─ 支持对手方/经纪商问题特殊处理(强制纳入 Broker 表) │ │
|
||||
│ │ │ │
|
||||
@@ -85,7 +85,7 @@
|
||||
|------|---------|-----------|
|
||||
| Agent 框架 | **CAMEL AI** | >= 0.2.0,角色扮演、消息通信 |
|
||||
| LLM 模型 | **DeepSeek-chat** | 国产大模型,代码生成能力强 |
|
||||
| Embedding | **Qwen3-Embedding-0.6B** | 阿里云 6 亿参数,本地免费部署 |
|
||||
| Embedding | **远程 API(默认)** | OpenAI 兼容 / ModelScope 等;可选本地 HF 目录 |
|
||||
| 向量数据库 | **ChromaDB** | 本地轻量,持久化 Schema 索引 |
|
||||
| SQL 解析 | **sqlglot** | >= 20.0.0,多方言 AST 转换与验证 |
|
||||
| 配置管理 | **Pydantic Settings** | 类型安全的环境变量管理 |
|
||||
@@ -115,7 +115,7 @@ text2sql_agent_camel/
|
||||
│ ├── llm/
|
||||
│ │ └── deepseek_client.py # DeepSeek API 客户端(chat / validate_sql / select_tables)
|
||||
│ └── utils/
|
||||
│ ├── embedding.py # Qwen3-Embedding 封装(本地 / 远程 API)
|
||||
│ ├── embedding.py # Embedding(远程 OpenAI 兼容 / 可选本地 HF)
|
||||
│ ├── sql_parser.py # sqlglot 工具(语法验证、方言转换、规范化)
|
||||
│ ├── validators.py # 验证逻辑(危险操作检测、完整验证流水线)
|
||||
│ └── fewshot_selector.py # Few-Shot 示例选择器(语义/关键词检索)
|
||||
@@ -186,15 +186,19 @@ cp .env .env.local # 或直接编辑 .env
|
||||
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
DEEPSEEK_BASE_URL=https://api.deepseek.com
|
||||
|
||||
# 可选:使用本地 Embedding(无需网络,但需下载模型)
|
||||
USE_LOCAL_EMBEDDING=true
|
||||
EMBEDDING_MODEL_PATH=./data/models/Qwen3-Embedding-0.6B
|
||||
|
||||
# 或使用远程 Embedding API(无需本地模型)
|
||||
# 推荐:远程 Embedding(OpenAI 兼容网关或 ModelScope 等,无需本地模型目录)
|
||||
USE_LOCAL_EMBEDDING=false
|
||||
MODELSCOPE_API_KEY=ms-xxxxxxxx
|
||||
MODELSCOPE_BASE_URL=https://api-inference.modelscope.cn/v1
|
||||
MODELSCOPE_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-8B
|
||||
OPENAI_BASE_URL=https://api.openai.com/v1
|
||||
OPENAI_API_KEY=sk-xxxxxxxx
|
||||
OPENAI_EMBEDDING_MODEL=text-embedding-3-small
|
||||
|
||||
# 或使用 ModelScope
|
||||
# MODELSCOPE_API_KEY=ms-xxxxxxxx
|
||||
# MODELSCOPE_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-8B
|
||||
|
||||
# 可选:本地 HuggingFace 模型目录(需 USE_LOCAL_EMBEDDING=true + EMBEDDING_MODEL_PATH)
|
||||
# USE_LOCAL_EMBEDDING=true
|
||||
# EMBEDDING_MODEL_PATH=/path/to/local/embedding-model
|
||||
```
|
||||
|
||||
### 3. 准备 Schema 文件
|
||||
@@ -350,15 +354,18 @@ MAX_RETRY=1 # 重试次数(1=仅首次,2=允许一次修正)
|
||||
FEWSHOT_ENABLED=true # 是否启用 Few-Shot
|
||||
FEWSHOT_TOP_K=3 # 每次注入的示例数量
|
||||
FEWSHOT_MIN_RATING=7 # 示例最低评分(1-10)
|
||||
# 推荐:Few-shot 走 Chroma(运行时可不配 FEWSHOT_DATA_PATH;灌库见 scripts/build_fewshot_chroma_index.py)
|
||||
FEWSHOT_USE_CHROMA=true
|
||||
FEWSHOT_CHROMA_PATH=./data/embeddings/chroma_fewshot
|
||||
# FEWSHOT_DATA_PATH=./data/experiences/all_samples.jsonl # 仅构建索引时需要
|
||||
|
||||
# ========== Embedding ==========
|
||||
USE_LOCAL_EMBEDDING=false # true=本地模型,false=远程API
|
||||
# 本地模型路径
|
||||
EMBEDDING_MODEL_PATH=./data/models/Qwen3-Embedding-0.6B
|
||||
# 远程 API(ModelScope)
|
||||
MODELSCOPE_API_KEY=ms-xxxx
|
||||
MODELSCOPE_BASE_URL=https://api-inference.modelscope.cn/v1
|
||||
MODELSCOPE_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-8B
|
||||
USE_LOCAL_EMBEDDING=false # false=远程(默认);true 时需配置 EMBEDDING_MODEL_PATH
|
||||
# OPENAI_* 或 MODELSCOPE_* / DASHSCOPE_*(与代码内优先级一致)
|
||||
OPENAI_BASE_URL=https://api.openai.com/v1
|
||||
OPENAI_API_KEY=sk-xxxx
|
||||
OPENAI_EMBEDDING_MODEL=text-embedding-3-small
|
||||
# EMBEDDING_MODEL_PATH= # 仅 USE_LOCAL_EMBEDDING=true 时填写本地目录
|
||||
|
||||
# ========== Schema ==========
|
||||
SCHEMA_DIR=./data/schemas
|
||||
@@ -710,7 +717,7 @@ LLM 更擅长模仿示例而非理解抽象规则。提供 5-7 个高质量示
|
||||
- 🎉 初始发布
|
||||
- 三 Agent 流水线(Schema Linker / SQL Generator / Validator)
|
||||
- 向量检索 + LLM 精筛表选择
|
||||
- ChromaDB + Qwen3-Embedding 本地索引
|
||||
- ChromaDB + Embedding 向量索引(默认远程 API 编码)
|
||||
- T-SQL / MySQL / PostgreSQL 多方言支持
|
||||
- 双重验证机制(程序 + LLM)
|
||||
- 自修正重试(最多 2 次)
|
||||
|
||||
Reference in New Issue
Block a user