Updated 超音数设计思路 (markdown)

Jun Zhang
2023-09-07 17:48:03 +08:00
parent 4a2f8c19c2
commit df036405b6

@@ -2,16 +2,16 @@
在项目初期我们也曾尝试过直接让ChatGPT来生成SQL但经过多轮prompt优化调整在稳定性和准确度方面始终无法达到生产可用的要求总的来说有如下问题
**Schema相关问题:**
**Token限制问题:**
- 为了让LLM理解schema需要将所有字段的名称和描述作为context输入如果schema字段数量多可能会超过token限制。
- LLM输出稳定性无法保证存在一些查询case会推测出错误的字段甚至有可能幻觉出不存在的字段
- 字段取值量太大一般不会根schema信息一起输入使得LLM无法识别专有领域的术语。
- 同样因为token的限制基数过大的字段取值一般不会全部放入context使得LLM无法识别到专有领域的一些术语
**语法相关问题:**
**稳定性问题:**
- 如果涉及多表关联、运算公式、时间转换等情况SQL语法较为复杂LLM无法保证准确度
- 如果底层OLAP引擎有特殊方言LLM可能无法正确生成
- 即便将schema全部输入且告知LLM不要随意猜测仍然有一定几率会推测出错误的字段甚至可能幻觉出不存在的字段
- 如果涉及多表关联、运算公式、时间转换等情况SQL语法较为复杂LLM出错概率会变高
- 如果底层OLAP引擎有特殊方言LLM也无法保证准确度。
**效率相关问题:**
@@ -22,6 +22,9 @@
因此在超音数项目中我们围绕LLM引擎引入与之配套的组件希望通过系统化的工程来达到生产可用要求。下面的篇幅将展开介绍这些组件的设计思考。
<img width="722" alt="supersonic_components" src="https://github.com/tencentmusic/supersonic/assets/3949293/23b396c2-d832-430e-936d-0a23b4085aea" height="60%" width="60%">
### 引入Semantic Layer
当AI领域的LLM满级输出吸走大部份聚光灯的时候BI领域也有一位召唤师在猥琐发育——它就是Semantic Layer另一种常见叫法是Metric Store。所以它的核心价值是什么我们可以用两个拟人化的角色来类比
@@ -40,7 +43,9 @@
### 引入Schema Mapper
上文有提到LLM的token限制问题主要是因为想要暴力求解将全部字段的名称和取值一股脑都丢给LLM。实际上可以在前置环节增加一个筛选机制只保留跟用户输入相关的字段可以极大地减少token使用即便不超过限制也能节省推理成本。这就引出了Schema Mapper。
当前,我们采用的是
### 引入Semantic Corrector