一、动机
检索增强LLM在处理复杂输入常常面临挑战,并且由于知识检索的噪声问题而导致效果不好,从而影响模型的整体性能。普通的检索当检索的查询简单明了时,能有效的识别相关的信息,但是对于结构复杂、多层次的问题,很难检索到真正线管的文档。
由检索器获取的内容可能包含无关或误导性信息(arXiv:2402.11129v3 [cs.CL] 2024年10月15日)。通常,检索器返回的前K条文档会被用作增强材料,但无法保证这些Top-K文档都与任务高度相关并具有帮助性。这些噪声过滤方法主要依赖于LLM自身的置信度判断,而这种判断往往并不精确(Xiong 等,2023)。此外,这些方法通常还需要额外训练一个语言模型来判断是否需要进行检索,从而导致计算成本大幅上升。
二、解决方法
提出了BlendFilter结合查询生成融合与知识过滤两大机制,有效提升了检索增强型大型语言模型(LLMs)的性能。
BlendFilter包含三个核心框架:
1.查询融合模块:这个模块通过多种增强策略来丰富原始输入查询,构建一个由多个子查询组成的融合查询集合,结合了外部知识和内部知识,最终生成的查询集合包含:原始查询、外部知识增强查询、内部知识增强查询 ,这些查询一起输入到检索器中。
2.知识过滤块,自动识别并过滤无关的或误导性的检索内容,但是这个无需额外的语音模型的支持,充分利用LLM本身内在的过滤能力。
3.答案生成模块,LLM会将过滤后的知识与原始查询进行整合,生成结果。
三、方法细节
有一个LLM、知识库、查询,目标是不对LLM微调的情况下利用知识库来帮助LLM生成准确的回答。
1.查询生成融合
研究表明验证了利用检索器通过相关知识来丰富问题,从而提升LLM性能的有效性。过程表达式:
但是在查询复杂的时候们直接将查询输入到检索器中,通常难以检索到正确的知识文档,因此采用内外部知识优化查询。
外部知识增强:
对于复杂的查询,首先利用原始的查询检索相关的知识文档,
然后,利用LLM通过链式推理推导出答案和推理(包含从外部知识库中检索到的相关关键词和有价值的信息,用来帮助检索器定位相关的知识)
之后。将生成的上下文与初始查询结合,形成增强后的查询。
相当于二阶推理
内部知识增强:
某些相关的知识,在外部的知识库中没有被检索到,可以尝试利用LLM的内部知识回答,用来对外部知识的补充。
2.知识过滤
在上面的过程中,通过将外部和内部知识增强的查询与原始查询结合,能够分别检索导相应的知识文档:过程如下:
通过这些检索们将他们检索到的知识进行合并:
为了解决检索器的不完美性,将LLM本身作为一个有效的知识过滤器将原始查询和检索到的知识一起提供给LLM。并指示LLM进行知识过滤:
最后,过滤的知识进行合并:
3.答案的生成
LLM基于过滤后的知识和原始查询生成答案,采用CoT来增强模型的推理能力: