RAG BM25 算法和重排,微调以外的手段

随着LLM 广泛应用,许多开发者开始通过定制化的调优,进一步提升模型性能。

传统模型微调面临许多挑战,尤其是在处理特定领域的任务时。RAG 应运而生。

微调能够提高模型的专门性,但也面临问题:数据需求大、计算资源要求高、隐私与安全问题,RAG 通过将 LLM 与外部知识库结合,在生成答案时检索相关信息,避免微调的高成本和复杂性。

RAG 包括两个主要部分:知识库创建和生成部分。

知识库创建包括文档分割、嵌入计算和向量存储三个步骤:

将大文档拆分为小片段,便于处理;为每个文档片段计算嵌入,转换为向量表示;将计算得到的嵌入存储在数据库中,便于后续检索。

生成部分包括查询处理、检索和生成回答三个环节:

当用户发出查询时,系统会首先计算查询的嵌入向量,根据查询嵌入检索相关的文档片段;系统将检索到的片段与查询一起输入到LLM,生成最终答案。

如此这般,使得模型能够在不进行微调的情况下,获得高质量的领域特定回答。

------ 以上这些是我们熟知的。

结构图、一图胜过千言:

但为进一步提高检索精度,很多RAG系统采用了混合检索方法,结合传统的关键词检索和语义检索。

BM25 就是基于关键词的检索算法之一!

(根据Anthropic的报告,使用混合检索方法能够将检索结果的准确性提高约1%)

BM25 特别适合检索包含精确关键词的文档,语义检索有助于找到语义相似的内容。

对于包含精确关键词的查询,BM25能迅速定位到相关文档,避免纯粹依赖嵌入模型的不足之处。

dart 复制代码
<document> 
{{WHOLE_DOCUMENT}} 
</document> 
Here is the chunk we want to situate within the whole document 
<chunk> 
{{CHUNK_CONTENT}} 
</chunk> 
Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk. Answer only with the succinct context and nothing else

这里,为每个文档片段生成上下文信息。将给定的片段与相关的上下文信息结合,通过嵌入模型处理片段。生成的嵌入将被存储在标准的向量数据库中。

同时更新BM25索引,这种情况下,使用基于关键词的搜索机制TF-IDF(词频-文档逆向),在每个片段中,添加50到100个标记。但是它会增加大量的开销,因为每个片段都要经过LLM处理,产生大量的标记。

所以,除了关键词算法,RAG 系统中,由于检索时主要依赖欧几里得距离或余弦相似度等基础方法,这种做法可能导致提取结果不够精确。为了进一步提高结果的质量,重新排序模型应运而生。

重新排序模型通过跨注意力机制对查询与文档片段进行比对,能够发现查询与文档之间的重要关系,弥补简单相似度计算模型的不足。

它的场景通常用于在提取到一些潜在相关的文档片段后,对它们进行重新排序,确保生成的回答更准确。

检索模型设计用于提取信息片段,通常紧凑高效,但依赖于基本的提取技术,如欧几里得距离或向量间的余弦相似度,优先考虑提取的速度和数量,可能导致结果不够准确。

相比之下,重新排序模型更复杂且较慢,不适合直接处理大量提取结果,通过重新排序检索模型提取的较小片段集合来优化结果。

其核心优势在于能够在用户查询与每个片段之间进行交叉-cross-attention,发现查询与片段之间的重要关系。

小结

从经验来看,RAG 不是万能的,它仍然依赖于高质量的文档片段和高效检索机制。

实战中,可以根据需求来制定优化策略,灵活使用这里介绍的BM25算法或者重排技术。

本篇通译自:medium.com/towards-art...

相关推荐
墨韵流芳1 天前
CCF-CSP第41次认证第三题——进程通信
c++·人工智能·算法·机器学习·csp·ccf
小和尚同志1 天前
A社 npm 包事故导致 Claude Code 源码泄漏?
人工智能·aigc·claude
ComputerInBook1 天前
opencv图像处理——存储结构 Mat (Matrices)
图像处理·人工智能·opencv
2501_933329551 天前
企业舆情处置技术实践:基于AI的智能监测与申诉系统架构解析
人工智能·分布式·架构·系统架构
千寻girling1 天前
不知道 Java 全栈 + AI 编程有没有搞头 ?
前端·人工智能·后端
君科程序定做1 天前
多源遥感与深度学习视角下耕地识别与耕地监测的局限性、研究空白与科学问题
人工智能·深度学习
七夜zippoe1 天前
可解释AI:构建可信的机器学习系统——反事实解释与概念激活实战
人工智能·python·机器学习·可解释性·概念激活
东离与糖宝1 天前
Java 26+Spring Boot 3.5,微服务启动从3秒压到0.8秒
java·人工智能
Daydream.V1 天前
OpenCV高端操作——光流估计(附案例)
人工智能·opencv·计算机视觉
冬奇Lab1 天前
一天一个开源项目(第60篇):IndexTTS - B 站开源的工业级零样本语音合成系统
人工智能·开源·资讯