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

RAG

Answer

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

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

RAG 会接受输入并检索相关支撑文档,给出来源(如维基百科),这些文档作为上下文与原始提示词组合给文本生成器得到最终输出,能适应事实随时间变化,让语言模型获取最新信息并生成可靠输出。

大语言模型(LLM)存在一些缺点,如无法记住所有知识(尤其是长尾知识)、知识容易过时且不好更新、输出难以解释和验证、容易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有以下优点:

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

在 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客服系统搭建
搭建智能 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
基于大模型的RAG应用开发与优化
基于大模型的 RAG 应用开发与优化具有以下特点: 优势: 1. 灵活性:可根据需求和数据源选择不同组件和参数,还能使用自定义组件,只要遵循 LangChain 的接口规范。 2. 可扩展性:能利用 LangChain 的云服务部署和运行应用,无需担心资源和性能限制,也能使用分布式计算功能加速应用。 3. 可视化:通过 LangSmith 可视化工作流程,查看输入输出及组件性能状态,还能用于调试和优化,发现解决问题和瓶颈。 应用场景: 1. 专业问答:构建医疗、法律或金融等专业领域的问答应用,从专业数据源检索信息帮助大模型回答问题。 2. 文本摘要:构建新闻或论文等的摘要应用,从多个数据源检索相关文本帮助大模型生成综合摘要。 3. 文本生成:构建诗歌、故事等生成应用,从不同数据源检索灵感帮助大模型生成更有趣和创意的文本。 调优实践: 1. 更换大模型:从 ChatGLM26B 替换成 baichuan213b,针对特定场景,后者性能提升一倍左右。 2. 更换 embedding 模型:将 embedding 模型从 LangChain Chatchat 默认的 m3ebase 替换为 bgelargezh,后者更优。 3. 测试不同 Top k 的值:比较 Top 5、Top 10、Top 15 的结果,发现 Top 10 时效果最优。 4. 对文档名称进行处理:人工重命名文件对结果提升不明显,但勾选【开启中文标题加强】选项后,回答的无关信息减少,效果有所提升。目前效果虽有提升,但仍未达到可用水平,后续将尝试其他调优策略。
2025-02-25
rag
RAG(RetrievalAugmented Generation,检索增强生成)是一种结合检索和生成能力的自然语言处理架构。 通用语言模型通过微调可完成常见任务,而更复杂和知识密集型任务可基于语言模型构建系统,访问外部知识源来完成,RAG 正是为此引入的方法。它把信息检索组件和文本生成模型结合,能微调且内部知识修改高效,无需重新训练整个模型。 RAG 会接受输入并检索相关支撑文档,给出来源,与原始提示词组合后送给文本生成器得到输出,适应事实随时间变化的情况,让语言模型获取最新信息并生成可靠输出。 大语言模型(LLM)存在诸多缺点,如无法记住所有知识尤其是长尾知识、知识易过时且不好更新、输出难以解释和验证、易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有数据库存储和更新稳定、数据更新敏捷且不影响原有知识、降低大模型输出出错可能、便于管控用户隐私数据、降低大模型训练成本等优点。 在 RAG 系统开发中存在 12 大痛点及相应的解决方案。
2025-02-25
RAG
RAG(RetrievalAugmented Generation,检索增强生成)是一种结合检索和生成能力的自然语言处理架构。 通用语言模型通过微调可完成常见任务,而更复杂和知识密集型任务可基于语言模型构建系统,访问外部知识源来实现。Meta AI 研究人员引入 RAG 来完成这类任务,它将信息检索组件和文本生成模型结合,可微调且内部知识修改高效,无需重新训练整个模型。 RAG 接受输入后会检索相关支撑文档并给出来源,与原始提示词组合后送给文本生成器得到最终输出,能适应事实随时间变化的情况,让语言模型获取最新信息并生成可靠输出。 LLM 存在一些缺点,如无法记住所有知识尤其是长尾知识、知识容易过时且不好更新、输出难以解释和验证、容易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有数据库存储和更新稳定、数据更新敏捷且可解释、降低大模型输出出错可能、便于管控用户隐私数据、降低大模型训练成本等优点。 在 RAG 系统开发中存在 12 大痛点及相应的解决方案。
2025-02-24
rag 模型微调
RAG(检索增强生成)模型微调相关知识如下: 通用语言模型通过微调可完成常见任务,如分析情绪和识别命名实体。对于更复杂和知识密集型任务,可基于语言模型构建系统并访问外部知识源。Meta AI 引入的 RAG 方法把信息检索组件和文本生成模型结合,可微调且内部知识修改高效,无需重新训练整个模型。 RAG 接受输入并检索相关支撑文档,给出来源,与输入原始提示词组合后送给文本生成器得到输出,能适应事实变化,获取最新信息并生成可靠输出。 通用的 RAG 微调方法如 Lewis 等人(2021)提出的,使用预训练的 seq2seq 作为参数记忆,用维基百科的密集向量索引作为非参数记忆。 在微调阶段: 检索器微调的常用方法包括直接微调、添加可训练的 Adapter 模块、LSR、LLM Reward RL。 生成器微调的主要方法包括直接微调、GPT4 蒸馏、基于反馈的强化学习。 协同微调是在 RAG 系统中同时对检索器和生成器进行微调,如 RADIT 分别对 LLM 和检索器进行微调。 同时,RAG 提高了嵌入模型质量,传统 RAG 解决方案中的问题也得到解决。
2025-02-24