知识库召回过程介绍
编排界面知识库召回
知识库召回逻辑流程简图
Step 1:匹配度计算
过程描述:知识库根据用户问题与知识库分片逐个计算匹配度
调整方式:
- 选择合适的搜索策略
- 开启查询改写功能
- 给出完整的问题描述
- 调整知识库分片内容
Step 2:知识库返回
根据设置的匹配度和召回数量,返回符合要求的知识库分片,可在调试界面中查看召回的内容
Step 3: 大模型 总结
在智能体编排界面,会内置一个系统提示词来优化知识库的返回
输入给大模型的内容如下
# "role":"system",代表系统提示词,此部分内容为系统自带,不可更改
{"messages":[{"content":"你是一个ai小助手","role":"system"},
# 系统提示词的具体内容,模型会按照这个规则去生成回复。这里可以看到,大概内容为:引用包含图片的分片则可以按图片格式进行输出
{"content":"\n# 回答规则\n根据引用的内容回答问题:\n1.如果引用的内容里面包含 <img src=""的标签, 标签里的 src 字段表示图片地址, 可以在回答问题的时候展示出去, 输出格式为"![图片名称](图片地址)" \n2.如果引用的内容不包含 <img src=""> 的标签, 你回答问题时不需要展示图片 \n\n#
# 具体引用的知识库分片内容,这里<img src> 标签为知识库分片中的图片地址
引用的内容 \nsection 1 start:\n方舟产品介绍\nDoubao-embedding\nDoubao Embedding Large 是字节跳动语义向量化模型的最新升级版,模型以豆包语言模型为基座,具备强大的语言理解能力;主要面向向量检索的使用场景,支持中、英双语,最长 4K 上下文长度。\n<img src="https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/BYTE_RAG_UPLOAD_BIZ_TYPE/None_1730975515438_FZGY0RSR0R.png?lk3s=61a3dea3&x-expires=1733567794&XXXXXXXXXXXXXXXXXX3D">\nsection 1 ends.
\n\n# Answer the question following the format in the rules, based on the references and examples provided. do not browse again.
# 用户的问题:Doubao-embedding
question is:\n\nDoubao-embedding\n","role":"user"}],
# 配置的模型参数
"model":"Doubao-pro-32k/functioncall-preview","model_meta":{"format":"text","frequency_penalty":0,"max_tokens":4096,"temperature":0.7,"top_p":0.7},"tools":[]}
最终的输出结果
模型结合引用的资料,按照系统提示词和人设与回复逻辑中的要求来对问题进行回复
工作流知识库节点召回
在工作流中添加知识库节点进行召回时,知识库节点只会返回知识库分片的内容,需要在后面的节点中添加大模型节点,并编写适当的提示词来告知大模型如何使用知识库分片内容(可直接借鉴在编排界面中使用的系统提示词)
表格类知识库召回
表格知识库支持基于索引列的匹配 (表格按行进行划分),同时也支持基于 NL2SQL 的查询和计算。
1、正确使用索引列,围绕索引列进行的提问会有一个很好的召回效果
2、给每个字段设置合适的数据类型
例如:如果希望对年龄这个字段做数学运算、需要将其设置为 int 型变量
3、尽量让自己的问题描述清晰,让问题中包含对象和操作
例如:帮我查询下员工id中包含5的员工姓名有哪些
如果效果不符合预期,如何调试?
- 为避免知识库根据语义引用的内容影响输出结果,只参考sql语句查询的内容,可参考如下设置
- 点开调试界面
- 查看输出的sql语句是否正确
如果不正确,则根据sql语句错误的地方调整问题