理想情况下,生成式 AI 的落地应用需要提供真实且高质量的响应。SELF-RAG 正是为解决此问题而被创建的。
背景介绍
-
有趣的是,RAG的发展轨迹与提示工程(prompt engineering)非常相似。RAG 最初是一个简单而有效的概念,其核心是在提示(prompt)中注入相关的背景信息。
-
RAG 的主要目标是充分利用大语言模型 (LLM) 的语境学习能力(ICL)。
-
目前,RAG 正被赋予更复杂的机制与更高的效率。并非所有情况下都默认进行检索,系统会先经过一个筛选流程来判断 LLM 是否可以独立完成用户请求。
-
效率和准确性之间的权衡始终存在。以效率为代价的准确性会损害用户体验和实际的应用价值;而牺牲准确性的效率会导致结果的误导性与不准确性。
-
对用户输入进行筛选,以此决定是直接依靠 LLM 进行推断(inference)还是通过 RAG 注入提示,这一过程需要一个参照物。在 SELF-RAG 的情况下,它是利用基于自反机制(self-reflection)微调过的LLM 来做参照的。
-
RAG 筛选的原理可以有多种实现形式。最重要的是一个决策参照,用以判断是直接从 LLM 推断问题答案,还是使用 RAG。并且在使用 RAG 的情况下,能进一步评估响应的质量和正确性。
-
基于生成式 AI 的应用程序还可以更广泛地考虑筛选流程... 除了直接推断或 RAG 之外,还有其他人机协作、网络搜索、多 LLM 协调等选项。
深入了解 SELF-RAG
SELF-RAG 框架可以训练出一个通用的语言模型,使其能够按需自适应地检索段落。
该模型会借助被称为 “自反令牌”(reflection tokens)的特殊标记,来生成和反思所检索的段落以及自身生成的内容。
自反令牌
自反令牌分为 “检索” 和 “批判” 两类,分别表示检索需求和生成质量。
SELF-RAG 使用自反令牌来确定是否需要检索,并对所生成内容的质量进行自我评估。
生成自反令牌使得语言模型在推理阶段具备可控性,让其能够根据不同的任务需求调整自身行为表现。
研究表明,SELF-RAG 显着优于标准的大语言模型 (LLMs) 和 RAG 方法。
SELF-RAG 的运作步骤
-
大语言模型(LLM)在检索到的段落指导下生成文本。
-
通过学习生成特殊标记的方式来批判输出结果。
-
这些自反令牌标示了检索的需求,或是确认输出结果的相关性、论据支持、或完整性。
-
相比之下,常见的 RAG 方法不加区别地检索段落,无法确保所引用来源的可靠性。
考虑到下图... SELF-RAG 学习检索、批判和生成文本段落,以提升整体生成质量、真实性和可验证性。
延伸思考
额外的推断与成本
SELF-RAG 会在推断方面引入更多的开销。参考上图,这种自反式的 RAG 方法会引入更多的推断点。
首先会执行一次推断,然后并行执行三次推断。接着,对这三个结果进行比较,并选出一个“优胜者”用于 RAG 推断。
超出领域范围
同样在上图中可以看出,对于领域外的查询,会被识别出来,请求不会通过检索来处理,而是直接发送到 LLM 推断。
Agentic RAG
再参考下面这张图,一个问题值得思考...
随着 RAG 过程复杂性的增加,我们是否正在接近这样一个点:基于智能体(agent)的 RAG 方法将会是最优选择?这种方法在 LlamaIndex 中被称为“Agentic RAG”(Agentic RAG)。