Enhance impact analysis and configuration for vector persistence and API integration. Update main.spec to clarify data handling for ChromaDB, ensuring vector directories are excluded from packaging. Modify Text2SQLOrchestrator to unify question normalization for consistent SQL generation across languages. Introduce SchemaIndexer improvements for persistent vector storage and optimize embedding retrieval processes. Update documentation and comments for clarity on configuration changes and behavior adjustments.

This commit is contained in:
陈辅元
2026-04-15 11:25:19 +08:00
parent 2d0b1ab36f
commit a55fd18915
15 changed files with 318 additions and 50 deletions
Binary file not shown.
+18
View File
@@ -67,6 +67,7 @@ SQL_GENERATOR_SYSTEM = """你是一个精通SQL的数据库专家,有10年以
- **方言(T-SQL)**:字符串用 `+` 拼接;「今日」用 `CAST(GETDATE() AS DATE)`;标识符冲突用方括号 `[]`;非关键字尽量不加引号。不要用 MySQL 反引号或 `CURDATE()`。
4. **中英混排时的翻译边界**:仅允许对问题里**已经出现**的中文业务用语,在语义上等价映射到 Schema 中的英文表名、列名;**禁止**借「翻译」编造 Schema 中不存在的表或字段。
5. **严禁照抄黄金范例里的表名与列名**:范例中的 `TSBBrokerContract`、`MCBroker`、`BrokerID`、`SettleStatus` 等**仅表示版式与业务意图**。**每一条** `FROM`/`JOIN` 引用的表、以及 `SELECT`/`WHERE`/`ON` 中的列,必须在本轮 **Schema信息** 所列字段中**真实存在**;若当前片段只有报表视图且无 `BrokerID`,则**禁止**写 `BrokerID`、**禁止** `JOIN MCBroker`,应改用片段内已有的键与度量(如 `AccountID`、`CashSettleDate`、`SettleAmount` 等)重写,仍保持「有用 SQL」版式。
6. **中英文同义一致**:用户问题可能已由上游归一为中文。只要业务分析意图相同(无论原先用中文或英文表述),你生成的 SQL 在**主表/关联路径、度量与聚合、WHERE 与 HAVING 条件**上须保持一致,**禁止**因等价措辞或语种差异而换用另一套查询逻辑。
**原则**:
1. 只输出SQL语句,不要解释、注释或其他内容(除非SQL内注释)
@@ -369,6 +370,23 @@ TRANSLATE_NL_TO_ZH_USER = """原句:
仅输出一句中文:"""
# ========== NL 归一中文(中英文 → 同一表述,检索/SQL 一致)==========
CANONICALIZE_NL_FOR_TEXT2SQL_SYSTEM = """你是证券/期货类数据仓库 Text2SQL 的「问句归一」模块。
读入用户的自然语言(可为**中文**、**英文**或中英混写),输出**唯一一句**中文自然语言问题,供向量检索、选表与 SQL 生成使用。
必须遵守:
1. **语义等价**:不得增加、删除或弱化任何筛选条件、时间范围、数值阈值、分组/排序/去重意图;不得臆造用户未提及的维度。
2. **英文→中文**:若输入主要为英文或拉丁字母表述,译为业内常用中文(如 market value→市值、single holding→单一持仓),与中文 Schema 注释、向量索引用语对齐。
3. **中文→中文**:若输入已含中文,在不改变语义的前提下**整理为与第 2 条英译风格一致的简洁中文**,使同一业务需求的英文版与中文版经你输出后**尽可能逐字相同或高度接近**,从而保证后续 SQL 一致。
4. 保留阿拉伯数字、日期、币种/市场代码、证券代码;原句中的英文表名、字段名保持不译。
5. **只输出一句中文问句**,不要引号、前后缀或解释。"""
CANONICALIZE_NL_FOR_TEXT2SQL_USER = """用户原句:
{question}
仅输出归一后的一句中文:"""
# ========== 对话意图分类(LLM,与规则分类配合)==========
DIALOG_INTENT_CLASSIFIER_SYSTEM = """你是证券/期货类 Text2SQL 产品的「意图分类」模块。