Navigate to WaytoAGI Wiki →
Home/Question List/Question Detail

什么是RAG

Answer

RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构,旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。

大模型需要 RAG 进行检索优化的原因在于其存在一些缺点:

  1. LLM 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。
  2. LLM 的知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。
  3. LLM 的输出难以解释和验证,存在黑盒不可控和幻觉干扰等问题。
  4. LLM 容易泄露隐私训练数据。
  5. LLM 的规模大,训练和运行成本高。

RAG 具有以下优点:

  1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。
  2. 数据库的数据更新敏捷,可解释且不影响原有知识。
  3. 数据库内容明确、结构化,加上模型的理解能力,能降低大模型输出出错的可能。
  4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。
  5. 数据库维护可降低大模型的训练成本,新知识存储在数据库即可,无需频繁更新模型。

RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统。

一个 RAG 的应用可抽象为 5 个过程:

  1. 文档加载:从多种不同来源加载文档。
  2. 文本分割:把 Documents 切分为指定大小的块。
  3. 存储:包括将切分好的文档块进行嵌入转换成向量的形式,以及将 Embedding 后的向量数据存储到向量数据库。
  4. 检索:通过某种检索算法找到与输入问题相似的嵌入片。
  5. 输出:把问题以及检索出来的嵌入片一起提交给 LLM,LLM 会通过问题和检索出来的提示一起来生成更加合理的答案。
Content generated by AI large model, please carefully verify (powered by aily)

References

问:RAG 是什么?

RAG(Retrieval-Augmented Generation),即检索增强生成,是一种结合检索和生成能力的自然语言处理架构,它旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。简单来说,就是通过检索的模式,为大语言模型的生成提供帮助,从而使大模型生成的答案更符合要求。[heading2]为什么LLM需要RAG?[content]众所周知,大模型已经在很多领域和问题下都取得了很好的效果,那为什么还需要RAG进行检索优化呢?[heading3]LLM的缺点[content]1.LLM无法记住所有知识,尤其是长尾的。受限于训练数据、现有的学习方式,对长尾知识的接受能力并不是很高;长尾数据是指数据集中某些类别数量较少,而其他类别样本数较多的不平衡“长尾”状态。例如在自然语言处理中,一些少见的词汇出现频率很低,而常见的词汇出现频率很高。2.LLM的知识容易过时,而且不好更新。只是通过微调,模型的接受能力其实并不高而且很慢,甚至有丢失原有知识的风险;3.LLM的输出难以解释和验证。一方面最终的输出的内容黑盒且不可控,另一方面最终的结果输出可能会受到幻觉之类的问题的干扰;4.LLM容易泄露隐私训练数据。用用户个人信息训练模型,会让模型可以通过诱导泄露用户的隐私;5.LLM的规模大,训练和运行的成本都很大。[heading3]RAG的优点[content]1.数据库对数据的存储和更新是稳定的,不像模型会存在学不会的风险。2.数据库的数据更新可以做得很敏捷,增删改查可解释,而且对原有的知识不会有影响。3.数据库的内容是明确、结构化的,加上模型本身的理解能力,一般而言数据库中的内容以及检索算法不出错,大模型的输出出错的可能就大大降低。4.知识库中存储用户数据,为用户隐私数据的管控带来很大的便利,而且可控、稳定、准确。5.数据库维护起来,可以降低大模型的训练成本,毕竟新知识存储在数据库即可,不用频繁更新模型,尤其是不用因为知识的更新而训练模型。

RAG性能提升策略和评估方法(产品视角)

作者:牛大局原文:[RAG性能提升策略和评估方法(产品视角)](https://iac2rhlh02p.feishu.cn/wiki/WL4Lwx5dyigl4zkZQojc7esQnWf)[heading1]一、前言[content]相信经过一年的知识沉淀,RAG是什么大家都不陌生了。RAG是检索增强生成(Retrieval-Augmented Generation)的缩写,它是一种结合了检索模型和生成模型的技术。其核心目的是通过某种途径把知识告诉给AI大模型,让大模型“知道”我们的私有知识,变得越来越“懂”我们。RAG的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。RAG的最常见应用场景知识问答系统:RAG可以用于构建问答系统,用户提出问题,RAG模型从大规模的文档集合中检索相关的文档,然后生成回答。

手把手教你本地部署大模型以及搭建个人知识库

因为利用大模型的能力搭建知识库本身就是一个RAG技术的应用。所以在进行本地知识库的搭建实操之前,我们需要先对RAG有一个大概的了解。以下内容会有些干,我会尽量用通俗易懂的描述进行讲解。我们都知道大模型的训练数据是有截止日期的,那当我们需要依靠不包含在大模型训练集中的数据时,我们该怎么做呢?实现这一点的主要方法就是通过检索增强生成RAG(Retrieval Augmented Generation)。在这个过程中,首先检索外部数据,然后在生成步骤中将这些数据传递给LLM。我们可以将一个RAG的应用抽象为下图的5个过程:文档加载(Document Loading):从多种不同来源加载文档。LangChain提供了100多种不同的文档加载器,包括PDF在内的非结构化的数据、SQL在内的结构化的数据,以及Python、Java之类的代码等文本分割(Splitting):文本分割器把Documents切分为指定大小的块,我把它们称为“文档块”或者“文档片”存储(Storage):存储涉及到两个环节,分别是:将切分好的文档块进行嵌入(Embedding)转换成向量的形式将Embedding后的向量数据存储到向量数据库检索(Retrieval):一旦数据进入向量数据库,我们仍然需要将数据检索出来,我们会通过某种检索算法找到与输入问题相似的嵌入片Output(输出):把问题以及检索出来的嵌入片一起提交给LLM,LLM会通过问题和检索出来的提示一起来生成更加合理的答案[heading2]文本加载器(Document Loaders)[content]文本加载器就是将用户提供的文本加载到内存中,便于进行后续的处理

Others are asking
推理行大模型对于RAG的准确性提升,带来哪些改变
推理行大模型对 RAG 准确性提升带来了以下改变: 1. 当辅以能有效提取文档中结构化信息并整合为提示词的 PDF 解析器时,大语言模型能作出更准确的响应,提高了提供给模型的数据质量和相关性,从而提升模型输出质量。 2. 大模型应用领域常用的 RAG 方法,能让模型用自定义数据生成结果,处理无尽私有数据,将模型当成高效推理机器。但 RAG 存在一些常见误区: 随意输入任何文档不一定能得到准确回答,RAG 流程中的多个环节都会影响最终质量。 RAG 虽能减少幻觉,但不能完全消除,只要有大模型参与就可能产生幻觉。 RAG 仍消耗大模型的 Token,最终需大模型处理检索结果生成通顺回答。 未来,将研究分享更多基于深度学习的文档解析方法,以更全面理解 RAG 质量和文档解析质量的关系。同时,前沿模型研发团队力争做到吞吐量、速度和准确度的最佳平衡。
2025-03-03
基础搭建的知识库效果很差,模型答案的幻觉很严重,我应该怎么改进?(Deepseek调用api接入本地faiss的rag库)
以下是一些改进基础搭建的知识库效果、减轻模型答案幻觉问题的建议: 1. 更换大模型:例如从 ChatGLM26B 替换成 baichuan213b,针对您的场景,后者的性能可能提升一倍左右。 2. 更换 embedding 模型:将 embedding 模型从 LangChain Chatchat 默认的 m3ebase 替换为 bgelargezh,后者可能更优。 3. 测试不同 Top k 的值:比较 Top 5、Top 10、Top 15 的结果,发现 Top 10 时效果可能最优。 4. 对文档名称进行处理:人工对文件进行重命名,上传相同文件构建知识库,同时在构建知识库时勾选【开启中文标题加强】选项,虽然重命名文件对结果的提升效果不明显,但勾选该选项后,回答的无关信息可能减少,效果有所提升。 RAG(RetrievalAugmented Generation)即检索增强生成,由检索器和生成器两部分组成。检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息制作精确连贯的答案,适合处理需要广泛知识的任务。 在大模型中,向量可想象成空间中的点位,每个词或短语对应一个点。系统通过查看词在虚拟空间中点的位置,寻找直线距离最近的点来检索语义上接近的词语或信息。理解向量后,当收到一个对话时,RAG 的完整工作流程为:检索器从外部知识中检索相关信息,生成器利用这些信息生成答案。 要优化幻觉问题和提高准确性,需要了解从“问题输入”到“得到回复”的过程,针对每个环节逐个调优,以达到最佳效果。
2025-02-27
anythingLLM和RAG Flow哪个部署更容易
RAG Flow 和 LLM 的部署难易程度如下: RAG Flow: 公网 MaaS:通常只需要一个 API key 即可对接,默认提供了通义千问。比较特殊的是 OpenAI 的接口上提供了修改 endpoint,也就是支持中间商。 本地部署:目前仅支持 Xinference 和 Ollama 方式部署。但是实际上只要是 API 接口一致,对接方式一致都可以用该方式对接。此处基础 Url 只需要写到 v1 为止,不需要写 embeddings 的二级接口。添加模型后需要在“系统模型配置”中设置,方能让模型生效。 LLM:关于 LLM 的部署难易程度,上述内容中未给出直接对比信息。但 Dify.AI 作为一个开源的大规模语言模型应用开发平台,具有快速部署等特点,用户可以在 5 分钟内部署定制化的聊天机器人或 AI 助手。 综合来看,仅根据所提供的信息,难以确切判断 RAG Flow 和 LLM 哪个部署更容易,还需结合更多具体的技术细节和实际需求进行评估。
2025-02-27
企业建立私有大模型时候,采用什么工具进行RAG,高效实习企业知识文档、表格和pdf图纸的向量化
企业建立私有大模型进行 RAG 并实现企业知识文档、表格和 PDF 图纸向量化时,可参考以下工具和方法: 1. 本地部署资讯问答机器人: 导入依赖库,如 feedparse 用于解析 RSS 订阅源,ollama 用于在 Python 程序中跑大模型(使用前需确保 ollama 服务已开启并下载好模型)。 从订阅源获取内容,通过专门的文本拆分器将长文本拆分成较小的块,并附带相关元数据,最终合并成列表返回。 为文档内容生成向量,可使用文本向量模型 bgem3,从 hf 下载好模型后,假设放置在某个路径 /path/to/bgem3,通过函数利用 FAISS 创建高效的向量存储。 2. 开发:LangChain 应用开发指南 大模型的知识外挂 RAG 加载数据,根据数据源类型选择合适的数据加载器,如网页可使用 WebBaseLoader。 将文档对象分割成较小的对象,根据文本特点选择合适的文本分割器,如博客文章可用 RecursiveCharacterTextSplitter。 将文档对象转换为嵌入并存储到向量存储器中,根据嵌入质量和速度选择合适的文本嵌入器和向量存储器,如 OpenAI 的嵌入模型和 Chroma 的向量存储器。 创建检索器,使用向量存储器检索器,传递向量存储器对象和文本嵌入器对象作为参数创建检索器对象。 创建聊天模型,根据性能和成本选择合适的聊天模型,如 OpenAI 的 GPT3 模型。 以下是使用 LangChain 构建 RAG 应用的示例代码。
2025-02-27
智能RAG客服系统搭建
搭建智能 RAG 客服系统主要包括以下方面: 1. RAG 全貌概览: RAG 的流程分为离线数据处理和在线检索两个过程。 离线数据处理的目的是构建知识库,知识会按照某种格式及排列方式存储在其中等待使用。 在线检索是利用知识库和大模型进行查询的过程。 2. 应用场景: 以构建智能问答客服为例,了解 RAG 所有流程中的“What”与“Why”。 3. 客服系统的要求: 具备结构清晰、全面的 FAQ 库,覆盖常见问题并根据实际场景动态更新。 例如订票平台,可基于用户信息提前呈现可能遇到的问题及解答。 4. 企业客户实践案例: 内部业务助手:通过企业内部规章制度、部门结构、产品介绍等文档构建知识库,并借助 RAG 智能体实现内部知识问答功能。 5. RAG 提示工程: 在利用 RAG 架构构建智能问答系统时,“指代消解”是关键挑战之一,特别是在多轮对话场景中。 目前采用 Prompt 方法解决指代消解问题,会增加计算资源消耗和系统响应延迟,需权衡推理负荷、Token 消耗和问答准确性等因素,根据具体应用环境和需求做出合理选择。
2025-02-26
ragflow
RAGflow 能力拆解: 文档拆分方式: 通用模式:主要参考每个块的 token 数量,同时考虑语意完整性,切分段落点通常在句号或叹号等完整句子结束处。拆分结果和 langchain 的拆分大同小异。 Q&A 问答对:将左边内容加上“问题:”,右边内容加上“回答:”组成一个 block,数据清洗工作量大。 简历:解析容易失败,需要匹配关键词才能解析,建议官方给出简历模板。 手册:一整段文字提取,分割处在页面分页、段落分段处,块大小通常较大。 表格:拆分后每一行被当成一个块,第一行的表头插入到每一块头部。对没有特殊字符的表格信息处理较好,对图片内的公式做了 OCR 检测。 数据清洗:RAGflow 提供分段后的数据处理,可自行添加、修改数据或为数据加标签。测试发现,RAGflow 召回会同时使用向量相似度和关键词相似度并加权得到混合相似度,关键词相似度不仅匹配文本段内容还匹配关键词标签内容,单个实体在关键词中出现即为 100%。但需注意,检索获得的内容块需同时包含“问题信息”和“答案信息”,大模型才能解答。此外,RAGflow 没提供对外接口,做聊天或其他应用时不方便。 大模型 RAG 问答行业最佳案例及微调、推理双阶段实现模式:基于模块化RAG 自定义 RAG Flow 原创作者为刘焕勇,发表于 2024 年 1 月 29 日北京。在上一篇文章中介绍了模块化RAG 的相关工作,本文将从三个方面深入探讨 RAG Flow 的设计思路,分别是典型的 RAG Flow 模式、特定的 RAG 流实现以及最佳的行业案例。在典型的 RAG Flow 模式方面,将介绍 3 种微调阶段模式和 4 种推理阶段模式。
2025-02-26