理论:什么是RAG(检索增强生成)?

概念:什么是RAG?

专业术语解释

RAG(Retrieval Augmented Generation,检索增强生成)是一种结合了信息检索和文本生成的技术。它通过从外部知识库中检索相关信息,并将其与生成模型结合,以生成更准确、更丰富的文本。具体来说,RAG模型在生成文本时,会先检索与输入相关的文档或段落,然后将这些检索到的信息作为上下文,辅助生成最终的输出。

白话文解释

RAG(检索增强生成)可以理解为一种“查资料再写文章”的方法。当我们需要回答一个问题或写一段文字时,RAG会先去“图书馆”(即外部知识库)查找相关的资料,找到有用的信息后,再结合这些信息来生成最终的答案或文本。这样做的目的是为了让生成的文本更加准确和丰富,因为它不仅依赖于模型本身的知识,还利用了外部的信息。

检索(Retrieval) + 生成(Generation)

RAG(Retrieval Augmented Generation,检索增强生成)是一种结合了检索模型和生成模型优势的技术,最初由Meta(Facebook)在2020年的一篇论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出。该技术旨在解决一个关键问题:如何让大语言模型在生成文本时有效地利用外部数据。通过检索相关的外部信息并将其整合到生成过程中,RAG能够生成更加准确和丰富的文本内容。

《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》 论文查看地址:https://arxiv.org/pdf/2005.11401v1

RAG是一种将大规模语言模型(LLM)与外部知识源的检索相结合,以改进问答能力的工程框架。

过程解释

Index(索引)

在离线状态下,从数据来源处获取数据并
建立索引的过程

Retrieval(检索)

将检索结果与原始问题结合,作为生成模
型的输入

Generation(生成)

基于增强后的上下文传入大模型生成最终
回答

索引 Knowledge Indexing

在离线状态下,从数据来源处获取数据并建立索引的过程。构建数据索引包括四个步骤:数据加载 、文本分块 、文本嵌入、创建索引。

  • 数据加载:将外部数据进行清理和提取,将CSV、 PDF、HTML、Word、Markdown 等不同格式的文件转换成纯文本
  • 文本分块:是重要参数,太大,则无法很好地匹配查询,太小,则没有足够的有用上下文来生成答案。固定分块、NLP工具分块、递归分块
  • 文本嵌入:Embedding向量化,将文本内容通过embedding嵌入模型转化为多维向量的过程。假设的语言空间中,两个点越接近,所表达的语义就越相似
  • 创建索引:将原始语料块和嵌入以键值对形式存储,以便于未来进行快速且频繁的搜索,使用专业的向量数据库进行存储向量数据
图片[1]-理论:什么是RAG(检索增强生成)?-知行合一35社区

RAG系统可分为 3 类

类别说明

初级 RAG (Naive RAG)
它通常涉及一个简单的“检索-阅读”过程。
在这个范式中,系统首先根据用户的问题检索相关信息,然后使用检索到的信息生成答案。
Naive RAG面临的挑战包括检索的相关性、生成的连贯性以及如何有效利用检索到的信息等问题。

高级 RAG(Advanced RAG)
Advanced RAG是在Naive RAG的基础上进行的改进,它通过更精细化的数据处理来提高检索生成的质量。
这种范式可能会引入预检索和检索后的处理,如优化数据索引使用滑动窗口细粒度分割元数据等方法。
Advanced RAG还可能包括多次j检索或迭代检索,以及对检索到的文档进行重排序(reranking)来提高生成文本的相关性和准确性。

模块化 RAG(Modular RAG)
Modular RAG代表了RAG系统的更高级阶段,它通过引入新的模块来丰富RAG过程,并提供更多的灵活性。
这种范式允许模块的替换或重新配置,可以根据特定问题上下文动态地组织RAG过程。
Modular RAG结合了微调等其他技术,并且可能包括自适应检索多答案融合和主动学习等高级功能。
图片[2]-理论:什么是RAG(检索增强生成)?-知行合一35社区

RAG的完整工作流

图片[3]-理论:什么是RAG(检索增强生成)?-知行合一35社区
  1. 数据准备(Document Ingestion – ETL)
    • 数据来源(Data Source):首先,系统会从各种数据源(比如文档、数据库等)读取数据。
    • 读取(Read):通过“读取器”(Reader)将这些数据转换成系统能处理的格式,形成“文档”(documents)。
    • 分割(Split):接着,这些文档会被“分割器”(Transformer)切成更小的“块”(chunks),方便后续处理。
    • 存储(Write):最后,这些小块数据会被“写入器”(Writer)存储到一个专门的“向量数据库”(Vector Store)中,方便以后快速查找。
  2. 离线处理(Offline)
    • 在用户提问之前,系统会预先处理这些数据,确保它们已经准备好被检索。
  3. 用户提问(User Query)
    • 当用户提出一个问题时,系统会把这个问题和之前存储的数据块进行匹配。
  4. 检索(Retrieve)
    • 系统会从向量数据库中查找与用户问题最相关的数据块(chunks)。
  5. 增强生成(Augment)
    • 找到相关数据后,系统会把这些数据作为“上下文信息”提供给生成模型。
    • 生成模型会根据这些上下文信息,结合用户的问题,生成一个回答。
  6. 生成回答(Chart Response)
    • 如果系统在上下文中找到了答案,它会生成一个详细的回答。
    • 如果找不到相关信息,系统会诚实地告诉用户:“我无法回答这个问题。”

RAG的工作流程就像是一个“智能助手”。当用户提问时,它会先去“图书馆”(向量数据库)查找相关资料,找到后再结合这些资料生成一个准确的回答。如果找不到相关资料,它也会如实告诉用户。这种方式让回答更加准确和可靠。

开源的RAG框架

LangChain

提供检索增强生成(RAG)的集成方法,支持动态从数据库或文档中检索信息,提升LLM回答的准确性和上下文相关性。适用于开发智能对话代理。

RAGFlow

基于深度文档理解的开源引擎,支持OCR、多格式文档处理(如PDF、表格、图片),并提供可视化文档切分功能。适合企业级复杂数据问答场景。

Dify

开源LLM应用开发平台,结合后端即服务(BaaS)和LLMOps理念,支持快速构建生产级生成式AI应用,支持RAG流程编排和模型管理。

QAnything

本地化知识库问答系统,支持任意格式文件(包括离线使用),采用二阶段召回策略(粗排+精排),适用于数据安全和私有化部署需求。

FastGPT

基于LLM的知识库问答系统,支持可视化工作流编排,可快速接入企业微信、飞书等平台,提供开箱即用的数据处理和模型调用能力。

Haystack

综合型LLM编排框架,支持模型、向量数据库、文件转换器等组件集成,适合开发问答系统、语义搜索和对话代理。

Verba

由Weaviate驱动的RAG聊天机器人,支持本地部署和多模型集成(如OpenAI、HuggingFace),专注于高效数据导入和语义缓存加速。

参考

什么是 RAG(检索增强生成)?

LLM RAG Paradigms: Naive RAG, Advanced RAG & Modular RAG

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容