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的资料
以下是为您推荐的学习 RAG(RetrievalAugmented Generation,检索增强生成)的资料: 1. 《RetrievalAugmented Generation for Large Language Models:A Survey》(https://arxiv.org/pdf/2312.10997.pdf),该资料对 RAG 进行了较为全面的介绍和分析。 2. 关于新知识的学习,您可以参考“胎教级教程:万字长文带你理解 RAG 全流程”。其中提到可以通过 Claude 帮助了解细节概念,然后再通过 Coze 搭建 Demo 来实践学习。还不知道 Coze 是什么的同学可以看公开分享: 。 3. 了解“RAG 是什么?”:RAG 是一种结合检索和生成能力的自然语言处理架构,旨在为大语言模型提供额外的、来自外部知识源的信息。通过检索模式为大语言模型的生成提供帮助,使生成的答案更符合要求。同时,还介绍了大模型存在的缺点以及 RAG 的优点,如数据库对数据存储和更新稳定、敏捷、可解释等。 希望这些资料对您学习 RAG 有所帮助。
2025-03-25
什么是ai中的RAG
RAG 是检索增强生成(RetrievalAugmented Generation)的缩写,是一种结合了检索模型和生成模型的技术。其核心目的是通过某种途径把知识告诉给 AI 大模型,让大模型“知道”我们的私有知识,变得越来越“懂”我们。 RAG 的核心流程是:根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。 RAG 的最常见应用场景是知识问答系统,用户提出问题,RAG 模型从大规模的文档集合中检索相关的文档,然后生成回答。 RAG 的基本流程如下: 1. 首先,给定一个用户的输入,例如一个问题或一个话题,RAG 会从一个数据源中检索出与之相关的文本片段,例如网页、文档或数据库记录。这些文本片段称为上下文(context)。 2. 然后,RAG 会将用户的输入和检索到的上下文拼接成一个完整的输入,传递给一个大模型,例如 GPT。这个输入通常会包含一些提示(prompt),指导模型如何生成期望的输出,例如一个答案或一个摘要。 3. 最后,RAG 会从大模型的输出中提取或格式化所需的信息,返回给用户。
2025-03-23
RAG技术是什么,你找到了什么文档
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合了检索和生成的技术。 其在多个基准测试中表现出色,如在 Natural Questions、WebQuestions 和 CuratedTrec 等中。用 MSMARCO 和 Jeopardy 问题进行测试时,生成的答案更符合事实、具体且多样,FEVER 事实验证使用后也有更好结果。基于检索器的方法越来越流行,常与 ChatGPT 等流行 LLM 结合使用以提高能力和事实一致性。 RAG 是一种结合检索和生成的技术,能让大语言模型在生成文本时利用额外的数据源,提高生成质量和准确性。基本流程是:先根据用户输入从数据源检索相关文本片段作为上下文,然后将用户输入和上下文拼接传递给大语言模型,最后提取或格式化大语言模型的输出给用户。 大语言模型存在一些缺点,如无法记住所有知识尤其是长尾知识、知识容易过时且不好更新、输出难以解释和验证、容易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有诸多优点,如数据库对数据的存储和更新稳定,数据更新敏捷且可解释,能降低大模型输出出错可能,便于管控用户隐私数据,还能降低大模型训练成本。
2025-03-20
RAG 开发实战
以下是关于 RAG 开发实战的详细内容: RAG 是一种结合了检索和生成的技术,能让大模型在生成文本时利用额外的数据源,提高生成质量和准确性。其基本流程为:首先,用户给出输入,如问题或话题,RAG 从数据源中检索相关文本片段(称为上下文);然后,将用户输入和检索到的上下文拼接成完整输入传递给大模型(如 GPT),此输入通常包含提示,指导模型生成期望输出(如答案或摘要);最后,从大模型输出中提取或格式化所需信息返回给用户。 以餐饮生活助手为例进行 RAG 的 Langchain 代码实战,需完成以下步骤: 1. 定义餐饮数据源:将餐饮数据集转化为 Langchain 可识别和操作的数据源(如数据库、文件、API 等),注册到 Langchain 中,并提供统一接口和方法,方便 LLM 代理访问和查询。 2. 定义 LLM 的代理:通过 Langchain 的代理(Agent)实现,代理管理器可让开发者定义不同 LLM 代理及其功能逻辑,并提供统一接口和方法,方便用户与 LLM 代理交互。
2025-03-20
如何一步一步实现RAG 模型的私有化部署
要一步一步实现 RAG 模型的私有化部署,可参考以下步骤: 1. 导入依赖库:加载所需的库和模块,如 feedparse 用于解析 RSS 订阅源,ollama 用于在 python 程序中跑大模型,使用前需确保 ollama 服务已开启并下载好模型。 2. 从订阅源获取内容:通过特定函数从指定的 RSS 订阅 url 提取内容,若需接收多个 url 稍作改动即可。然后用专门的文本拆分器将长文本拆分成较小块,并附带相关元数据,如标题、发布日期和链接,最终合并成列表返回用于后续处理或提取。 3. 为文档内容生成向量:使用文本向量模型 bgem3,从 hf 下载好模型后放置在指定路径,通过函数利用 FAISS 创建高效的向量存储。 4. 关于 ollama: 支持多种大型语言模型,包括通义千问、Llama 2、Mistral 和 Gemma 等,适用于不同场景。 易于使用,适用于 macOS、Windows 和 Linux 系统,同时支持 cpu 和 gpu。 提供模型库,用户可从中下载不同模型,满足不同需求和硬件条件,可通过 https://ollama.com/library 查找。 支持自定义模型,可修改模型温度参数等。 提供 REST API 用于运行和管理模型及与其他应用集成。 社区贡献丰富,有多种集成插件和界面。 需先安装,访问 https://ollama.com/download/ 下载安装,安装后确保 ollama 后台服务已启动。 5. 基于用户问题从向量数据库中检索相关段落,根据设定阈值过滤,让模型参考上下文信息回答问题实现 RAG。 6. 创建网页 UI:通过 gradio 创建网页 UI 并进行评测。 总结: 1. 本文展示了如何使用 Langchain 和 Ollama 技术栈在本地部署资讯问答机器人,结合 RSSHub 处理和提供资讯。 2. 上下文数据质量和大模型的性能决定 RAG 系统性能上限。
2025-03-20
RAG 模型的私有化部署
RAG 模型的私有化部署通常在商业化过程中被用于结合企业私有数据。在企业有特殊需求时,还可对模型进行微调以优化性能。基础模型负责提供推理提示,RAG 用于整合新知识,实现快速迭代和定制化信息检索。 构建有效的 RAG 系统需要考虑多个因素: 1. 数据安全性:若有需求,需进行私有化部署,并考虑硬件成本。 2. 数据集复杂度和数量级:复杂数据集带来高昂的文档清洗、解析和分割成本,大数据量级带来存储成本上升。 3. 回答质量要求:要求越高,需要越复杂的检索算法和更强大的 LLM,带来算力成本。 4. 数据更新频率:频繁更新可能需要高昂的维护成本。 此外,实现本地部署资讯问答机器人时,如 Langchain + Ollama + RSSHub 实现 RAG,需导入依赖库、从订阅源获取内容、为文档内容生成向量等步骤。
2025-03-20