概念:什么是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社区](https://static.zhi35.com/uploads/2025/03/20250311154424153-1024x540.png)
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社区](https://static.zhi35.com/uploads/2025/03/20250311155002998-1024x617.png)
RAG的完整工作流
![图片[3]-理论:什么是RAG(检索增强生成)?-知行合一35社区](https://static.zhi35.com/uploads/2025/03/20250311155753592-1024x566.png)
- 数据准备(Document Ingestion – ETL):
- 数据来源(Data Source):首先,系统会从各种数据源(比如文档、数据库等)读取数据。
- 读取(Read):通过“读取器”(Reader)将这些数据转换成系统能处理的格式,形成“文档”(documents)。
- 分割(Split):接着,这些文档会被“分割器”(Transformer)切成更小的“块”(chunks),方便后续处理。
- 存储(Write):最后,这些小块数据会被“写入器”(Writer)存储到一个专门的“向量数据库”(Vector Store)中,方便以后快速查找。
- 离线处理(Offline):
- 在用户提问之前,系统会预先处理这些数据,确保它们已经准备好被检索。
- 用户提问(User Query):
- 当用户提出一个问题时,系统会把这个问题和之前存储的数据块进行匹配。
- 检索(Retrieve):
- 系统会从向量数据库中查找与用户问题最相关的数据块(chunks)。
- 增强生成(Augment):
- 找到相关数据后,系统会把这些数据作为“上下文信息”提供给生成模型。
- 生成模型会根据这些上下文信息,结合用户的问题,生成一个回答。
- 生成回答(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),专注于高效数据导入和语义缓存加速。
参考
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们,我们会第一时间更新。
暂无评论内容