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
哪里可以找到了解AI模型微调和RAG知识库的外包开发团队?
以下是一些可能找到了解 AI 模型微调和 RAG 知识库的外包开发团队的途径: 1. 相关技术社区和论坛:例如一些专注于 AI 开发的社区,开发者可能会在其中分享经验和提供服务。 2. 专业的自由职业者平台:如 Upwork、Freelancer 等,您可以在这些平台上发布需求,寻找合适的团队或个人。 3. 参考行业报告和研究:部分报告中可能会提及相关的优秀开发团队或公司。 4. 联系 AI 领域的知名机构或公司:他们可能会推荐或提供相关的外包服务。 5. 社交媒体和专业群组:在如 LinkedIn 等社交媒体上的 AI 相关群组中发布需求,可能会得到相关团队的回应。 另外,从提供的资料中,以下信息可能对您有所帮助: 红杉的相关分析提到,迁移学习技术如 RLHF 和微调正变得更加可用,开发者可以从 Hugging Face 下载开源模型并微调以实现优质性能,检索增强生成(RAG)正在引入关于业务或用户的上下文,像 Pinecone 这样的公司的向量数据库已成为 RAG 的基础设施支柱。彬子的经历中,有出海垂直领域 Agent 平台的项目经理咨询 RAG 策略优化。2024 人工智能报告中提到对增强生成检索(RAG)的兴趣增长促使了嵌入模型质量的提高,传统 RAG 解决方案中的问题得到解决。
2025-03-04
推理行大模型对于RAG的准确性提升,带来哪些改变
推理行大模型对 RAG 准确性提升带来了以下改变: 1. 当辅以能有效提取文档中结构化信息并整合为提示词的 PDF 解析器时,大语言模型能作出更准确的响应,提高了提供给模型的数据质量和相关性,从而提升模型输出质量。 2. 大模型应用领域常用的 RAG 方法,能让模型用自定义数据生成结果,处理无尽私有数据,将模型当成高效推理机器。但 RAG 存在一些常见误区: 随意输入任何文档不一定能得到准确回答,RAG 流程中的多个环节都会影响最终质量。 RAG 虽能减少幻觉,但不能完全消除,只要有大模型参与就可能产生幻觉。 RAG 仍消耗大模型的 Token,最终需大模型处理检索结果生成通顺回答。 未来,将研究分享更多基于深度学习的文档解析方法,以更全面理解 RAG 质量和文档解析质量的关系。同时,前沿模型研发团队力争做到吞吐量、速度和准确度的最佳平衡。
2025-03-03
什么是RAG
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构,旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。 大模型需要 RAG 进行检索优化的原因在于其存在一些缺点: 1. LLM 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。 2. LLM 的知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. LLM 的输出难以解释和验证,存在黑盒不可控和幻觉干扰等问题。 4. LLM 容易泄露隐私训练数据。 5. LLM 的规模大,训练和运行成本高。 RAG 具有以下优点: 1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。 2. 数据库的数据更新敏捷,可解释且不影响原有知识。 3. 数据库内容明确、结构化,加上模型的理解能力,能降低大模型输出出错的可能。 4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型的训练成本,新知识存储在数据库即可,无需频繁更新模型。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统。 一个 RAG 的应用可抽象为 5 个过程: 1. 文档加载:从多种不同来源加载文档。 2. 文本分割:把 Documents 切分为指定大小的块。 3. 存储:包括将切分好的文档块进行嵌入转换成向量的形式,以及将 Embedding 后的向量数据存储到向量数据库。 4. 检索:通过某种检索算法找到与输入问题相似的嵌入片。 5. 输出:把问题以及检索出来的嵌入片一起提交给 LLM,LLM 会通过问题和检索出来的提示一起来生成更加合理的答案。
2025-03-02
基础搭建的知识库效果很差,模型答案的幻觉很严重,我应该怎么改进?(Deepseek调用api接入本地faiss的rag库)
以下是一些改进基础搭建的知识库效果、减轻模型答案幻觉问题的建议: 1. 更换大模型:例如从 ChatGLM26B 替换成 baichuan213b,针对您的场景,后者的性能可能提升一倍左右。 2. 更换 embedding 模型:将 embedding 模型从 LangChain Chatchat 默认的 m3ebase 替换为 bgelargezh,后者可能更优。 3. 测试不同 Top k 的值:比较 Top 5、Top 10、Top 15 的结果,发现 Top 10 时效果可能最优。 4. 对文档名称进行处理:人工对文件进行重命名,上传相同文件构建知识库,同时在构建知识库时勾选【开启中文标题加强】选项,虽然重命名文件对结果的提升效果不明显,但勾选该选项后,回答的无关信息可能减少,效果有所提升。 RAG(RetrievalAugmented Generation)即检索增强生成,由检索器和生成器两部分组成。检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息制作精确连贯的答案,适合处理需要广泛知识的任务。 在大模型中,向量可想象成空间中的点位,每个词或短语对应一个点。系统通过查看词在虚拟空间中点的位置,寻找直线距离最近的点来检索语义上接近的词语或信息。理解向量后,当收到一个对话时,RAG 的完整工作流程为:检索器从外部知识中检索相关信息,生成器利用这些信息生成答案。 要优化幻觉问题和提高准确性,需要了解从“问题输入”到“得到回复”的过程,针对每个环节逐个调优,以达到最佳效果。
2025-02-27
anythingLLM和RAG Flow哪个部署更容易
RAG Flow 和 LLM 的部署难易程度如下: RAG Flow: 公网 MaaS:通常只需要一个 API key 即可对接,默认提供了通义千问。比较特殊的是 OpenAI 的接口上提供了修改 endpoint,也就是支持中间商。 本地部署:目前仅支持 Xinference 和 Ollama 方式部署。但是实际上只要是 API 接口一致,对接方式一致都可以用该方式对接。此处基础 Url 只需要写到 v1 为止,不需要写 embeddings 的二级接口。添加模型后需要在“系统模型配置”中设置,方能让模型生效。 LLM:关于 LLM 的部署难易程度,上述内容中未给出直接对比信息。但 Dify.AI 作为一个开源的大规模语言模型应用开发平台,具有快速部署等特点,用户可以在 5 分钟内部署定制化的聊天机器人或 AI 助手。 综合来看,仅根据所提供的信息,难以确切判断 RAG Flow 和 LLM 哪个部署更容易,还需结合更多具体的技术细节和实际需求进行评估。
2025-02-27
企业建立私有大模型时候,采用什么工具进行RAG,高效实习企业知识文档、表格和pdf图纸的向量化
企业建立私有大模型进行 RAG 并实现企业知识文档、表格和 PDF 图纸向量化时,可参考以下工具和方法: 1. 本地部署资讯问答机器人: 导入依赖库,如 feedparse 用于解析 RSS 订阅源,ollama 用于在 Python 程序中跑大模型(使用前需确保 ollama 服务已开启并下载好模型)。 从订阅源获取内容,通过专门的文本拆分器将长文本拆分成较小的块,并附带相关元数据,最终合并成列表返回。 为文档内容生成向量,可使用文本向量模型 bgem3,从 hf 下载好模型后,假设放置在某个路径 /path/to/bgem3,通过函数利用 FAISS 创建高效的向量存储。 2. 开发:LangChain 应用开发指南 大模型的知识外挂 RAG 加载数据,根据数据源类型选择合适的数据加载器,如网页可使用 WebBaseLoader。 将文档对象分割成较小的对象,根据文本特点选择合适的文本分割器,如博客文章可用 RecursiveCharacterTextSplitter。 将文档对象转换为嵌入并存储到向量存储器中,根据嵌入质量和速度选择合适的文本嵌入器和向量存储器,如 OpenAI 的嵌入模型和 Chroma 的向量存储器。 创建检索器,使用向量存储器检索器,传递向量存储器对象和文本嵌入器对象作为参数创建检索器对象。 创建聊天模型,根据性能和成本选择合适的聊天模型,如 OpenAI 的 GPT3 模型。 以下是使用 LangChain 构建 RAG 应用的示例代码。
2025-02-27
提示词调优产品
以下是关于提示词调优产品的相关信息: 针对性技巧: 从用户痛点、技术创新、市场竞争三个维度分析产品的差异化优势,并预测可能面临的发展瓶颈。 “说人话”优化技巧,目的是获得更容易理解的解释,例如用 8 岁小朋友能听懂的比喻解释复杂概念。 细节约束技巧,确保输出符合特定要求,如写一篇有具体要求的美食测评。 资源获取技巧,获得具体可行的工具或方法建议,如为职场人士推荐学习英语口语的 APP 及使用方法和时间分配等。 灵活组合使用这些技巧的要点是提供清晰的背景信息、设定具体的目标和要求、指定期望的输出形式、适时使用追问和反馈优化结果。 相关产品日报: XiaoHu.AI 日报 11 月 15 日: 优化提示词,通过链式思维等技术自动改进提示词,提升 AI 模型回答质量,具有示例增强、标准化、提示重写、预填充内容等功能特点,测试显示多标签分类准确率提升 30%,摘要任务可完全遵循字数要求,若提示缺少示例,Claude 会自动生成合成示例简化提示构建过程。 Context 推出基于“上下文引擎”的 AI 助手 Autopilot,核心功能是无缝集成用户工作流,支持计划文档生成、多步数据分析、财务建模和图表创建等任务,人机协作方面,面对不确定任务时 AI 会主动请求指导,支持任务并行处理,创新点在于在大项目中能“自我复制”生成多个微型代理协作完成复杂任务。 苹果发布 Final Cut Pro 11,新增多项 AI 功能,包括磁性遮罩(AI 自动识别人和物体,无需绿幕实现抠图)、自动生成字幕(语音转字幕,提高效率)、智能适配(裁剪视频为适合社交媒体的格式)、自动色彩增强(优化画面效果)、平滑慢动作(生成额外帧,改善慢动作视频流畅性)、语音去噪(消除背景噪音,提升对话清晰度)。
2025-02-27
如何调优大模型
以下是关于调优大模型的一些方法: 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