在说重排工具之前,我们要先了解一下 RAG。
检索增强生成(RAG)是一种新兴的 AI 技术栈,通过为大型语言模型(LLM)提供额外的 “最新知识” 来增强其能力。
基本的 RAG 应用包括四个关键技术组成部分:
-
Embedding 模型:用于将外部文档和用户查询转换成 Embedding 向量
-
向量数据库:用于存储 Embedding 向量和执行向量相似性检索(检索出最相关的 Top-K 个信息)
-
提示词工程(Prompt engineering):用于将用户的问题和检索到的上下文组合成大模型的输入
-
大语言模型(LLM):用于生成回答
上述的基础 RAG 架构可以有效解决 LLM 产生 “幻觉”、生成内容不可靠的问题。但是,一些企业用户对上下文相关性和问答准确度提出了更高要求,需要更为复杂的架构。一个行之有效且较为流行的做法就是在 RAG 应用中集成 Reranker。
什么是 Reranker?
Reranker (重排器)是信息检索(IR)生态系统中的一个重要组成部分,用于评估搜索结果,并进行重新排序,从而提升查询结果相关性。在 RAG 应用中,主要在拿到向量查询(ANN)的结果后使用重排器,能够更有效地确定文档和查询之间的语义相关性,更精细地对结果重排,最终提高搜索质量。
目前,重排器类型主要有两种 —— 基于统计和基于深度学习模型的 Reranker:
基于统计的重排器会汇总多个来源的候选结果列表,使用多路召回的加权得分或倒数排名融合(RRF)算法来为所有结果重新算分,统一将候选结果重排。这种类型的重排器的优势是计算不复杂,效率高,因此广泛用于对延迟较敏感的传统搜索系统中。
基于深度学习模型的重排器,通常被称为 Cross-encoder Reranker。由于深度学习的特性,一些经过特殊训练的神经网络可以非常好地分析问题和文档之间的相关性。这类重排器可以为问题和文档之间的语义的相似度进行打分。因为打分一般只取决于问题和文档的文本内容,不取决于文档在召回结果中的打分或者相对位置,这种重排器既适用于单路召回也适用于多路召回。
将重排器整合到 RAG 应用中,可以显著提高生成答案的精确度,因为重排器能够在单路或多路的召回结果中挑选出和问题最接近的文档。此外,扩大检索结果的丰富度(例如多路召回)配合精细化筛选最相关结果(Reranker)还能进一步提升最终结果质量。使用重排器可以排除掉第一层召回中和问题关系不大的内容,将输入给大模型的上下文范围进一步缩小到最相关的一小部分文档中。通过缩短上下文, LLM 能够更 “关注” 上下文中的所有内容,避免忽略重点内容,还能节省推理成本。
追求回答高精度和高相关性的场景中,特别适合使用重排器,例如专业知识库或者客服系统等应用。因为这些应用中的查询都具有很高的商业价值,提升回答准确性的优先级远高于系统性能和控制成本。使用重排器能够生成更准确的答案,有效提升用户体验。
重排器在提高检索相关性的同时,也会增加延迟和计算成本。因此,在检索质量、搜索延迟、使用成本之间进行权衡之后,当前可选择的重排工具并不多,下面介绍三款:Cohere Rerank 、 BGE Re-Ranker、Jina Reranker。
Cohere Rerank
Cohere Rerank 是在业界被广泛使用的重排工具,它通常集成在 LangChain 和 LlamaIndex 框架中,使用相对简单。
其背后公司 Cohere 的来头不简单。Cohere 成立于 2019 年,由曾在 Google Brain 和 Cortex 工作的研究人员和工程师创立,其联合创始人之一 Aidan Gomez,是 Transformers 架构的作者之一。根据不完全统计,Cohere 累计融资已经超过 4.45 亿美元。今年 3 月,还爆出 Cohere 的新一轮融资已进入后期谈判阶段,筹集超 5 亿美元资金,估值有望达到 50 亿美元。
今年 4 月, Cohere 发布了 Rerank 3,各方面都提升了不少,包括:
-
4k 上下文长度可显著提高较长文档的搜索质量
-
能够搜索多方面和半结构化数据,如电子邮件、发票、JSON 文档、代码和表格
-
覆盖 100 多种语言
-
改善延迟并降低总体拥有成本 (TCO)
不过,它是商业闭源的。原本每 1000 次搜索,用户需要花费 1 美元,在升级到 Rerank 3 之后,每 1000 次搜索,需要 2 美元。
BGE Re-Ranker
BGE Re-Ranker 是智源研究院推出检索排序模型,今年 3 月发布了 2.0 版本。该模型是智源团队在 BGE 系列基础上的新尝试。BGE(BAAI General Embedding)是智源研究院打造的通用语义向量模型。自 2023 年 8 月发布以来,智源团队陆续发布了中英文模型 BGE v1.0、v1.5 以及多语言模型 BGE-M3。
BGE Re-Ranker v2.0 系列排序模型采用了两种不同尺寸的模型基座:
-
BGE Re-Ranker v2-LLM:基于 MiniCPM-2B,Gemma-2B 等性能卓越的轻量化大语言模型。
-
BGE Re-Ranker v2-M3:基于性能出色、参数量更小的 BGE-M3-0.5B(速度更快)。
来看看 BGE Re-Ranker 2.0 的特性:
-
支持更多语言,更长文本长度,并在英文检索基准 MTEB、中文检索基准 C-MTEB、多语言检索基准 MIRACL、LLaMA-Index Evaluation 等主流基准上取得了 state-of-the-art 的结果。
-
借助分层自蒸馏策略进一步优化推理效率,适度的开销即可换取显著的性能收益。在实际应用中,用户可以基于具体场景的算力条件及时延限制灵活选择排序模型的层数。
开源模型现已通过 Hugging Face、Github 等平台发布,采用免费、商用许可的开源协议:
https://github.com/FlagOpen/FlagEmbedding
https://huggingface.co/BAAI
截至今年 3 月,BGE 系列模型全球下载量超过 1500 万,位居国内开源 AI 模型首位。BGE-M3 模型一度跃居 Hugging Face 热门模型前三,其所属代码仓库 FlagEmbedding 位居 GitHub 热门项目前 10;BGE-M3 所带来的全新的通用检索模式也相继被 Milvus、Vespa 等主流向量数据库集成。
Jina Reranker
Jina Reranker 是由神经搜索公司 Jina AI 开发。2022 年,Jina AI 完成 A 轮融资,融资总额已经超过 2 亿人民币。其开发的神经搜索框架 Jina 多次登上 GitHub 全球 Trending 排行榜第一名。
Jina Reranker v2 在今年 6 月发布,在速度、多语言支持和功能上都有显著提升,尤其适用于检索增强生成(RAG)场景。
Jina Reranker v2 的主要优势:
-
多语言支持:在 100 多种语言中提供更相关的搜索结果,性能超过 bge-reranker-v2-m3;
-
代理能力:具备最先进的函数调用和文本到 SQL 转换能力,适用于代理 RAG 场景。
-
代码检索:在代码检索任务上表现最佳;
-
极速:推理速度比上一代产品快 6 倍,比同类产品 bge-reranker-v2-m3 快 15 倍。
Jina Reranker v2 的特性:
-
创新需求:弥补嵌入模型在检索精度上的不足。
-
多语言支持:在 MKQA、BEIR 和 AirBench 等基准测试中表现优异。
-
应用场景:在结构化数据查询、函数调用和代码检索方面的应用。
-
推理速度:模型尺寸更小、采用了 Flash Attention 2 技术。
-
训练过程:分四个阶段进行,包括使用英语数据预训练、添加跨语言数据、微调等。
Jina Reranker v2 的应用方式:
-
通过 Reranker API:使用 Jina Reranker v2 最快捷的方式是通过其 API,无需部署模型,就能轻松提升搜索的相关性和 RAG 的准确性。
-
通过 RAG/LLM 框架集成:Jina Reranker 与现有的 LLM 和 RAG 编排框架集成,只需使用模型名称即可快速集成。
-
Huggingface:Jina AI 开放了(在 CC-BY-NC-4.0 下)对 Hugging Face 上的 jina-reranker-v2-base-multilingual 模型的访问,以用于研究和评估目的。
-
私有云部署:Jina Reranker v2 的预构建私有部署包即将在 AWS Marketplace 和 Azure Marketplace 上线,方便 AWS 和 Azure 用户部署。
Jina Reranker 也是收费的,不过前 100 万个 token 可以免费。10 亿 个 token 是 20 美元,110 亿个 token 要 200 美元。