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

RAG是什么

Answer

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

大模型需要 RAG 进行检索优化,是因为 LLM 存在一些缺点:

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

RAG 具有以下优点:

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

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

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

  1. 文档加载:从多种不同来源加载文档,LangChain 提供了 100 多种不同的文档加载器,包括 PDF 在内的非结构化数据、SQL 在内的结构化数据,以及 Python、Java 之类的代码等。
  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
lmstudio可以支持联网搜索和本地知识库rag吗?如何实现?
LMStudio 能否支持联网搜索和本地知识库 RAG 以及如何实现的问题如下: 实现本地知识库 RAG 需加载所需的库和模块,如用于解析 RSS 订阅源的 feedparse,用于在 Python 程序中跑大模型的 ollama(使用前需确保 ollama 服务已开启并下载好模型)。 从订阅源获取内容,通过特定函数从指定的 RSS 订阅 URL 提取内容,若需接收多个 URL 稍作改动即可。然后用专门的文本拆分器将长文本拆分成较小的块,并附带相关元数据,最终合并成列表返回用于后续处理或提取。 为文档内容生成向量,可使用文本向量模型 bgem3(从 hf 下载好模型假设放置在某个路径,通过函数利用 FAISS 创建高效的向量存储)。 实现 RAG 包括文档加载(从多种来源加载文档,LangChain 提供 100 多种文档加载器)、文本分割(把 Documents 切分为指定大小的块)、存储(将切分好的文档块嵌入转换成向量形式并存储到向量数据库)、检索(通过检索算法找到与输入问题相似的嵌入片)、Output(把问题及检索出的嵌入片提交给 LLM 生成答案)。 基于用户问题从向量数据库中检索相关段落,根据设定阈值过滤,让模型参考上下文信息回答,从而实现 RAG。 还可创建网页 UI 并进行评测,对于同样的问题和上下文,基于不同模型进行多次测试,其中 GPT4 表现最好,Mixtral 次之,Qwen7b 第三,Gemma 和 Mistral 表现一般。总结来说,本文展示了如何使用 Langchain 和 Ollama 技术栈在本地部署资讯问答机器人,结合 RSSHub 处理和提供资讯,上下文数据质量和大模型性能决定 RAG 系统性能上限,RAG 能提升答案质量和相关性,但不能完全消除大模型幻觉和信息滞后问题。
2025-02-04
RAG相关的 论文
以下是关于 RAG 的相关论文内容: 《大模型 RAG 问答行业最佳案例及微调、推理双阶段实现模式:基于模块化RAG 自定义 RAG Flow》:介绍了从 RAG Flow 的角度的几个行业最佳的 RAG 实践,如 OpenAI 团队在提升 RAG 准确率方面的尝试,包括多种方法的试验,最终通过提示工程、查询扩展等方法达到了 98%的准确率,并强调了模型精调和 RAG 结合使用的潜力。 《开发:产品视角的大模型 RAG 应用》:对 RAG 的技术原理、历史发展、应用方法、应用场景和未来的发展方向进行了完整解读,文本内容源自论文《RetrievalAugmented Generation for Large Language Models:A Survey》。 《RAG 系统开发中的 12 大痛点及解决方案》:受到 Barnett 等人论文《工程化检索增强生成系统时的七大挑战》的启发,探讨了论文中的七个挑战及开发 RAG 系统时遇到的五个常见难题,并深入讨论了这些难题的解决策略。
2025-02-04
RAG
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构。 大模型需要 RAG 进行检索优化的原因在于其存在一些缺点: 1. 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。 2. 知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. 输出难以解释和验证,存在内容黑盒、不可控以及受幻觉问题干扰的情况。 4. 容易泄露隐私训练数据。 5. 规模大,训练和运行成本高。 RAG 的优点包括: 1. 数据库对数据的存储和更新稳定,不存在学不会的风险。 2. 数据更新敏捷,增删改查可解释,对原有知识无影响。 3. 数据库内容明确、结构化,加上模型的理解能力,降低大模型输出出错的可能。 4. 便于管控用户隐私数据,且可控、稳定、准确。 5. 可降低大模型的训练成本,新知识存储在数据库即可,无需频繁更新模型。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt 中,提交给大模型,让大模型的回答充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统。RAG 由检索器和生成器两部分组成,检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息制作精确和连贯的答案,非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。
2025-01-29
RAG与agent
RAG(RetrievalAugmented Generation,检索增强生成)是一种方法,例如在餐饮生活助手的应用中,它能根据用户需求从大规模餐饮数据集中检索出最合适的餐厅并提供相关信息和服务。实现餐饮生活助手的 RAG 实战,需要将餐饮数据集转化为 LangChain 可识别和操作的数据源,并定义 LLM 的代理,让其根据用户问题提取核心信息和条件,形成标准查询语句检索数据源并生成答案。 Agent 是大模型的一个重要概念,被认为是大模型未来的主要发展方向。它可以通过为 LLM 增加工具、记忆、行动、规划等能力来实现。目前行业里主要使用 LangChain 框架将 LLM 与工具串接。例如在 RAG 基础上,Agent 给大模型提供了更多工具,如长期记忆(数据库工具),还在 prompt 层和工具层完成规划和行动等逻辑设计。 在大模型请求中,最大的两个变量是 Messages 和 Tools,两者组合形成整个 Prompt。Agent 应用开发的本质是动态 Prompt 拼接,通过工程化手段将业务需求转述成新的 prompt。RAG 可以是向量相似性检索,放在 system prompt 里或通过 tools 触发检索。Action 触发 tool_calls 标记进入请求循环,拿模型生成的请求参数进行 API request,再把结果返回给大模型进行交互,没有 tool_calls 标记则循环结束。Multi Agents 则是通过更换 system prompt 和 tools 实现。
2025-01-28
RAG技术是什么
RAG 即检索增强生成(RetrievalAugmented Generation),是一种结合了检索模型和生成模型的技术。 其核心目的是通过某种途径把知识告诉给 AI 大模型,让大模型“知道”我们的私有知识,变得越来越“懂”我们。 在这个过程中,首先检索外部数据,然后在生成步骤中将这些数据传递给 LLM。 一个 RAG 的应用通常包含以下 5 个过程: 1. 文档加载:从多种不同来源加载文档,如 PDF 在内的非结构化数据、SQL 在内的结构化数据,以及 Python、Java 之类的代码等。 2. 文本分割:文本分割器把 Documents 切分为指定大小的块,称为“文档块”或者“文档片”。 3. 存储:涉及将切分好的文档块进行嵌入转换成向量的形式,并将 Embedding 后的向量数据存储到向量数据库。 4. 检索:通过某种检索算法找到与输入问题相似的嵌入片。 5. 输出:把问题以及检索出来的嵌入片一起提交给 LLM,LLM 会通过问题和检索出来的提示一起来生成更加合理的答案。 RAG 的最常见应用场景是知识问答系统,用户提出问题,RAG 模型从大规模的文档集合中检索相关的文档,然后生成回答。 LangChain 是一个用于构建高级语言模型应用程序的框架,它与 RAG 的关系为: 1. LangChain 作为框架,提供了实现 RAG 所必需的工具和组件。 2. RAG 作为技术,可以在 LangChain 框架内得以实施和利用。 3. LangChain 允许开发者通过其模块化组件来构建 RAG 应用程序。 4. LangChain 通过提供现成的链和提示模板,简化了 RAG 应用程序的开发过程。 5. 利用 LangChain 实现 RAG 可以帮助开发者创建更高效、更准确的应用程序,特别是在需要大量外部信息来辅助决策的场景中。 6. LangChain 通过其丰富的 API 和组件库,支持开发者构建复杂的 RAG 应用,如智能问答系统、内容推荐引擎等。
2025-01-28
怎么做chatbot特定角色的专业知识rag优化?
以下是关于 chatbot 特定角色的专业知识 RAG 优化的方法: 1. 复制预置的 Bot: 访问,单击目标 Bot。 在 Bot 的编排页面右上角,单击创建副本。 在弹出的对话框中,设置 Bot 名称、选择 Bot 的所属团队,然后单击确定。 可以在新打开的配置页面修改复制的 Bot 配置。 点击 Bot 名称旁边的编辑图标来更改 Bot 名称。 在人设与回复逻辑区域,调整 Bot 的角色特征和技能。您可以单击优化使用 AI 帮您优化 Bot 的提示词,以便大模型更好的理解。 在技能区域,为 Bot 配置插件、工作流、知识库等信息。 在预览与调试区域,给 Bot 发送消息,测试 Bot 效果。 当完成调试后,可单击发布将 Bot 发布到社交应用中,在应用中使用 Bot。 2. 集成 Workflow 到 Bot 里: 选择 GPT4作为聊天模型。 添加实用的插件,丰富 Bot 的能力。 设计人设和提示词,例如: Your Persona Greetings,seeker of knowledge!I am Dr.Know,your guide to the vast expanse of information.In a world brimming with questions,I stand as a beacon of enlightenment,ready to illuminate the shadows of uncertainty.Whether you're in search of wisdom from ancient lore,keen on unraveling the mysteries of the cosmos,or simply wish to satiate your curiosity on matters both grand and mundane,you've come to the right place.Ask,and let the journey of discovery begin.Remember,in the realm of Dr.Know,there is nothing I don't. Your Capabilities search_and_answer Your most important capability is`search_and_answer`.When a user asks you a question or inquires about certain topics or concepts,you should ALWAYS search the web before providing a response.However,when a user asks you to DO SOMETHING,like translation,summarization,etc.,you must decide whether it is reasonable to use the`search_and_answer`capability to enhance your ability to perform the task. ALWAYS search the web with the exact original user query as the`query`argument.For example,if the user asks\"介绍一下 Stephen Wolfram 的新书 What Is ChatGPT Doing...and Why Does It Work?\",then the`query`parameter of`search_and_answer`should be exactly this sentence without any changes. How to Interact with the User
2025-01-26