一文带你了解大模型RAG

大模型相关目录

大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。

  1. RAGOnMedicalKG:大模型结合知识图谱的RAG实现
  2. DSPy:变革式大模型应用开发
  3. 最简明的Few-shot Prompt指南
  4. Semantic Kernel:微软大模型开发框架——LangChain 替代
  5. 对话大模型Prompt是否需要礼貌点?
  6. swift与Internvl下的多模态大模型分布式微调指南(附代码和数据)
  7. 多模态大模型Internvl-1.5-26B微调后部署及测试实录(附代码)
  8. 多模态大模型Internvl-2-26B的OCR赋能方案(附代码)
  9. miniconda+xinference的大模型推理部署指南
  10. Mem0:大模型最强赋能“有记忆的LLM”
  11. 再谈Agent:Dify智能体实现Txet2SQL
  12. Moe模式:或将是最好的大模型应用开发路径
  13. 一文带你了解大模型RAG


什么是RAG

在这里插入图片描述
简单来说,大模型RAG,即Retrieval-Augmented Generation,是一种结合了检索和生成能力的预训练语言模型。它由两部分组成:一个检索系统和一个生成模型。

为什么需要RAG

在这里插入图片描述
我们可以把大模型比做是一个超级专家,他熟悉人类各个领域的知识,但他也有自己的局限性,比如他不知道你个人的一些状况,因为这些信息是你私人的,不会在互联网上公开,所以他没有提前学习的机会。
当你想雇佣这个超级专家来充当你的家庭财务顾问时,需要允许他在接受你的提问时先翻看一下你的投资理财记录、家庭消费支出等数据。这样他才能根据你个人的实际情况提供专业的建议。
这就是 RAG 系统所做的事情:帮助大模型临时性地获得他所不具备的外部知识,允许它在回答问题之前先找答案。

我们很容易发现 RAG 系统中最核心是外部知识的检索环节。专家能不能向你提供专业的家庭财务建议,取决于能不能精确找到他需要的信息,如果他找到的不是投资理财记录,而是家庭减肥计划,那再厉害的专家都会无能为力。

嵌入与重排序

在这里插入图片描述

嵌入模型和重排模型是检索系统中的两个关键组成部分。
嵌入模型(Embedding Model)的主要作用是将输入查询和文档内容转换成高维空间中的向量表示,这些向量能够捕捉到查询和文档的语义信息。以下是嵌入模型的具体作用:
查询嵌入:将用户的查询转换为向量表示,这通常涉及到对查询文本进行编码,以便能够捕捉到查询的意图和语义。
文档嵌入:将文档集中的每个文档或文档片段转换为向量表示,这样每个文档都可以在高维空间中有一个位置,这个位置与查询的向量表示越接近,表示文档与查询的相关性越高。
相似度计算:通过计算查询嵌入与文档嵌入之间的相似度(例如,使用余弦相似度),嵌入模型能够帮助确定哪些文档与查询最相关。
重排模型(Re-ranker Model)的作用是在嵌入模型检索到的候选文档中进行进一步筛选和排序,以提高检索的准确性和相关性。以下是重排模型的具体作用:
细粒度排序:在嵌入模型初步检索出一组候选文档后,重排模型会对这些文档进行更细致的排序,确保最相关的文档排在最前面。
上下文理解:重排模型不仅考虑文档与查询的直接相关性,还会考虑文档之间的上下文关系,以及如何更好地与查询相结合。
误差校正:嵌入模型可能由于各种原因(如语义歧义、词汇差异等)产生误差,重排模型可以对这些误差进行校正,提升最终检索结果的准确性。
多样性优化:在某些情况下,重排模型还可以考虑检索结果的多样性,确保返回的文档片段覆盖不同的角度和信息。
通过嵌入模型和重排模型的协作,RAG模型能够更有效地从大量文档中检索出与输入查询最相关的内容,进而生成丰富、准确和多样化的文本。

RAG实现基本步骤

  • 上传文档
  • 从本地选择需要上传的文档
  • 分段与清洗,预览效果
  • 选择及配置索引和检索策略
  • 等待分段嵌入
  • 完成上传,可以在应用中使用了

其中嵌入模型应用于分段嵌入过程,重排模型应用于应用使用过程。

可以发现,除嵌入模型和重排模型外,RAG还涉及分段、清洗、应用召回的概念,我们继续介绍。

分段和清洗

分段:大语言模型存在有限的上下文窗口,通常需要将整段文本进行分段处理后,将与用户问题关联度最高的几个段落召回,即分段 TopK 召回模式。此外,在用户问题与文本分段进行语义匹配时,合适的分段大小将有助于匹配关联性最高的文本内容,减少信息噪音。

清洗:为了保证文本召回的效果,通常需要在将数据传入模型之前对其进行清理。例如,如果输出中存在不需要的字符或者空行,可能会影响问题回复的质量。

应用召回

信息匹配

检索设置
平台提供了 3 种检索方案:
向量检索,通过生成查询嵌入并查询与其向量表示最相似的文本分段。
全文检索,索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段。
混合检索,同时执行全文检索和向量检索,并附加重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果,需配置 Rerank 模型。
参数设置
TopK:用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。
Score 阈值:用于设置文本片段筛选的相似度阈值,即:只召回超过设置分数的文本片段。系统默认关闭该设置,即不会对召回的文本片段相似值过滤。
Rerank 模型:配置 Rerank 模型之后,在检索设置中打开“Rerank 模型”,系统会在语义检索后对已召回的文档结果再一次进行语义重排序,优化排序结果。设置 Rerank 模型后,TopK 和 Score 阈值设置仅在 Rerank 步骤生效。
在这里插入图片描述

召回模式

进入 上下文 – 参数设置 – 召回设置,可以选择知识库的召回模式。
N 选 1 召回,根据用户意图和知识库描述,由 LLM 自主判断选择最匹配的单个知识库来查询相关文本。
多路召回,根据用户意图同时匹配所有知识库,从多路知识库查询相关文本片段,经过重排序步骤,从多路查询结果中选择匹配用户问题的最佳结果,需配置 Rerank 模型 API。

N 选 1 召回模式

N 选 1 召回由 Function Call/ReAct 进行驱动,每一个关联的知识库作为工具函数,LLM 会自主选择与用户问题最匹配的 1 个知识库来进行查询,推理依据为用户问题与知识库描述的语义匹配性。
因此 N 选 1 模式的召回效果主要受三个因素影响:
系统推理模型的能力,部分模型对于 Function Call/ReAct 的指令遵循程度不稳定
知识库描述是否清晰,描述内容会影响 LLM 对用户问题与相关知识库的推理
知识库的个数,知识库过多会影响 LLM 的推理精确性,同时可能会超出推理模型的上下文窗口长度。
N 选 1 模式的推荐配置方法:选择效果更好的系统推理模型,关联尽量少的知识库,提供精确的知识库描述。
用户上传知识库时,系统推理模型将自动为知识库生成一个摘要描述。为了在该模式下获得最佳的召回效果,可以在“知识库->设置->知识库描述”中查看到系统默认创建的摘要描述,并检查该内容是否可以清晰的概括知识库的内容。
多路召回模式(推荐)
在多路召回模式下,检索器会在所有与应用关联的知识库中去检索与用户问题相关的文本内容,并将多路召回的相关文档结果合并,并通过后置的重排序(Rerank)步骤对检索召回的文档进行语义重排。
多路召回模式不依赖于模型的推理能力或知识库描述,该模式在多知识库检索时能够获得质量更高的召回效果,因此更推荐将召回模式设置为多路召回。

重排序(Rerank)

重排序模型通过将候选文档列表与用户问题语义匹配度进行重新排序,从而改进语义排序的结果。其原理是计算用户问题与给定的每个候选文档之间的相关性分数,并返回按相关性从高到低排序的文档列表。
在这里插入图片描述

召回测试建议步骤:

设计和整理覆盖常见用户问题的测试用例/测试问题集;
选择合适的检索策略:向量检索/全文检索/混合检索,不同检索方式的优缺点,请参考扩展阅读检索增强生成(RAG);
调试召回分段数量(TopK)和召回分数阈值(Score),需根据应用场景、包括文档本身的质量来选择合适的参数组合。

TopK 值和召回阈值(Score )如何配置
TopK 代表按相似分数倒排时召回分段的最大个数。TopK 值调小,将会召回更少分段,可能导致召回的相关文本不全;TopK 值调大,将召回更多分段,可能导致召回语义相关性较低的分段使得 LLM 回复质量降低。
召回阈值(Score)代表允许召回分段的最低相似分数。召回分数调小,将会召回更多分段,可能导致召回相关度较低的分段;召回分数阈值调大,将会召回更少分段,过大时将会导致丢失相关分段。

总结

由上,可以简单总结RAG实现过程。

  • 应用侧:
    需求——知识库检索——结果召回——LLM 提示词、Agent等有关开发——LLM结合需求+知识库检索结果进行回答——结束

  • 实现侧:
    文档上传——文本分段和清洗——嵌入模型选型、文本嵌入——重排模型选型、召回参数配置——召回测试——知识库应用集成

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的中青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值