Skip to content

Embedding 与 Reranker ​

核心答案:Embedding 将文本映射为可比较向量,适合从大量片段中召回候选;Reranker 根据查询重新比较候选,适合把有限候选排得更准。 两者可串联,Reranker 不能找到召回阶段完全漏掉的片段。

输入、输出与成本位置 ​

维度EmbeddingReranker
输入单条文本或文本批次查询与候选文档
输出每条文本的数值向量候选的相关性分数或顺序
离线工作资料导入时预计算向量通常没有通用可复用的查询相关分数
在线工作查询向量与向量检索对本次候选再次打分
代价控制片段数量、维度、缓存候选数量、长度与模型大小

常见双编码器可以分开编码查询与资料;常见交叉编码器联合处理查询和候选,但并非所有 Embedding/Reranker 都使用同一网络结构。应按接口语义解释,避免把名称等同于唯一实现。

最小例子:召回之后才能重排 ​

python
candidates = ["A", "B", "C"]
# 人工指定分数,仅演示排序,不代表真实模型效果。
scores = {"A": 0.2, "B": 0.9, "C": 0.6}
ranked = sorted(candidates, key=scores.get, reverse=True)
assert ranked == ["B", "C", "A"]
assert "D" not in ranked

如果真正相关的 D 没有进入候选列表,再好的排序器也无法将它选中。因此先测 Recall@k,再看排序质量,不应只观察最终一条结果是否“看起来不错”。

教材项目中的选择 ​

本项目核心链路使用 Embedding 与 pgvector,重点验证导入、元数据过滤、来源与版本。Reranker 作为可选扩展,不把它包装成已经实现的核心能力。真实向量必须记录模型、维度与版本,查询端和资料端保持可比较性;演示向量只能验证流程,不能证明真实语义召回质量。

若实验发现候选中经常包含正确资料但排位靠后,可以加入重排;若候选里根本没有,先查切分、过滤、模型和召回深度。这里是诊断顺序,不保证每次重排都会带来收益。参见核心章节。

自测与排障 ​

把候选数从 3 扩到 10,记录需重排的文本总长度,再说明延迟与费用可能如何变化。检查同一查询、同一候选上的排名;不要跨不同查询直接把分数解释为概率。

常见错误包括向量维度不同仍尝试混存、更新模型却复用旧向量、把相似度当事实可信度、只测试演示向量就报告真实检索效果。

官方资料与版本边界 ​

核验日期:2026-11-03。本页不指定重排模型,也不承诺不同服务分数具有同一标定。模型能力与长度限制以实际选用版本为准。

学习复现系统 · 事实、实验与假设分开记录