玩酷网

RAG全系列之《重排序 Rerank 》

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

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

向量检索的核心:在海量数据中,检索与跟查询内容相近的内容。一般称为内容召回。例如一次性召回50条内容

rerank的核心:基于召回的内容,再做更加精准的排序。例如将上面50条内容,做一次更加精准重排序,获取到top10内容;

为什么rerank准确这么重要?

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

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

rerank模型

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

速度更快:如果是使用通用的大模型对内容进行排序,耗时会很长,doubao的模型基本都是20s+,如果参与rerank环节的引用知识更多,那么排序时间就更长了。但是专门的rerank模型基本秒级就可以完成同等的排序

排序分数更稳定:对于同一批知识,大模型的排序结果每次排序结果不尽相同,当你复现case的时候非常痛苦,但是专门的rerank模型排序结果是很稳定的;

模型推荐

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

经验总结与反思

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

真的需要向量化吗?

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

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

需要自己训练模型吗?

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

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

后续

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