RAG 技术 07 - 生成
这个过程是以检索到的结果作为上下文,回答用户提问
回答方式
RAG 针对多个检索文本,有不同的利用方式,可归纳为以下 3 种:
文档组合方式 | 原理 | 优缺点 |
---|---|---|
concate | 直接将所有检索联合起来,和问题一起输入 llm 回答 | 利用了所有文档,但是内容太多,可能被截断,无法适应任意长度上下文 |
Map_reduce | llm 针对每个检索文档回答问题,最终再用 llm 选择答案 | 每个检索内容相互独立,如果问题需要多个检索内容的组合,则无法回答 |
Refine | llm 迭代式地使用检索文档回答问题,每次保留较好结果 | 递进式输出答案,结果通常较好,而且可以适应任意长度上下文 |
Map_Rerank | llm 针对每个文档回答问题并输出评分,选择高评分输出 | 每个检索内容相互独立,如果问题需要多个检索内容的组合,则无法回答 |
self-RAG
因为使用 llm,这个过程设计 prompt,所以很多 prompt 的技巧可以使用到这里,包括思维链等技术
甚至将 Agent 引入 llm,自动判断答案与问题的相关性,然后调整自己后续的行动,Self-RAG 就是这种技术,该模型不仅依赖于初始检索,而且通过生成后续查询和响应来主动重新评估和调整其方法。此迭代过程允许模型纠正自己的错误、填补空白并提高最终输出的质量
评估
针对 llm 生成的答案,评估答案的准确性,一般分为两种:
- 人工评估:评估答案是否响应了问题,以及和利用上下文的水平
- 模型评估:使用 llm 模型来评估答案,甚至可以使用 llm 生成 (问题、上下文、回答) 的三元组,然后通过比较问题与答案,自动评估模型性能