AI系统中三个关键部分的设计:QA对(question-answer pair)、知识库alpha(混合检索策略)、以及知识库kms(召回分值阈值),并介绍了如何结合这些部分来处理用户问题。
1. QA对(question-answer pair)
QA对是系统中用于处理特定常见问题和回答的直接匹配方式。比如用户输入一个常见问题“你是谁?”,系统可以直接匹配预设的答案,而不需要经过复杂的检索或模型生成。这种方式有几个好处:
- 准确性和幂等性:QA对的回答是预定义的,确保每次触发都能得到一致的答案。
- 最高优先级:如果系统在用户问题中匹配到QA对,它会立即返回预设的回答,并停止进一步的处理,比如不经过检索(RAG管道)或大语言模型的生成。因此,QA对的触发比其他处理流程优先级更高。
分值要求:为了保证准确触发,QA对的匹配分数门槛较高(如0.95),表示只有当用户输入的问题非常接近预定义的QA对时,才会触发这条规则。
2. 知识库alpha(混合检索策略)
知识库alpha中使用了混合检索,这意味着系统同时使用了BM25和相似度匹配两种不同的检索方式来查找与用户问题相关的知识库内容。
-
BM25:BM25是一种基于关键字的传统检索方式,适合处理书面化的用户输入。例如,如果用户输入的内容是非常正式、明确的书面表达,BM25能够很好地匹配出相关内容,因此可以设置较低的分值要求。
-
相似度匹配:相似度匹配适合处理用户输入的口语化或模糊问题。它利用语义理解和嵌入向量来找到与用户问题语义上相似的内容。因此,当用户输入的问题不太正式或表述模糊时,相似度匹配能更好地找到相关信息,分值要求可以相对提高。
这意味着系统可以根据用户输入的特性动态调整BM25和相似度匹配的权重,以适应不同的场景。
3. 知识库kms(召回分值阈值)
Kms代表知识库召回的最低分值阈值(knowledge-min-score)。在知识检索过程中,系统会对召回的知识库内容进行评分,系统只有当召回的chunk(知识片段)分值超过阈值时,才会将这些内容与用户的问题送入大模型进行生成处理。
-
高于kms的情况:如果系统召回的chunk分值高于设定的kms阈值(如0.61),这些chunk将会被用于大模型的生成处理,最终给出更详细的回答。
-
低于kms的情况:如果所有召回的chunk分值都低于kms,那么系统不会进入大模型生成流程,而会根据配置的**“回复方式”**进行不同的操作:
4. 回复方式
系统在召回的chunk分值低于kms时有两种主要的处理方式:
-
自定义回复:系统返回一个自定义的回复,例如“抱歉,知识库里面暂时没有该问题的答案!” 这种方式非常严谨,确保系统不会给出错误的或幻觉性的回答,是应对大模型幻觉的有效手段。
-
LLM辅助回答:系统将用户的问题直接交给大语言模型(LLM)进行生成回答。虽然这种方式更灵活,但由于没有足够的知识库支持,生成的内容可能会出现幻觉,即生成不准确或错误的信息。这种处理方式适用于一些对答案准确性要求不高的场景。
总结
整个流程的设计通过QA对、混合检索(BM25+相似度匹配)、kms分值阈值以及不同的回复方式,为用户问题提供灵活的处理机制,以确保在不同场景下的准确性和效率。