Rerank和混合搜索

56 阅读4分钟

一、Rerank的关键技术

在RAG检索算法查询到多个上下文之后,有可能部分上下文和用户查询的内容无关,那么重排就是为了评估检索到的上下文和问题的关联性,优先筛选出相关度高的知识,常用的重排方式有

方案1:使用专门的重排模型【NLU】

这种方案主要是采用轻量级的重排模型,如基于BERT等编码器架构,专门优化排序任务,直接输出相似度分数,工程根据相似度进行筛选淘汰。

方案2:使用LLM进行重排序【全量】

直接使用大模型来排序,利用LLM的理解能力,对延迟不敏感的场景或者对复杂语义理解的排序。

主要有两种实现方式

  • 具备重排任务的微调模型
  • 使用提示词让LLM重排,特点是零样本排序
概率评分法可答性评分法端到端排序法(置换生成)
输入: 文档段落 模型生成:Response 评估:该回复能回答用户真实查询的概率分数 输出:概率分数 → 用于排序 特点:基于生成内容的质量评估输入:Query + 文档 模型判断:该文档是否能回答查询 输出:可答性分数 特点:直接评估文档与查询的匹配度输入:一组段落列表 模型操作:直接对段落进行排序 输出:排好序的段落列表 特点: 端到端的排序,更加高效 ,模型自主决定排序顺序 然而,候选文档的数量通常非常大,而 LLM 的输入却很有限。因此,通常无法一次性输入所有文本,因此需要分批进行排序,引入了一种滑动窗口法,它沿用了冒泡排序的思想。每次只对前 4 个文本进行排序,然后移动窗口,对后面 4 个文本进行排序。在对整个文本进行反复排序后,我们就可以得到性能最好的文本。 img

Rerank重排算法相当于在RAG框架新增一个节点,检索耗时肯定有所增加的,所以更适合深度检索或B端提效的产品中。

重排模型和LLM重排的特点

BERTLLM
架构设计1、输入文本 2、双向Transformer编码器 3、上下文表示 特点:同时看左右上下文1、输入文本 2、单向transformer编码器 3、逐个生成token 特点:只能看左边的上下文
Attention方向双向单向
掩码方式MLM(随机掩码)因果掩码(自回归)
输出文本向量下一个token的概率
应用文本分类、相似度计算、重排、信息检索、命名实体识别对话生成、翻译、摘要、代码生成、推理
RAG重排场景输入:查询 + 文档列表 快速计算查询与每个文档的相关度分数 成本低:处理100个文档只需要毫秒级 专门优化排序任务需要生成文本解释为什么排序 处理100个文档需要秒级甚至分钟基 成本高

二、混合搜索的关键技术

是一种将两种/多种搜索技术结合在一起的信息检索方式,在RAG检索召回中,常见的方式是语义召回,灵活,能够理解语义,但存在不精确的问题,比如关键词为“苹果手机”,检索出来的结果有“苹果”,这时候我们就可以使用关键词搜索的方式,通过过滤条件做区分。 因此现在比较多RAG检索系统会使用 “关键词搜索” (BM25算法)+ “语义搜索”(密集向量) 两种方式进行检索,最后通过融合算法(RRF)整合检索内容。

BM25算法

查询query["苹果手机价格"] -> 分解为语素[“苹果”,“手机”,“价格”] -> 计算每个语素和文档的相关性 -> 累加相关性得分 -> 输出匹配度分数。

BM25是基于TF-IDF算法,TF(词频):术语在文档中出现的概率,频率越高,相关性越强;IDF(逆向文档解释):术语在整个文档库的西游程度,越稀有的术语,权重越高。

密集向量

查询query -> 转换为向量表示 -> 与文档的向量计算相似度 -> 输出文档和相似度

RRF

RRF是一种算法,用于将多个项目排名列表合并为一个统一排名。

  • 获取两种搜索的排名列表
  • 计算每个文档的RRF分数,融合两种搜索的排名计算RRF分数
  • 按照RRF分数来排序

整体逻辑简单高效,无需调整参数,对单一方法的错误有容错能力。

什么时候只用语义搜索

像内容发现,问答系统等需要理解问题语义,返回语义相关内容的时候,可以直接使用语义搜索。

什么时候不适合只用语义搜索

像电商搜索、代码搜索等,需要明确具体商品和具体代码块时,不能只是用语义搜索,需要精准匹配来筛选。