场景
知识库存储:奥迪A6多少钱
Query:奥迪A4多少钱
Query去知识库进行召回,可以将「奥迪A6多少钱」这条知识召回出来。
原理分析(双塔编码器)
向量库的Embedding采用的是「双塔编码器」,通过独立编码+池化压缩,局部实体差异被整体语义稀释,缺失跨句token对照。
Embedding向量流程
输入句子->Token切分->Transformer输出每一个token的独立向量->池化(把N个token向量,压缩成一个向量)->输出句子的唯一向量。
行业解决方案
- 意图+核心实体过滤
- 缺点:依赖实体识别准确性;
- 优点:速度快,成本低
- Reranker交叉编码器重排
- 场景:多路召回拿到候选集,Rerank重排过滤错误样本
- 优点:识别细微度实体差异很强
- 限制:算力高,只能处理小规模候选集合
- 微调Embedding模型,拉大「同类不同实体样本」的向量值
- LLM最终决策。
Reranker(交叉编码器)
将两段文本拼接在同一个输入上下文,处于同一套注意力窗口内。可以直接跨文本对比。而不是各自编码完再靠余弦距离间接判断。
代价:每一对文本都要实时拼接推理,文档不能提前预计算缓存,只能用于粗筛后的小候选集。
工程选型
线上Reranker分两大类,
- 一类是逐对式(Pairwise/Pointwise),每条候选独立推理,文档之间看不到对方;
- 另一类是列表式(Listwise),把一批候选同时输入,文档之间可以横向对比,对近似易混淆样本区分更强。
-
Pairwise(逐对,BGE‑Reranker、Cross‑Encoder 经典)
输入:[query, docA]、[query, docB]分开两趟推理
训练:输入一对文档,学习判断 A 是否比 B 更相关
推理:每一条候选都要和 query 拼起来单独跑一次模型
优点:效果稳、开源最多;缺点:候选多推理开销大,文档之间看不到彼此,没有横向对比。
-
Listwise(列表式,ListConRanker 代表(字节开源模型))
输入:query + 一整个候选文档列表一次性送入模型
训练:直接优化整个列表的排序顺序;文档之间可以互相 attention 交互
优点:同批次内文档互相对比,区分近似实体效果更好,吞吐高;缺点:受上下文窗口限制,候选条数不能太多。