论文笔记分享,标题:Astute RAG: Overcoming Imperfect Retrieval Augmentation and Knowledge Conflicts for Large Language Models,来自google cloud
在RAG的时候,再好的recall + rerank + 筛选策略,都会出现知识冲突,或query无关的候选知识的情况。文中称这种现象为“不完美检索”。
通常,当检索精度不低于 20%时,RAG 是有帮助的。当检索精度接近 0 时,带有 RAG 的模型的表现要比没有 RAG 的模型差。添加更多的检索段落并不一定导致更好的性能,因为额外的段落可能会降低检索精度。
核心流程如下图,分为3大步:
通过特定的prompt,引导LLMs生成准确、相关且无幻觉的问题相关的文本片段。设定最大的片段数量,所以LLMs可以自适应地决定生成多少文段,并在内部知识中没有更多可靠信息时停止生成。 将1生成的知识和2的知识结合导一起,每个文档段会表示元信息(来源),用于评估该片段的可靠性。通过迭代,让LLMs来识别哪些段落一致,分成一组一组的,过滤不相干的信息,哪些组之间是冲突冲突的。 基于每一组不冲突的文档块集合,生成一个答案,最后会让LLM综合来源,得到最可靠的一个答案。
其中步骤2可以迭代多次。总体上可以获得不错的提升。
一个示例如下:图片wx翻译
3个步骤都是prompt来完成,wx图片翻译的prompt如下,仅供参考