微信扫码
添加专属顾问
我要投稿
由于大多数 LLMs 只是定期对大量公共数据进行训练,因此他们无法访问的最新信息和/或私有数据。检索增强生成 (RAG) 是应用程序开发中 LLM 的核心范式,通过连接到 LLMs 外部数据源来解决这个问题。基本的 RAG pipeline 包括 embedding 用户查询、将相关文档检索到查询中,以及将文档传递给 LLM 以生成基于检索上下文的答案。
简单来说,就是把相关的内容从知识库中查询出来,然后扔给 LLMs ,最后基于检索内容生成最终结果反馈给用户。
缺点是,查出来的内容经常可能和问题不相关或者不是很有用的内容,导致生成的内容不符合预期。
在上图的流程中,当回答不满意的时候,无法进行上述调整。在这种情况下,我们实际的操作是需要去重新做一些迭代或对问题进行优化,或对内容进行一定的筛选或排序,重新回到某个节点,然后进行一定的优化,再重新执行一遍,直到我们在一定的判断条件下得到一个满意的结果,这样就可以得到一个更好的输出,如下图所示:
在实践中,发现实现 RAG 需要围绕这些步骤进行逻辑推理:例如,我们可以询问何时检索(基于问题和索引的组成),何时重写问题以便更好地检索,或者何时丢弃不相关的检索文档并重新尝试检索?引入了 Self-Reflective RAG,提出了使用 LLM 自我纠正质量差的检索和/或生成思想。
基本的 RAG 流程仅使用一个链:根据检索到的文档 LLM 确定要生成的内容。
一些 RAG 流使用路由,例如,根据问题 LLM 在不同的检索器之间做出决定。但是 Self-Reflective RAG 通常需要某种反馈,重新生成问题和/或重新检索文档。
状态机是第三种支持循环的认知架构,它非常适合于此:状态机只是让我们定义一组步骤(例如,检索、分级文档、重写查询)并设置它们之间的转换选项;例如,如果我们检索到的文档不相关,则重写查询并重新检索新文档。
CRAG 核心是检索到相关文档后,使用 LLMs 进行评估,分类三类 Correct、Incorrect、Ambiguous:
可以将其表示为如下图
简化步骤如下图:
核心思想:要有自主的判断,当判断觉得结果不是很满意的时候,要形成一个环,要能再次的对之前的步骤进行优化。
Retrieve
token 决定使用 D
输入 x (question)
OR x (question)
, . y (generation)
输出为 yes, no, continue
ISREL
token 决定段落 D
是否与 x
d
in D
的输入 ( x (question)
, d (chunk)
) 相关。输出为 relevant, irrelevant
。ISSUP
token 决定每个块的LLM D
生成是否与该块相关。输入为 x
, d
, y
for d
in D
。它确认了 中 y (generation)
所有值得验证的语句都得到 d
的支持。输出为 fully supported, partially supported, no support
。ISUSE
token 决定从 中的 D
每个块生成是否是对 x
的有用响应。输入为 x
, y
for d
in D
。输出为 {5, 4, 3, 2, 1}.
我们可以将其概述为简化的图形来理解信息流:
详细内容如下图:
Self-Reflective 可以大大提高 RAG,从而能够纠正质量差的检索或生成。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-01
2025-01-01
2024-08-13
2025-02-04
2024-04-25
2024-07-25
2024-06-13
2024-09-23
2024-04-26
2024-08-21