技术解读 1天前 149 浏览次数 0 评论

RAG全系列之《重排序 Rerank 》

人人都是产品经理

发布了 1121 文章

在RAG系统中,重排序(Rerank)是连接检索与生成的关键一环。本文深入解析Rerank模块的核心逻辑与主流技术路径,结合实际应用场景,帮助产品人理解如何通过重排序提升AI问答系统的准确性与响应质量。

向量化与重排序(rerank)是相辅相成的两个模块, 他们两个搭配起来,共同解决检索准确性的问题。

  • 向量检索的核心:在海量数据中,检索与跟查询内容相近的内容。一般称为内容召回。例如一次性召回 50 条内容
  • rerank的核心:基于召回的内容,再做更加精准的排序。例如将上面 50 条内容,做一次更加精准重排序,获取到 top10 内容;

为什么rerank准确这么重要?

生成答案的大模型,如果自己没有训练的话,他都是通用的识别能力,对于公司/行业内的专有名词/特地话术的区分能力很差。

如果你给了准确的知识,他能够生成准确的答案,但是如果你给的非常接近的错误的知识,他分辨能力较差,非常容易生成错误的答案。

rerank模型

本质就是针对重排序特别训练的大模型。我自己最早搭建 demo 的时候,并没有使用 rerank 模型,直接用一个火山 doubao 1.5模型, 让doubao 1.5 直接针对内容的相关性进行排序。这个也让我了解到了专门的 rerank 大模型到底改进了什么?

  • 速度更快:如果是使用通用的大模型对内容进行排序,耗时会很长,doubao的模型基本都是20s+,如果参与rerank环节的引用知识更多,那么排序时间就更长了。但是专门的rerank模型基本秒级就可以完成同等的排序
  • 排序分数更稳定:对于同一批知识,大模型的排序结果每次排序结果不尽相同,当你复现case的时候非常痛苦,但是专门的rerank模型排序结果是很稳定的;

模型推荐

一般不是很难排序的模型 bge-m3就足够了,模型本身小,运行速度快。如果排序比较难的话, 可以尝试 qwen rerank 8B 的模型,但是这个模型有点大,对于服务器配置要求比较高。

经验总结与反思

希望大家能够理解真正的原理,各个板块存在的意义,不然很容易人云亦云。

真的需要向量化吗?

向量化的时间相对来说比较高,需要搞自己向量化数据库,选择合适的向量化模型,但是我们真的有必要搞向量化吗?

向量化其实主要是方便从海量数据中找到可能的候选内容,供 rerank 使用。针对企业级场景,很多公司的内容并没有那么多,我们完全可以把所有的知识全量 rerank,直接获取结果就好了。我自己测试 500 条知识,rerank 的话几秒就完成了,做个并发的话,速度会更快。

需要自己训练模型吗?

通用的模型在理解一些行业专有名词的时候,效果不佳。如果这个成为了效果的瓶颈了,再考虑做模型微调。一般情况下,选个市面上通用的 rerank 模型就够用了。

微调的话,建议优先训练 rerank 模型,因为它是最终的决定性环节。如果rerank 效果好,向量化效果差,直接在向量化环节搞个 top100,然后交由 rerank 进行排序选出最好的 top10。

后续

上面聊的只是一路检索,但是现在我们使用的基本都是多路检索,后续再给大家介绍一下多路检索,以及后续生成环节如何处理。

本文由 @寻走 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议

人人都是产品经理

人人都是产品经理

1121 文章 162582 浏览次数 58654 粉丝

评论 (0)

睡觉动画