检索增强生成(RAG):智能内容生成的新纪元

引言

在大 AI 时代,生成式人工智能(GenAI)模型,尤其是大型语言模型(LLM),已经展现出了令人瞩目的能力。然而,这些模型在提供信息的准确、即时、专业、权威等方面仍存在局限。检索增强生成(Retrieval-Augmented Generation,下称 RAG)技术应运而生,它通过结合外部知识检索与模型生成能力,大幅提升了内容的准确性、即时性、可靠性。

RAG 技术的起源

RAG 技术的根源至少可以追溯到 20 世纪 70 年代初期,当时基于文本挖掘与信息检索研究的问答系统在访问文本上,就使用了类似的技术。

RAG 这一术语来自于帕特里克·刘易斯 (Patrick Lewis,现就职于 AI 初创公司 Cohere 的 RAG 团队)等人的论文(2020 年),RAG 这一名称可能不太讨喜,但 RAG 一词已经被应用于日益壮大的数百篇论文和数十种商业服务系列方法中,这些方法更是被认为代表了 GenAI 的未来。

什么是 RAG 技术?

RAG 是一种通过从生成模型(主要指 LLM,下文仅以 LLM 讲解)外部获取事实,来增强 LLM 生成内容的准确性和可靠性的技术。从本质上讲,LLM 是神经网络,通常是由其包含的海量参数来支撑生成能力的,这些参数可以称为 LLM 的参数化知识,像人类寻常使用单词组成句子,LLM 凭借这些参数化知识能够快速响应一般性的提示。然而,它不适合那些想要更深入地研究当下最新或特定主题问题的场景。RAG 则恰恰可以填补 LLM 参数化知识(先验知识)的空白与不足。

RAG 工作原理

RAG 模型的基本架构如图所示,其核心技术包括如下几个关键组件。

  • Embedding Model:嵌入模型,用于将外部文档和用户查询转换成 Embedding 向量。
  • Vector DB:向量数据库,用于存储 Embedding 向量和执行向量相似性检索(检索出最相关的 Top-K 个信息)。
  • Prompt Engineering:提示词工程,用于将用户的问题和检索到的上下文组合成 LLM 的输入。
  • LLM:大语言模型,用于生成回答或响应内容。

首先,GenAI 应用可以维护一个特定业务领域的庞大知识库,这一知识库可以包含文档、网页、图像、视频、甚至结构化数据等。知识库通过对这些领域数据做进行相应切分,然后使用 Embedding Model 将之转换为向量表示(Embedding),最终将这些数据片段及其 Embedding 在 Vector DB 中进行向量索引存储,以便后续进行相关性检索。

当用户向 GenAI 应用提出问题时,应用会通过 Embedding Model 将问题也转换为 Embedding,然后使用这个 Embedding 与知识库中的向量索引进行比较,找到一个或多个最相关的匹配项(近似最近邻搜索ANN Search),然后将这些匹配项中的最相关的内容作为用户问题的上下文信息(Prompt Engineering),一并输入 LLM,最终得到一个被上下文"约束"的答案。

LLM 根据从知识库检索到的最相关内容和它自己对问题的"理解",组合生成问题的答案,呈现给用户的还可以包含知识库内容来源引用信息,使答案更具可信度。

如此,RAG 既解决了 LLM 常见的"幻觉"问题,又提高了生成内容的准确性与权威性。

想象一下法庭。法官会根据对法律的一般性理解来审理和判决案件。有时,医疗事故诉讼或劳动纠纷等案件需要特殊的专业知识,因此法官会派法院文员去法律图书馆寻找可以引用的先例和具体案例。

就像一位优秀的法官一样,GenAI 模型可以对人类各种各样的问题与任务做出响应。但想要提供具备权威引用的可靠答案,需要像"法庭文员"一样,进行一些额外的知识摄取和研究。这里的"法庭文员"就是 RAG 技术。

RAG 技术的优势

整合内外部资源,灵活结合开卷和闭卷的优势

RAG 技术将 GenAI 应用与外部资源联系起来,尤其是那些富含最新技术细节的资源。RAG 被当做"一种通用的微调方案",几乎任何 LLM 都可以使用它来连接几乎任何外部资源。

例如,给出"地球上第一种哺乳动物是什么时候出现的?"这个问题,RAG 可能会检索"哺乳动物"、"地球历史"和"哺乳动物进化"的文档。这些支持文档作为上下文与原始输入组合起来,并输入到产生实际输出的 LLM 中。这里 RAG 有两个知识来源:LLM 存储在其参数中的知识(参数化知识)和 RAG 从中检索段落的语料库中存储的知识(外部知识)。

"闭卷"即仅使用参数化知识,"开卷"即基于检索的外部知识,两相结合,相辅相成。

降低 LLM 训练成本

GenAI 应用要在日常生活中真正发挥有用的价值,它们不仅需要能够访问大量信息,更需要能够访问正确的信息。世界变化是快速的,而 LLM 本身对世界哪怕微小变化的跟进也是一个巨大的挑战。

改变 LLM 的参数化知识需要用新的数据集重新训练整个模型,这往往是一个及其耗力耗时的过程,而更新 RAG 模型的外部知识只需将用于知识检索的知识库替换掉即可,这种自适应方法绕过了 LLM 再训练步骤,直接访问和提取最新信息。这在事实(或我们对事实的理解)随时间演变的情况下非常有用。

保持知识新鲜度

相比使用额外数据集重新训练 LLM 或进行微调(Fine-tune),RAG 的实现要简单很多,而且更快、更便宜。它允许用户即时热插拔新源(知识库,Knowledge Base)。

RAG 技术通过链接 LLM、Embedding Model 和 Vector Database,可以即时地更新 Vector Database 中的知识,时刻保持知识的新鲜、全面与准确。

建立用户信任

RAG 可以为 GenAI 应用提供引用的来源,好比研究论文中的脚注,凭此用户可以追溯引用内容的可靠性,从而建立对生成内容的信任。

此外,RAG 技术还能帮助 GenAI 应用消除用户问题中的歧义,降低模型做出错误猜测的可能性(幻觉现象)。

RAG 技术特点概览

优势

  • 领域特定知识的整合:RAG 能够通过检索阶段获取特定领域的文档或信息,使得生成的文本更加贴合特定领域的语境和术语。
  • 上下文的丰富性:通过检索到的相关文档,RAG 能够利用丰富的上下文信息来生成更加准确和相关的回答。
  • 实时信息的获取:RAG 可以检索最新的领域相关信息,确保生成的内容不是基于过时的数据。
  • 提高准确性:在需要精确数据或专业术语解释的领域问题上,RAG 能够提供更加准确的信息。
  • 定制化和灵活性:RAG 可以根据不同的领域需求定制检索策略和生成模型,提高解决方案的灵活性。
  • 避免生成错误:对于那些容易出错或需要权威信息的领域,RAG 通过检索可靠的数据源来减少错误信息的生成。
  • 多模态数据处理:RAG 不仅可以处理文本数据,还可以扩展到其他类型的数据,如图片、视频等,只要检索系统能够索引和检索这些数据。

局限性

  • 检索依赖性:RAG 的效果在很大程度上依赖于检索系统的性能,如果检索不到相关信息,生成的文本可能缺乏准确性。
  • 计算成本:RAG 结合了检索和生成两个阶段,可能会有更高的计算和时间成本。
  • 数据隐私和安全性:在检索阶段可能需要访问敏感数据,这就需要考虑数据隐私和安全性的问题。
  • 检索结果的偏差:如果检索系统存在偏差,那么 RAG 生成的文本也可能反映出这些偏差。
  • 领域知识的局限性:RAG 可能在处理需要广泛领域知识的问题时受限,特别是当检索到的文档不够全面或深入时。
  • 更新和维护成本:随着领域知识的快速发展,保持检索系统的数据更新可能需要持续的努力和资源。
  • 用户界面和体验:RAG 系统可能需要复杂的用户界面来允许用户有效地与检索和生成阶段交互,这可能影响用户体验。
  • 集成复杂性:将 RAG 技术集成到现有的系统或工作流程中可能需要克服技术挑战和适应性问题。

RAG 技术在特定领域的应用需要仔细考虑这些优势和局限性,并根据具体需求和条件进行优化和调整。

RAG vs. LLM

RAG 技术之于 LLM,在工作方式和应用场景上存在一些不同之处:

  • 检索与生成的结合:RAG 特别强调检索(Retrieval)阶段,即在生成回答或文本之前,先从大量数据中检索相关信息或文档片段,以提供给生成模型更多的上下文信息。LLM 主要依赖于其预训练中学习到的知识,而不直接检索外部信息。
  • 上下文信息的利用:RAG 通过检索阶段,RAG 能够利用特定的、与查询相关的上下文信息,这使得它在需要特定领域知识或详细信息的任务中表现更好。LLM 拥有大量的知识,但它的知识是基于训练数据的,可能不包括最新的信息或特定领域的详细信息。
  • 实时信息的整合:RAG 能够检索最新的信息或文档,这意味着它可以生成基于最新数据的回答。LLM 对于需要最新信息的任务可能不够准确。
  • 生成过程的可控性:RAG 检索阶段提供了额外的控制点,可以根据检索到的信息调整生成策略,提高生成文本的相关性和准确性。LLM 生成过程主要依赖于模型内部的决策,外部控制相对较少。
  • 应用场景:RAG 适合于需要结合大量外部信息和上下文的任务,如开放域问答、事实核查等。LLM 适合于广泛的文本生成任务,包括写作、摘要、翻译等,尤其是在不需要特定领域知识的情况下。
  • 计算资源:RAG 可能需要更多的计算资源,因为它涉及到检索系统的实时查询和生成模型的计算。LLM 本身是一个计算密集型的模型,但它不需要实时检索,因此在某些情况下可能更高效。
  • 交互性:RAG 可以设计为更交互式的系统,通过检索阶段与用户进行多轮对话或提供更深入的回答。LLM 虽然也支持交互,但其交互性主要依赖于模型内部的上下文保持能力。
  • 知识更新:RAG 可以通过更新检索的文档库来相对容易地更新知识库。LLM 知识更新需要重新训练或使用其他方法来适应新信息,这可能更加复杂和耗时。

结语

RAG 技术作为 AI 领域的时下大火的新兴技术,创造性地链接了 LLM、Embedding Model 和知识库的分析能力与知识,有效克服了 LLM 的幻觉问题,同时在充分利用内外资源、保持知识准确与全面、建立用户信任等方面具有良好的效果,在 GenAI 应用中展现出强大优势。随着技术的不断发展,RAG 必将在更多场景中展现其潜力,推动信息获取和内容生成进入新的高度。


相关推荐
RUNTIME5 小时前
大模型微调实操记录
llm
数据智能老司机5 小时前
构建具备自主性的人工智能系统——探索协调者、工作者和委托者方法
深度学习·llm·aigc
数据智能老司机5 小时前
构建具备自主性的人工智能系统——使代理能够使用工具和进行规划
深度学习·llm·aigc
姚毛毛7 小时前
Windows上,10分钟构建一个本地知识库
python·ai·rag
量子位8 小时前
智能车速度刷新:仅 10 个月,首个纯端侧大模型上车量产!
人工智能·llm
技术你大飞哥11 小时前
【突破数据孤岛】MCP协议进化史:从 STDIO 到全双工流式 —— AI 应用开发效率提升 90% 的秘密武器
llm·ai编程·mcp
漫谈网络11 小时前
Ollama工具调用(Tool Calls)业务应用案例
linux·ai·aigc·工具调用·ollama·tool calls
Goboy11 小时前
零基础搞定 Trae 智能体配置 + MySQL MCP 集成!手把手教学
llm·ai编程·trae
MarsBighead12 小时前
Pgvector+R2R搭建RAG知识库
python·ai·postgresql·rag·pgvector