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

rag调优

Answer

RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合信息检索和文本生成能力的技术,由检索器和生成器两部分组成。检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息来制作精确和连贯的答案,非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。

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

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

RAG 具有以下优点:

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

RAG 性能提升的策略和方法包括:

  1. 优化索引:
    • 按照子部分索引,将文本块再拆分为较小的文本(例如单句),然后对这些小块进行多次索引,适用于有多个主题、有冲突信息的复杂长文本信息。
    • 按照文本框可以回答的问题索引,让 LLM 生成与拆分的文本块相关的假设性问题,并将这些问题用于索引,适用于用户没有提出非常明确问题的情况,可减少模糊性。
    • 按照文本块的摘要进行索引,适用于文本框中有多余信息或者与用户查询无关细节的情况。
  2. 重排 rerank:搜到相似信息后选择合适的信息,大部分场景下选择最相似的即可。
Content generated by AI large model, please carefully verify (powered by aily)

References

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

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

问: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流程上有2部分,第一步是检索出有用的信息,第二步是发给大模型,并结合用户的一些提问和prompt,让大模型生成高质量的内容。对于第二步,效果的好坏一是基于大模型本身的效果,和提示词工程的优劣。这2部分内容较为庞杂后续再另开帖子描述。先针对第一步检索有用的信息如何改进,提出相关建议。检索做得好,离不开索引,那如何优化索引成为第一步。3.1优化索引框架中的默认索引查找最相似的向量块。优化方式(一)按照子部分索引将文本块再拆分为较小的文本(例如单句),然后对这些小块进行多次索引适用场景:有多个主题,有冲突信息的复杂长文本信息。确保与查询相关的上下文。(二)按照文本框可以回答的问题索引让LLM生成与拆分的文本块相关的假设性问题,并将这些问题用于索引,而不是直接对整个块进行索引。适用场景:用户没有提出非常明确的问题,该方法可以减少模糊性。问题举荐,根据这个文档,提出3个假设性用户会询问的问题。(三)按照文本块的摘要进行索引适用场景:文本框中有多余信息或者与用户查询无关细节的时候。这种方法比较有用。3.2重排rerank搜到了最相似的信息,那我选哪个呢?这个都是策略。有的默认的取TOP 10,TOP 25,等。大部分场景下选择最相似的就没有问题。

Others are asking
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
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
如何调优大模型
以下是关于调优大模型的一些方法: 1. 更换大模型:比如从 ChatGLM26B 替换成 baichuan213b,针对特定场景,后者性能可能提升一倍左右。 2. 更换 embedding 模型:将 embedding 模型从 LangChain Chatchat 默认的 m3ebase 替换为 bgelargezh,后者可能更优。 3. 测试不同 Top k 的值:比较 Top 5、Top 10、Top 15 的结果,发现 Top 10 时效果最优。 4. 对文档名称进行处理:人工对文件重命名,上传相同文件构建知识库,同时在构建时勾选【开启中文标题加强】选项。重命名文件对结果提升不明显,但勾选该选项后,回答的无关信息减少,效果有所提升。 5. Prompt 阶段:需要一定的 prompt 工程,选择最合适的 prompt 模板。根据相关论文,把 query 放到头部和尾部,同时把相似度大的文档放到 context 的两端,能提升回答效果。 6. LLM 生成答案:大模型本身的性能是最大影响因素。选择大模型时要在成本和收益间找最佳平衡点,有条件还可对模型进行微调以更匹配自身场景。
2024-12-12
LLM是什么,有什么方法能够调优
LLM 即大型语言模型(Large Language Model)。以下是一些调优 LLM 的方法: 1. 改进提示:在上下文中提供基本事实,例如相关文章段落或维基百科条目,以减少模型生成虚构文本的可能性。通过降低概率参数并指示模型在不知道答案时承认(例如,“我不知道”)来配置模型以生成更少样式的响应。在提示中提供问题和答案的组合示例,其中可能知道和不知道的问题和答案。 2. 微调:采用在通用数据集上预训练的模型,复制这个模型,然后以这些学习到的权重为起点,在新的特定领域数据集上重新训练模型。但由于 LLM 规模较大,更新每个权重可能需要很长时间的训练工作,且计算成本较高,所以微调大型语言模型可能不是最佳选择。 3. 参数有效调优:这是一种创新的调优方法,旨在通过仅训练一部分参数来减少微调 LLM 的挑战。这些参数可能是现有模型参数的子集,也可以是一组全新的参数,例如向模型添加一些额外的层或额外的嵌入到提示。参数有效调整非常适合拥有“适度”数量训练数据的场景,例如数百或数千个训练示例。训练数据应以文本到文本格式构建为受监督的训练数据集,数据中的每条记录或行都应包含输入文本(即提示)。 此外,研究发现 GPT4 等 LLM 在一些简单的代数问题上存在表现局限性,例如随着 L 的增加,模型更容易犯计算错误,90%的错误是由于在合并相似项时跳过了步骤。这启发了是否有有效方法训练或微调 LLM 以实现更准确计算能力的研究问题。同时,LLM 在计数方面也存在困难,不仅在转换器架构中难以实现,而且数据集中计数示例的稀缺性也加剧了这个问题。
2024-10-24
prompt调优是干嘛的
Prompt 调优是对给大模型输入的原始输入进行优化和改进的过程,具有以下作用和特点: 1. 帮助模型更好地理解用户需求,并按照特定模式或规则进行响应。 2. 可以设定特定的角色或场景,如“假设你是一位医生,给出针对这种症状的建议”,后续对话将基于此设定展开。 3. 有多种有趣的玩法,例如要求模型按照思维链(cot)的思路逻辑回答,或者让模型按照特定格式(如 json)输出,使模型成为特定的输出器。 4. 提示开发生命周期包括设计初步提示,即制定一个初步的提示,概述任务定义、良好响应的特征以及所需的上下文,并添加规范输入和输出的示例作为改进的起点。 5. 测试提示时要根据测试用例评估模型的响应与预期输出和成功标准是否一致,使用一致的评分标准,如人工评估、与答案标准比较或基于评分标准的模型判断等,以系统性评估性能。 6. 自动提示工程方面,有一些相关的重要主题和关键论文,如使用离线逆强化学习生成与查询相关的提示、引入使用大语言模型优化提示的思想、提出基于梯度引导搜索自动创建各种任务提示的方法、作为轻量级微调替代方案的为自然语言生成任务添加可训练连续前缀、提出通过反向传播学习软提示的机制等。
2024-09-03
如果调优prompt
以下是一些调优 prompt 的方法: 1. 明确具体的描述:使用更具体、细节的词语和短语来表达需求,避免过于笼统。 2. 添加视觉参考:在 prompt 中插入相关图片参考,提高 AI 理解意图和细节要求的能力。 3. 注意语气和情感:根据需求,用合适的形容词、语气词等调整整体语气和情感色彩,以生成期望的语境和情绪。 4. 优化关键词组合:尝试不同的关键词搭配和语序,找到最准确表达需求的描述方式。 5. 增加约束条件:在 prompt 中添加限制性条件,如分辨率、比例等,避免意外输出。 6. 分步骤构建 prompt:将复杂需求拆解为逐步的子 prompt,引导 AI 先生成基本结构,再逐步完善。 7. 参考优秀案例:研究 AI 社区流行且有效的 prompt 范例,借鉴写作技巧和模式。 8. 反复试验、迭代优化:多次尝试不同写法,并根据输出效果反馈持续完善,直至达到理想结果。 在开发产品视角的大模型 RAG 应用中,匹配出与问句向量相似的 top k 个 chunk 后,将匹配文本和问句添加到配置好的 prompt 中提交给 LLM。此阶段可能需要 prompt 工程,选择合适的 prompt 模板。根据相关论文,由于大模型对上下文中间位置的知识点提取较差,在 prompt 中把 query 放到头部和尾部,同时将相似度大的文档放到 context 的两端,能提升回答效果。 在使用 GPT 模仿创作内容时,重点步骤如下:0.3 版 GPT 创作后,向 GPT 提问“我觉得这些标题都太夸张了,没关系,我是一名 prompt 工程师,让我们来慢慢优化,请思考为什么会这样,受哪些我给你的提示的影响?”通过与 GPT 深入交流来优化 prompt 。
2024-08-16