添加链接描述
思路很好理解。一般rag检索回来的文本都是直接rerank,拿top-k个扔进llm里,但是这里面仍然会有不相关文档,可能导致幻觉。现有的事实性and忠实性测试测不了这种问题。对这个问题,处理方法完全是依赖llm+rerank,尽可能把相关文档往前提。
我自己做rag时必加的一步就是相关性检测,但是只是yes or no的检测,而self-reasoning是带分析的检测,并且需要总结其中与query相关的信息,然后把这些信息作为llm的context,这就有点介于rag-fusion和普通rag之间了,不是直接得到子问题答案,也不是直接对着context输出答案,而是像做材料题一样,先摘出有用信息,再回答。
这种能力并非llm拥有的,即:不是针对某个query的特定context的信息总结,而是context可能只是与query的子query有关,这需要训练才能教会llm,因此他们用gpt4生成了2000条训练数据,微调llama2-7b和13b,结果很好,但是无法超过gpt4,因为微调数据就来自于gpt4。
这个方法坏的点在数据只能靠llm自己搞,这又导致数据上限被卡住,人工写又不符合llm生成风格和逻辑。但是至少能改善现状。
虽然如此,但是现阶段效果比self-rag好。