知识库对话效果
知识库是用来管理你的 私有知识 的容器,可将自有的知识内容上传到知识库中,LinkAI将会自动解析和加工你的文档,提供给AI应用“训练”。面对用户提问时,根据问题检索语义相似的知识库语料,然后把问题及匹配的语料提供给大模型,大模型结合检索到的知识库语料以及应用设定(系统提示词)来做出回复。
如果上传知识库并测试问答之后,觉得并没有使用知识库或回答效果不好,请参考以下步骤进行问题排查和优化:
1. 确定应用类型及绑定知识库
1.1 使用知识库应用
LinkAI平台上的应用分为轻量应用和知识库应用,使用知识库的前提是需要创建知识库应用。如果创建的是轻量应用,可以按照下图指示,升级到知识库应用。
1.2 绑定知识库
如果已是知识库应用,进入应用配置界面,确认绑定了相关的知识库。
2. 查看使用记录
在使用知识库应用 或 使用工作流(内含应用节点或知识库节点)对话时,每次对话都可在我的账号页面查看使用记录详情。
在使用记录详情中,除了本次对话的请求(提问)、结果(回复),还可以查看本次对话命中的知识库语料 。
如未命中,则代表本次对话未检索到知识库内容;如命中,可查看命中的语料是否符合预期(即是否和问题相关,是否是自己上传的知识库中可用于回答该问题的相关语料)。
在使用详情中可直接点击【查看详情】一键跳转至知识库中查看该条语料内容,并进行编辑修改。
注意:如果分别在渠道端和网页端对话时,回复效果有明显差异,则可以检查:
在「客户端配置」或「使用记录」中检查,渠道端使用时配置的应用/工作流,是否与网页端所测试的应用/工作流一致。
在一致的前提下,需检查「使用记录」中两个场景的上下文记忆情况。
上下文记忆会影响回复的效果,例如,第一次回答的结论是错误的,修改对应知识库后,再次询问相同问题,会受第一次错误回答的记忆所影响,仍然回复相同的错误答案
在修改知识库语料或应用设定前后进行测试时,需确保已清空记忆,网页端调试可手动点击清空上下文记忆,渠道端则需间隔一段时间(超过应用中设置的记忆保留时间)待记忆自动失效后再测试。
3. 检索测试
在第2步可确定一次问答所命中的知识库内容语料有哪些,如未命中预期可用于回复的知识库内容,可进一步使用知识库的检索测试功能来排查:
3.1 检索测试结果
在知识库-检索测试中,可将用户提问的问题进行检索,测试出语义相似度最高的十条语料。
检索方式可以选择我们应用配置里的方式,然后把问题复制粘贴到测试文本框内,点击检索。
检索结果会按照与问题的相关性展示语义检索结果(左)和全文检索结果(右,如使用增强检索则有):
- 语义检索结果是根据问题和知识库语料的语义相似度来排序;
- 全文检索结果简单理解是基于关键词匹配进行排序。
如发现预期应该检索到的知识库内容在检索测试结果中排序比较低(即相似度较低),则可能是应用配置-知识库配置中的语义检索相似度阈值设置较低,可参考3.2进行修改
3.2 知识库配置
有了排序结果,把哪些语料发给大模型,取决于我们在应用配置的参数:检索方式、语义相似度阈值、检索条数(语义检索条数、全文检索条数)。
以上图配置为例:
- 单次检索条数决定了最多会把检索测试结果中的4条语料发给大模型,其中包括语义检索条数和全文检索条数;
- 语义相似度阈值决定了检索测试结果中展示的语义检索结果中相似度高于0.78的语料才会发给大模型。
- 而语义检索的条数、语义检索的相似度阈值、全文检索的条数上限,均可自主配置,如下图:
通过检索测试结果,我们可以清晰地知道一个用户提问发生时,哪些知识库内容会被命中并发给大模型来生成回复,那么针对不同的情况,调整对应的参数即可,例如:
- 如果语义检索结果中语料的相似度都普遍偏低,我们可以降低语义相似度阈值;反之,则调高。以此,来保证发给大模型的语料尽可能和问题相关
- 如果知识库语料彼此之间相似度差别比较大,我们降低检索条数,避免发送和问题关系不大的语料给大模型,同时降低token消耗;反之,我们要适当提高检索条数,以保证问题相关语料的完整性。
4. 模型配置
4.1 模型
不同的模型对应用设定遵循的程度不一样,回复效果可能也差别很大,可以多测试对比,目前一般推荐LinkAI-4o-mini
模型,性能接近LinkAI-4o
且单价不到LinkAI-3.5-Turbo
的一半,是目前最具性价比的模型。
4.2 温度
温度越高回复越具有创意和不确定性,越低越具有严谨性。在知识库问答场景,一般要求回复要尽可能准确,建议取值在0~0.2之间。
4.3 应用设定
针对知识库部分,通过应用设定,我们可以进一步控制大模型如何回复,例如:
场景1:我们希望大模尽可能遵循知识库来回复,知识库中没有提供答案的问题不随意回复,则可以在应用设定中这么写(示例,仅供参考):
## 你的角色
你是xxxx,你的任务是根据提供的知识库内容回复用户的问题,注意回答要准确,易读。
## 注意
- 严格根据提供的知识库信息回答问题,如提供的知识库信息无法回答用户的问题(或没有提供知识库信息),请告知用户联系人工客服。场景2:检索到的知识库信息可能与用户的问题并不相关,我们希望 AI 先进行判断再决策是否要参考这些信息,则可以在应用设定中这么写(示例,仅供参考):
## 你的角色
你是xxxx,你的任务是根据提供的知识库内容回复用户的问题,注意回答要准确,易读。
## 注意
- 可能会提供给你一条或多条知识库信息,你需要先判断其是否和用户的问题相关,如相关即可基于知识库内容进行回复;如不相关则不能参考知识库信息。场景3:用户提问比较模糊,可能与知识库中多个内容相关,我们希望 AI 先进一步确认用户的具体问题再回复,则可以在应用设定中这么写(示例,仅供参考):
## 你的角色
你是xxxx,你的任务是根据提供的知识库内容回复用户的问题,注意回答要准确,易读。
## 注意
- 必须确认用户的问题是清晰、明确的;如果用户的问题不够清晰明确(例如提供给你的知识库信息中有多个疑似与用户问题相关的内容,但无法确认应该根据哪个内容回复),则追问用户,委婉地请用户明确自己的问题(需要你基于提供给你的知识库信息,结合用户的问题,生成2~3个可能代表用户提问意图的问题,请用户确认具体是询问其中哪个问题)。场景4:知识库中存在文件、图片或视频的 URL 链接,如需大模型将素材直接发出,则可以在应用设定中这么写:
## 你的角色
你是xxxx,你的任务是根据提供的知识库内容回复用户的问题,注意回答要准确,易读。
## 注意
- 请把提供的知识库信息中的链接直接发送出来,不要省略也不要改写。