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

什么是RAG

Answer

RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构,旨在为大语言模型(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
ragflow
RAGflow 的能力拆解包括以下方面: 文档拆分方式: 通用模式:主要参考每个块的 token 数量,同时考虑语意完整性,切分段落点通常在句号或叹号等完整句子结束处,拆分结果和 langchain 大同小异。 Q&A 问答对:将左边内容加上“问题:”,右边内容加上“回答:”,数据清洗工作量大。 简历:格式不可控,解析易失败,建议官方给出模板。 手册:一整段文字提取,分割处在页面分页、段落分段处,块大小通常较大。 表格:拆分后每一行被当成一个块,第一行表头插入到每一块头部。 数据清洗:RAGflow 提供分段后的数据处理,可自行添加、修改数据及添加标签。测试中添加特定术语和数据并进行召回测试,发现数据正确召回但大模型可能因上下文问题无法匹配。结论包括:RAGflow 召回同时使用向量相似度和关键词相似度并加权得到混合相似度;关键词相似度不仅匹配文本段内容还匹配标签内容;关键词相似度单个实体出现即为 100%;检索内容需同时包含“问题信息”和“答案信息”大模型才能解答;RAGflow 未提供对外接口,应用不便。 此外,还有关于大模型 RAG 问答行业最佳案例及微调、推理双阶段实现模式的相关内容,如在模块化 RAG 范式下探讨 RAG Flow 的设计思路,包括典型的 RAG Flow 模式、特定的 RAG 流实现以及最佳的行业案例,在典型的 RAG Flow 模式方面介绍了微调阶段模式和推理阶段模式等。
2025-03-18
RAG的优化思路
RAG(RetrievalAugmented Generation,检索增强生成)是一种结合检索和生成能力的自然语言处理架构,旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。 LLM 需要 RAG 进行检索优化的原因在于其存在一些缺点: 1. LLM 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。 2. LLM 的知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. LLM 的输出难以解释和验证,存在黑盒不可控以及受幻觉等问题干扰的情况。 4. LLM 容易泄露隐私训练数据。 5. LLM 规模大,训练和运行成本高。 RAG 具有以下优点: 1. 数据库对数据的存储和更新稳定,不存在学不会的风险。 2. 数据库的数据更新敏捷,可解释且不影响原有知识。 3. 数据库内容明确、结构化,加上模型的理解能力,能降低大模型输出出错的可能。 4. 知识库存储用户数据便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型的训练成本。 在优化 RAG 性能方面,对于向量化基本平权的情况,可引入来源机制进行改进,对向量化的数据进行综合评分,如相似度置信度等,然后再进行 rebank。特别是对于私有化数据,业务方清楚数据的置信度,有优化空间。
2025-03-18
我想知道如何用dify搭建rag工作流
要使用 Dify 搭建 RAG 工作流,首先需要在“工程化框架”选择部分了解 Dify 。然后使用 Dify 推出的“工作流”功能将流程设计和提示词进行落地。具体来说,要建立整体工作流程,但此流程可能缺少知识检索环节。您可以通过延申阅读获取更多信息:Dify——工作流:https://docs.dify.ai/v/zhhans/guides/workflow/introduce 。另外,还有案例提到让 Manus 创建一个需要上传文件的 Dify 工作流,如根据上传的多篇文章写一个脱口秀段子,并制作美观、使用简便的网页来使用这个工作流,最后将此工作流的 api 接入进去,各功能与网页 UI 按钮一一对应,直到上线部署可供使用。
2025-03-18
RAG
RAG(RetrievalAugmented Generation,检索增强生成)是一种结合检索和生成能力的自然语言处理架构。 通用语言模型通过微调可完成常见任务,而更复杂和知识密集型任务可基于语言模型构建系统,访问外部知识源来实现。Meta AI 研究人员引入 RAG 来完成这类任务,它把信息检索组件和文本生成模型结合,可微调且内部知识修改高效,无需重新训练整个模型。 RAG 接受输入并检索相关支撑文档,给出来源,与原始提示词组合后送给文本生成器得到输出,能适应事实变化,让语言模型获取最新信息并生成可靠输出。 LLM(大语言模型)存在一些缺点,如无法记住所有知识尤其是长尾知识、知识容易过时且不好更新、输出难以解释和验证、容易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有数据库存储和更新稳定、数据更新敏捷且不影响原有知识、降低大模型输出出错可能、便于管控用户隐私数据、降低大模型训练成本等优点。 在 RAG 系统开发中存在 12 个主要难题及相应的解决方案。
2025-03-17
作为一个产品经理,我现在要设计一个企业内的销售培训智能体,我手里有产品知识、销售基础知识,我该怎么设计,是只做rag还是做多智能体协同?
以下是为您设计企业内销售培训智能体的一些建议: 首先,了解多智能体模式的设置。它包括全局设置和多个代理之间的编排协调两个核心部分。全局设置涵盖角色设定与回复逻辑、记忆管理以及对话体验等,其中人物设定与回复逻辑应侧重于角色塑造。在智能体的交互流程设计上,要形成完整的互动链条,当用户意图未满足跳转条件时,保持与当前智能体的沟通。设计多轮协作的智能体时,应将其交互设计为闭环结构,以确保用户能自由切换。 其次,动手实践制作智能体。对于 Chat GPT 版本,可按以下步骤:点击“浏览 GPTs”按钮,点击“Create”按钮创建,使用自然语言对话或手工设置进行具体配置,然后调试并发布。对于 Chat GLM 版本,点击“创建智能体”按钮,输入智能体描述,可粘贴准备好的提示词模板,其配置可自动生成,可根据需求调整并上传本地文件作为知识库。 然后,考虑多智能体协同的概念。在处理复杂任务时,单智能体可能面临提示词修改和逻辑不清晰的问题。多智能体协作如吴恩达所举例,每个智能体被赋予不同身份,互相合作对话,能模拟现实工作场景,成为复杂系统,但可能存在效率不高的情况。 最后,您可以根据实际情况选择是采用 RAG 还是多智能体协同。如果任务相对简单,RAG 可能足够;若任务复杂,涉及多个环节和角色的协作,多智能体协同可能更合适。您还可以通过具体的例子,如旅游场景中负责景点推荐、路线规划和食宿安排的三个智能体,来更好地理解和设计。
2025-03-16
什么是rag?
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构,旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。 大模型存在一些缺点,如无法记住所有知识(尤其是长尾知识)、知识容易过时且不好更新、输出难以解释和验证、容易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有诸多优点: 1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。 2. 数据库的数据更新敏捷,增删改查可解释,且对原有知识无影响。 3. 数据库内容明确、结构化,加上模型的理解能力,能降低大模型输出出错的可能。 4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型的训练成本。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统。 一个 RAG 的应用可抽象为 5 个过程: 1. 文档加载:从多种不同来源加载文档。 2. 文本分割:把文档切分为指定大小的块。 3. 存储:包括将切分好的文档块进行嵌入转换成向量的形式,以及将 Embedding 后的向量数据存储到向量数据库。 4. 检索:通过某种检索算法找到与输入问题相似的嵌入片。 5. 输出:把问题以及检索出来的嵌入片一起提交给 LLM,LLM 会通过问题和检索出来的提示生成更合理的答案。
2025-03-14