mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 03:58:14 +00:00
Allow user to config examples and number of examples used by text2sql in middle of run (#85)
This commit is contained in:
BIN
docs/images/text2sql_config.png
Normal file
BIN
docs/images/text2sql_config.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 123 KiB |
26
docs/userguides/llm_config_cn.md
Normal file
26
docs/userguides/llm_config_cn.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# LLM模型配置
|
||||
|
||||
### **简介**
|
||||
|
||||
语言模型的使用是超音数的重要一环。能显著增强对用户的问题的理解能力,是通过对话形式与用户交互的基石之一。在本项目中对语言模型能力的应用主要在 LLM 和 Embedding 两方面;默认使用的模型中,LLM选用闭源模型 gpt-3.5-turbo-16k,Embedding模型选用开源模型 GanymedeNil/text2vec-large-chinese。用户可以根据自己实际需求进行配置更改。
|
||||
|
||||
|
||||
### **配置方式**
|
||||
<div align="left" >
|
||||
<img src=../images/nlp_config.png width="70%"/>
|
||||
<p>图1-1 LLM配置文件</p>
|
||||
</div>
|
||||
|
||||
1. LLM模型相关的配置,在 supersonic/chat/core/src/main/python/llm/run_config.py 进行配置。
|
||||
2. LLM采用OpenAI的闭源模型 gpt-3.5-turbo-16k,在使用时需要提供OpenAI的API-Key才能调用LLM模型,通过 OPENAI_API_KEY 变量进行配置。
|
||||
3. Embedding模型采用开源模型 GanymedeNil/text2vec-large-chinese,通过 HF_TEXT2VEC_MODEL_NAME 变量进行位置,为了使用方便采用托管在HuggingFace的源,初次启动时自动下载模型文件。
|
||||
|
||||
### **FAQ**
|
||||
1. 可以用开源的LLM模型替代OpenAI的GPT模型吗?
|
||||
- 暂时不能。我们测试过大部分主流的开源LLM,在实际使用中,在本项目需要LLM提供的逻辑推理和代码生成场景上,开源模型还不能满足需求。
|
||||
- 我们会持续跟进开源LLM的最新进展,在有满足要求的开源LLM后,在项目中集成私有化部署开源LLM的能力。
|
||||
2. GPT4、GPT3.5、GPT3.5-16k 这几个模型用哪个比较好?
|
||||
- GPT3.5、GPT3.5-16k 均能基本满足要求,但会有输出结果不稳定的情况;GPT3.5的token长度限制为4k,在现有CoT策略下,容易出现超过长度限制的情况。
|
||||
- GPT4的输出更稳定,但费用成本远超GPT3.5,可以根据实际使用场景进行选择。
|
||||
3. Embedding模型用其他的可以吗?
|
||||
- 可以。可以以该项目[text2vec]([URL](https://github.com/shibing624/text2vec))的榜单作为参考,然后在HuggingFace找到对应模型的model card,修改HF_TEXT2VEC_MODEL_NAME变量的取值。
|
||||
25
docs/userguides/text2sql_cn.md
Normal file
25
docs/userguides/text2sql_cn.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# text2sql功能相关配置
|
||||
|
||||
### **简介**
|
||||
text2sql的功能实现,高度依赖对LLM的应用。通过LLM生成SQL的过程中,利用小样本(few-shots-examples)通过思维链(chain-of-thoughts)的方式对LLM in-context-learning的能力进行引导,对于生成较为稳定且符合下游语法解析规则的SQL非常重要。用户可以根据自身需要,对样本池及样本的数量进行配置,使其更加符合自身业务特点。
|
||||
|
||||
### **配置方式**
|
||||
1. 样本池的配置。
|
||||
- supersonic/chat/core/src/main/python/llm/few_shot_example/sql_exampler.py为样本池配置文件。用户可以以已有的样本作为参考,配置更贴近自身业务需求的样本,用于更好的引导LLM生成SQL。
|
||||
2. 样本数量的配置。
|
||||
- 在supersonic/chat/core/src/main/python/llm/run_config.py 中通过 TEXT2DSL_FEW_SHOTS_EXAMPLE_NUM 变量进行配置。
|
||||
- 默认值为15,为项目在内部实践后较优的经验值。样本少太少,对导致LLM在生成SQL的过程中缺少引导和示范,生成的SQL会更不稳定;样本太多,会增加生成SQL需要的时间和LLM的token消耗(或超过LLM的token上限)。
|
||||
- <div align="left" >
|
||||
<img src=../images/text2sql_config.png width="70%"/>
|
||||
<p>图1-1 样本数量的配置文件</p>
|
||||
</div>
|
||||
|
||||
3. 运行中更新配置的脚本。
|
||||
- 如果在启动项目后,用户需要对text2sql功能的相关配置进行调试,可以在修改相关配置文件后,通过脚本 supersonic/chat/core/src/main/python/bin/text2sql_resetting.sh 在项目运行中让配置生效。
|
||||
|
||||
### **FAQ**
|
||||
1. 生成一个SQL需要消耗的的LLM token数量太多了,按照openAI对token的收费标准,生成一个SQL太贵了,可以少用一些token吗?
|
||||
- 可以。 用户可以根据自身需求,如配置方式1.中所示,修改样本池中的样本,选用一些更加简短的样本。如配置方式2.中所示,减少使用的样本数量。
|
||||
- 需要注意,样本和样本数量的选择对生成SQL的质量有很大的影响。过于激进的降低输入的token数量可能会降低生成SQL的质量。需要用户根据自身业务特点实测后进行平衡。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user