RAG应用:交叉编码器(cross-encoder)和重排序(rerank)
文章目录
- Sentence Transformers
- 交叉编码器
- 交叉编码器使用示例
- 检索和重排序
Sentence Transformers
Sentence Transformers
支持两种类型的模型: Bi-encoders
和 Cross-encoders
。Bi-encoders
更快更可扩展,但 Cross-encoders
更准确。虽然两者都处理类似的高水平任务,但何时使用一个而不是另一个是相当不同的。Bi-encoders
更适合搜索,而 Cross-encoders
更适合分类和高精度排序。
交叉编码器
正如之前所说,交叉编码器同时编码两个句子,并输出一个分类标签。交叉编码器第一次生成一个单独的嵌入,它捕获了句子的表征和相关关系。与双向编码器生成的嵌入 (它们是独立的) 不同,交叉编码器是互相依赖的。这也是为什么交叉编码器更适合分类,并且其质量更高,他们可以捕获两个句子之间的关系!反过来说,如果你需要比较上千个句子的话,交叉编码器会很慢,因为他们要编码所有的句子对。
假如你有四个句子A, B, C, D,并且你需要比较所有的可能对:
- 一个双向编码器需要独立编码每个句子,所以它需要编码四个句子。
- 一个交叉编码器需要