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

RAG

Answer

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

大模型需要 RAG 进行检索优化的原因在于其存在一些缺点:

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

RAG 的优点包括:

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

RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt 中,提交给大模型,让大模型的回答充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统。RAG 由检索器和生成器两部分组成,检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息制作精确和连贯的答案,非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。

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模型从大规模的文档集合中检索相关的文档,然后生成回答。

【AI+知识库】商业化问答场景,让AI回复更准确,一篇专为所有“小白”讲透RAG的实例教程(上篇)

其中,她是陈美嘉,这里是人设中的设定。吵架的经过是知识库中的内容。在我提问了之后,大模型去知识库里找到了相关内容,然后回复了我。这就是一个简单的正确回复的demo示例。然而,我们会发现,有时候她的回答会十分不准确。图二明显回答的牛头不对马嘴。图三是知识库截图,其中是有“一菲为美嘉找了一份助教工作”的内容的。但是回答这个问题时,AI并没有根据正确的知识库内容回答。这,就是基于知识库问答中的一个非常常见的错误场景。在其他情况下,甚至有可能出现报价错误、胡编乱造等等。这在严肃场景中,是不能接受的出错。现在应该能够直观的理解,为什么需要让大模型根据知识库回答的更加准确、更符合我们的要求。在AI领域中,优化AI更准确回答问题的过程,有一个更加专业的术语,叫做RAG。接下来,咱们进入正题,一步一步探索,如何优化回答。二、基础概念如果我们要优化幻觉问题和提高准确性,就务必要了解清楚从“问题输入”--“得到回复”,这个过程中,究竟发生了什么。然后针对每一个环节,逐个调优,以达到效果最佳化。因此,我们先深入其中了解问答全貌。[heading3]1、RAG介绍[content]RAG(Retrieval-Augmented Generation),即检索增强生成,是一种结合信息检索和文本生成能力的技术,它由两部分组成:一个“检索器”和一个“生成器”。检索器从外部知识中快速找到与问题相关的信息,生成器则利用这些信息来制作精确和连贯的答案。这种结合使得RAG非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。

Others are asking
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
RAG
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构。 大模型需要 RAG 进行检索优化的原因在于其存在一些缺点: 1. 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。 2. 知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. 输出难以解释和验证,存在内容黑盒、不可控以及受幻觉问题干扰的情况。 4. 容易泄露隐私训练数据。 5. 规模大,训练和运行成本高。 RAG 的优点包括: 1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。 2. 数据库的数据更新敏捷,可解释且对原有知识无影响。 3. 数据库内容明确、结构化,加上模型的理解能力,能降低大模型输出出错的可能。 4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型的训练成本,新知识存储在数据库即可,无需频繁更新模型。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt 中,提交给大模型,此时大模型的回答会充分考虑到“包含答案的内容”。其最常见应用场景为知识问答系统,用户提出问题,RAG 模型从大规模的文档集合中检索相关的文档,然后生成回答。 RAG 由一个“检索器”和一个“生成器”组成,检索器从外部知识中快速找到与问题相关的信息,生成器则利用这些信息来制作精确和连贯的答案,非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。
2025-01-25
rag的召回策略
RAG(检索增强生成)的召回策略主要包括以下方面: 1. 检索是 RAG 框架的核心组件之一,其质量和效率对系统性能至关重要。 检索策略:需确定何时进行检索及如何选择要检索的信息,可根据任务和上下文调整。 检索粒度:能以不同粒度进行,选择取决于任务要求和数据结构。 检索方法:包括基于关键字、实体检索、自然语言查询和知识图检索等,各有适用情境和优势。 检索效率:在实时应用中,优化检索过程以降低延迟和资源消耗是重要任务。 外部数据源:可从多种外部数据源检索,选择合适的数据源对获取准确丰富信息很关键。 2. 随着 RAG 的发展,出现了自适应的检索(也称作主动检索),其与 LLM Agent 核心思想相似。 RAG 系统可主动判断检索时机和结束流程,输出最终结果。 根据判断依据,可分为 Promptbase 和 Tuningbase 两种方式。 Promptbase 方式通过 Prompt Engineering 让 LLM 控制流程,如 FLARE 案例。 Tuningbase 方式对 LLM 微调使其生成特殊 token 来触发检索或生成,如 SelfRAG 案例。 3. 在 RAG 系统开发中,为解决文档整合限制等问题,可采取以下措施: 调整检索策略:LlamaIndex 提供多种从基础到高级的检索策略,如基础检索、高级检索与搜索、自动检索、知识图谱检索、组合/层级检索等,以适应不同需求和场景,提高检索精确度和有效性。 微调嵌入技术:对开源嵌入模型进行微调是提高检索准确度的有效手段,LlamaIndex 提供了详细的微调指南和示例代码片段。
2025-01-23
RAG是什么
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构。 其旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。通过检索的模式,为大语言模型的生成提供帮助,使大模型生成的答案更符合要求。 大模型需要 RAG 进行检索优化的原因在于其存在一些缺点: 1. 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。 2. 知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. 输出难以解释和验证,存在内容黑盒、不可控及受幻觉干扰等问题。 4. 容易泄露隐私训练数据。 5. 规模大,训练和运行成本高。 而 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 会通过问题和检索出来的提示一起来生成更加合理的答案。
2025-01-21