1. Embedding与Rerank的本质差异
在构建RAG(检索增强生成)系统时,Embedding和Rerank是两种经常被混淆但实际差异显著的技术。作为从业多年的AI工程师,我发现很多团队在技术选型时容易忽视二者的本质区别,导致系统设计出现性能瓶颈。让我们从最底层的技术原理开始剖析。
1.1 核心功能定位
Embedding模型的核心使命是将非结构化的文本数据转化为结构化的向量表示。这个转换过程可以理解为给每段文本打上一个独特的"语义指纹"。在实际项目中,我们通常使用类似OpenAI的text-embedding-ada-002或开源的bge-small模型来完成这个任务。
关键提示:好的Embedding模型应该能将语义相似的文本映射到向量空间中相近的位置,这个特性被称为"语义保持性"。
Rerank模型则扮演着"质检员"的角色。它接收来自初步检索的结果,对每个候选文档进行精细化的相关性评估。不同于Embedding的独立编码,Rerank模型会同时分析查询语句和候选文档的交互关系。典型的Rerank模型如Cohere的rerank-multilingual-v2.0,就是专门为这种精细排序任务优化的。
1.2 技术实现对比
从架构上看,Embedding模型多采用双塔(Bi-Encoder)结构:
code复制[文本A] → [编码器] → 向量A
[文本B] → [编码器] → 向量B
相似度 = 余弦(向量A, 向量B)
这种结构允许我们预先计算并存储文档向量,极大提升检索效率。
而Rerank模型通常采用单塔(Cross-Encoder)架构:
code复制[CLS]查询[SEP]文档[SEP] → [联合编码器] → 相关性分数
这种设计让模型能在内部建立查询和文档间的细粒度关联,但牺牲了计算效率。
1.3 性能特征比较
在我的性能测试中(使用NVIDIA T4 GPU),一些典型数据值得关注:
| 指标 | Embedding模型 | Rerank模型 |
|---|---|---|
| 吞吐量(QPS) | 1200 | 85 |
| 延迟(ms) |
