从 RAG 应用中你能学到什么? (文本检索Retrieval)

360影视 国产动漫 2025-04-03 19:05 2

摘要:前一篇文章介绍了 RAG 中 text embedding,在chunk 文本embedding,就是构建向量知识库,然后供下游任务检索召回,输入大模型进行问题精加工回答. 那么在实际 RAG 的检索模块有哪些方案以及优化点?今天这篇文章将进行深入分析。

前一篇文章介绍了 RAG 中 text embedding,在chunk 文本embedding,就是构建向量知识库,然后供下游任务检索召回,输入大模型进行问题精加工回答. 那么在实际 RAG 的检索模块有哪些方案以及优化点?今天这篇文章将进行深入分析。

1.稀疏BM25 检索

BM25 算法底层基于TF-IDF 算法,tf-idf 算法原理如下:

TF

其中:ft 是词t在文档d中出现的次数, N 是文档 d 中所有词的总数。

IDF

其中,D 是语料库中的总文档数。Dt 是包含词 t 的文档数、加 1 避免分母为 0。

TF-IDF 的计算公式如下:

TF-IDF

BM25 的核心思想是计算一个文档 D 与查询 Q 的相关性分数 score(D,Q),其基本公式如下

BM25 算法

BM25 算法参数解释

这类算法广泛的用在搜索引擎Solr、ES中, 是各大搜索引擎的主要算法。

2.Dense 向量相似度检索

这类算法基于向量余弦相似度,当前RAG 系统中会基于embedding向量,利用向量知识库中HNSW等算法,进行top-K 相似度检索。

3.Hybrid 检索

结合1 和 2的检索方法,然后进入重排。

4.ColBert 算法

ColBert (Contextualized Late Interaction over BERT)核心有两点:

1.将文档映射为 token 级别的embedding;

2.后期交互,所谓后期交互,即可以使用 BERT 离线计算文档嵌入,然后在线计算查询嵌入。然后,在Query和文档的嵌入之间应用了一个称为 MaxSim 运算符 (最大相似度运算符,具体解释将在后文给出) 的操作.

ColBert算法

分数计算方式

ColBert 有两个版本ColBERT、 ColBERTv2 ,v2版本通过引入document 的token embedding 质心思路解决了 初始版本 里面诸如存储和扩展性的缺陷;ColBert 优点如下:

1.同时由于ColBERT 保留了 token 级别的 embedding,因此兼具语义检索和关键词检索的能力,所以通过ColBert搜索出来的结果完全可省掉 Re-Ranking 这一步,同时只要进行单路的召回即可.

2.由于直接离线对document 级别进行embedding,加上当前大模型动辄128k 的上下文窗口长度,基于ColBert 某种程度上可以省去RAG 中的文本切块。

总结下来,ColBert 方案在具备embedding 功能的同时,省去RAG 中chunk,ReRank 是值得探索的技术方案

来源:AIGC-LANDING

相关推荐