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

RAG

Answer

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合检索和生成能力的自然语言处理架构。

通用语言模型通过微调可完成常见任务,而更复杂和知识密集型任务可基于语言模型构建系统,访问外部知识源来实现。Meta AI 引入 RAG 来完成这类任务,它把信息检索组件和文本生成模型结合,可微调且内部知识修改高效,无需重新训练整个模型。

RAG 接受输入并检索相关支撑文档,给出来源,与原始提示词组合后送给文本生成器得到输出,适应事实随时间变化的情况,让语言模型获取最新信息并生成可靠输出。

LLM 存在无法记住所有知识(尤其是长尾知识)、知识易过时且不好更新、输出难以解释和验证、易泄露隐私训练数据、规模大导致训练和运行成本高等缺点,而 RAG 具有数据库存储和更新稳定、数据更新敏捷且可解释、降低大模型输出出错可能、便于管控用户隐私数据、降低大模型训练成本等优点。

在 RAG 系统开发中存在 12 大痛点及相应的解决方案。

Content generated by AI large model, please carefully verify (powered by aily)

References

检索增强生成 (RAG)

通用语言模型通过微调就可以完成几类常见任务,比如分析情绪和识别命名实体。这些任务不需要额外的背景知识就可以完成。要完成更复杂和知识密集型的任务,可以基于语言模型构建一个系统,访问外部知识源来做到。这样的实现与事实更加一性,生成的答案更可靠,还有助于缓解“幻觉”问题。Meta AI的研究人员引入了一种叫做[检索增强生成(Retrieval Augmented Generation,RAG)(opens in a new tab)](https://ai.facebook.com/blog/retrieval-augmented-generation-streamlining-the-creation-of-intelligent-natural-language-processing-models/)的方法来完成这类知识密集型的任务。RAG把一个信息检索组件和文本生成模型结合在一起。RAG可以微调,其内部知识的修改方式很高效,不需要对整个模型进行重新训练。RAG会接受输入并检索出一组相关/支撑的文档,并给出文档的来源(例如维基百科)。这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出。这样RAG更加适应事实会随时间变化的情况。这非常有用,因为LLM的参数化知识是静态的。RAG让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。Lewis等人(2021)提出一个通用的RAG微调方法。这种方法使用预训练的seq2seq作为参数记忆,用维基百科的密集向量索引作为非参数记忆(使通过神经网络预训练的检索器访问)。这种方法工作原理概况如下:图片援引自:[Lewis et el.(2021)(opens in a new tab)](https://arxiv.org/pdf/2005.11401.pdf)

问: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 系统开发中的 12 大痛点及解决方案

我们研究了在开发检索增强生成(RAG)系统时遇到的12个主要难题(包括原论文中的7个和我们额外发现的5个),并提出了针对每个难题的解决策略。以下图表改编自原始论文《开发检索增强生成系统时的七个常见挑战》中的图表,详见下方链接。图示改编自《开发检索增强生成系统时的七个常见挑战》。通过将这12个挑战及其建议的解决方法并列在一张表中,我们现在可以更直观地理解这些问题及其对策:论文《开发检索增强生成系统时的七个常见挑战》中提到的问题标有星号。尽管这份列表并不完整,但旨在向我们展示设计和实施RAG系统时面临的复杂挑战。我希望通过这份摘要,能够帮助读者更深入地理解这一领域,并激发开发更为强大且适用于生产环境的RAG应用的兴趣。祝编程愉快![heading3]

Others are asking
作为一个产品经理,我现在要设计一个企业内的销售培训智能体,我手里有产品知识、销售基础知识,我该怎么设计,是只做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
RAG
RAG(RetrievalAugmented Generation,检索增强生成)是一种结合检索和生成能力的自然语言处理架构。 通用语言模型通过微调可完成常见任务,而更复杂和知识密集型任务可基于语言模型构建系统,访问外部知识源来实现。Meta AI 研究人员引入 RAG 来完成这类任务,它把信息检索组件和文本生成模型结合,可微调且内部知识修改高效,无需重新训练整个模型。 RAG 接受输入后检索相关/支撑文档,并给出来源,这些文档与原始提示词组合后送给文本生成器得到最终输出,能适应事实随时间变化的情况,让语言模型获取最新信息并生成可靠输出。 LLM(大语言模型)存在一些缺点,如无法记住所有知识(尤其是长尾知识)、知识容易过时且不好更新、输出难以解释和验证、容易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有以下优点:数据库对数据的存储和更新稳定,无学习风险;数据更新敏捷,可解释且不影响原有知识;降低大模型输出出错可能;便于管控用户隐私数据;降低大模型训练成本。 在 RAG 系统开发中存在 12 大痛点及相应的解决方案。
2025-03-13
请帮我推荐优化大模型+知识库的提示词技巧,重点是解决将知识库配置给大模型做RAG后,召回率不高或者不遵循指令。
以下是关于优化大模型+知识库的提示词技巧,以解决将知识库配置给大模型做 RAG 后召回率不高或者不遵循指令的问题: 首先,了解 LLM 应用性能优化的推荐路径: 1. 从 prompt 工程开始把 LLM 应用快速跑起来。 2. 若遇到表现性能不足等问题,如结构化提示词占用上下文过长,可尝试精简提示词长度;若指令遵循度不足,则加强指令约束。 3. 若提示工程无法满足要求,分析问题,若缺失知识,先简单做知识库 RAG。 4. RAG 之后若想让模型表现更收敛更稳定,尝试微调模型。 5. 微调模型后,若模型表现变好,使用更多高级 RAG 技术,构造输入输出样本,进一步用于微调模型,构建正向迭代循环。 需要注意的是,该路径有个隐藏前提:该 LLM 应用依赖外部知识,需要 RAG。若不需要外部知识,则不需要使用 RAG,可以直接进入 prompt 工程与微调的正向迭代循环。 对于 RAG 流程中的检索有用信息部分,有以下改进策略: 1. 优化索引: 按照子部分索引:将文本块再拆分为较小的文本(例如单句),然后对这些小块进行多次索引。适用于有多个主题、有冲突信息的复杂长文本信息,确保与查询相关的上下文。 按照文本框可以回答的问题索引:让 LLM 生成与拆分的文本块相关的假设性问题,并将这些问题用于索引,适用于用户没有提出非常明确的问题,减少模糊性。 按照文本块的摘要进行索引:适用于文本框中有多余信息或者与用户查询无关细节的情况。 2. 重排 rerank:搜到相似信息后,选择策略,大部分场景下选择最相似的即可。 在从知识库中检索出内容后利用大模型进行总结时,有两点需要注意: 1. 优化 Prompt,但此处不展开,可参考相关文章。 2. 选择合适的大模型,考虑上下文长度、聪明度和生成速度。若回答场景是很长的文档,可能更关注上下文长度;大多数情况下,大模型越聪明,生成速度可能越慢。
2025-03-12
RAG构建本地知识库
RAG(Retrieval Augmented Generation,检索增强生成)是一种利用大模型能力搭建知识库的技术。其主要应用场景是当需要依靠不包含在大模型训练集中的数据时。 一个RAG的应用可以抽象为以下5个过程: 1. 文档加载:从多种不同来源加载文档,如PDF、SQL、代码等,LangChain提供了100多种不同的文档加载器。 2. 文本分割:文本分割器把Documents切分为指定大小的块,称为“文档块”或者“文档片”。 3. 存储:包括将切分好的文档块进行嵌入转换成向量的形式,以及将Embedding后的向量数据存储到向量数据库。 4. 检索:通过某种检索算法找到与输入问题相似的嵌入片。 5. 输出:把问题以及检索出来的嵌入片一起提交给LLM,LLM会通过问题和检索出来的提示一起来生成更加合理的答案。 简单来说,RAG就是大模型+知识库,从广泛的知识库数据中检索相关片段,然后由大模型根据这些内容生成答案。这种方式一方面可以减大模型的幻觉,提高其在特定任务上的表现,更加贴合实际应用的需求,另一方面可以明显提高搜索文档信息和生成回答的效率和体验。 LangChain是一个可以实现RAG的开源框架,它提供一些基础的组件和工具,如知识库管理、文本处理、模型加载等,允许开发人员将大语言模型(LLM)与外部数据源相结合,快速搭建自己的应用。 在实际项目中,比如此次的政府政策问答实践,由于政策的复杂性和传统智能问答产品的局限性,选择LangChainChatchat框架构建政策文档的本地知识库,实现大模型基于本地知识库内容生成回答,为用户提供政策问答和解读服务,节省查找和理解政策的时间。
2025-03-11
企业级rag系统开发框架
企业级 RAG 系统开发框架如下: 首先,通过数据预处理引擎(如 Unstructured)将企业无结构文件(如 PDF、幻灯片、文本文件)从数据孤岛(如 Google Drive 和 Notion)加载、转换为 LLM 可查询格式,并将这些文件“分块”成更小的文本块,以实现更精确的检索,然后作为向量嵌入和存储在数据库(如 Pinecone)中。 当用户提出问题时,系统会检索语义上最相关的上下文块,并将其折叠到“元提示”中,与检索到的信息一起馈送给 LLM。LLM 会从检索到的上下文中合成答复返回给用户。 在实际生产中,AI 应用程序具有更复杂的流程,包含多个检索步骤和“提示链”,不同类型的任务并行执行多个“提示链”,然后将结果综合在一起生成最终输出。 RAG 是检索增强生成(Retrieval Augmented Generation)的简称,概括起来是知识检索+内容生成,主要组成包括数据提取、embedding(向量化)、创建索引、检索、自动排序(Rerank)、LLM 归纳生成。其核心在于能否将内容检索得又快又准。 RAG 的优势在于: 大语言模型技术存在输出结果不可预测、知识有截止日期、无法满足实际业务需求等问题,而 RAG 可以让大模型从权威的、预先确定的知识来源中检索、组织相关信息,更好地控制大模型生成的文本输出,并且用户可以深入了解 LLM 如何生成最终的结果。 RAG 可以和微调结合使用,两者并不冲突。微调适用于模型需要复制特定的结构、样式或格式时,RAG 适用于模型需要回答特定的询问或解决特定的信息检索任务。但 RAG 不适合教模型来理解广泛的领域或学习新的语言、格式或样式。 同时,通用的基础大模型无法满足实际业务需求的原因包括: 知识的局限性:模型自身的知识源于训练数据,对于实时性、非公开或离线的数据无法获取。 幻觉问题:大模型基于数学概率的文字预测,存在提供虚假、过时、通用或低可信度信息的情况。 数据安全性:企业重视数据安全,不愿承担数据泄露风险将私域数据上传第三方平台训练。
2025-03-08