← 返回题目列表

RAG 中 Embedding 模型怎么选?

高频 中等 第 8 / 29 题 更新于 2026/09/18
RAGEmbedding向量检索模型选型

简化版

Embedding 选型应以自有查询—相关文档集的 Recall@k、nDCG/MRR 为核心,同时比较语言/领域覆盖、上下文长度、向量维度、吞吐、成本和部署约束。先确认模型要求的 query/document 前缀和相似度归一化,再与 BM25、混合检索及 reranker 组成端到端基线;公开榜单只能用于筛候选。

详细版

候选模型需覆盖中文、多语、代码或领域术语,并能处理实际 chunk 长度。使用相同数据、切块、索引参数和 k 做离线对照,按短关键词、长问题、实体、否定和时间查询切片。向量维度会影响存储和 ANN 延迟,量化还能降成本但需重测召回。

评测分检索与生成两层:先看相关证据是否进入 Top-k,再固定生成器测答案和引用。若双塔召回不足,可领域微调或加入 BM25;若 Recall 高但头部排序差,用 cross-encoder rerank。上线前测 QPS、P95、批处理、索引构建时间和模型许可证,并为换模型准备双写索引迁移。

业务查询集 -> 候选Embedding -> 同配置向量索引 -> Recall/nDCG + 延迟/成本 -> 端到端RAG验证

完整版教学

一、选型首先由任务定义

FAQ 的短问句、法律长问题、代码搜索和跨语言检索需要不同表示。模型在通用英文榜单领先,不保证能处理中文缩写或公司内部实体。先采集真实查询、相关 chunk 和困难负例,才能定义“好”。

还要明确是对称还是非对称检索。语义相似句匹配两边形态接近;RAG 通常是短 query 对长 document,很多模型要求使用不同前缀或 encoder 角色。遗漏官方前缀可能让优秀模型表现大幅下降。

二、离线指标各回答什么

Recall@k 看真证据是否进入候选,MRR 强调第一个相关结果的位置,nDCG 能处理多级相关性和多个相关文档。Precision@k 反映上下文噪声。指标要与下游 k 对齐,若生成只拿 5 块,单报 Recall@100 意义有限。

Recall@k = 被Top-k覆盖的相关文档数 / 全部相关文档数
MRR = mean(1 / 第一个相关结果排名)

100 个查询中 85 个至少在 Top-10 找到证据,query-level hit rate 是 85%;若每题有多份证据,需用真正 Recall 而非仅命中一份。

记忆钩子:Embedding 负责“把真证据带进候选”,Reranker 负责“把候选排到前面”;先看召回,再看排序。

三、相似度与归一化要匹配

点积同时受方向和向量范数影响,余弦只看夹角;若向量 L2 归一化,点积与余弦排序相同。模型训练时采用哪种目标,就按其说明配置索引。错误地归一化或漏归一化会造成分数不可比。

配置特性注意
cosine忽略范数常需归一化
inner product范数参与与训练目标一致
L2 distance距离越小越近归一化后与余弦相关

阈值也需按新模型重新校准,不能沿用旧 embedding 的 0.8,因为不同模型分数分布不同。

四、维度如何影响系统成本

一亿条 1024 维 FP32 原始向量约占 1e8×1024×4≈409.6GB,还不含索引图和元数据;384 维约 153.6GB。维度越高不必然语义越好,却会增加存储、内存带宽和网络传输。

FP16、INT8 或 Matryoshka 截断可降成本,但量化误差会影响近邻排序。使用目标 ANN 和压缩配置做联合评测,不能先用精确 FP32 得出模型最好,再假设生产量化后排名不变。

五、语言、长度和领域怎样切片

建立短关键词、自然问题、实体编号、长描述、否定、错别字、低资源语言和跨语言查询切片。文档长度超过模型窗口时会截断,后半证据永远无法编码;需要合理切块或选择长上下文 embedding。

领域术语在通用模型中可能聚得不好。可先混合 BM25 补精确实体,再考虑对比学习微调。微调前保留通用测试,防模型只会内部术语而丢失用户自然问法。

六、为什么必须有 BM25 基线

向量擅长语义改写,BM25 擅长罕见实体、产品号和精确词。若 embedding 只比简单 BM25 略好,却成本高很多,混合检索可能更划算。RRF 可在分数不可比时融合排名。

对查询“错误码 ZX-1049”,字符精确匹配很关键;对“订单一直没到怎么办”,语义向量更有优势。报告各切片两种检索的互补命中,而不是只比较总分赢家。

七、上线与迁移如何设计

模型吞吐要在真实长度、batch 和硬件上测,区分在线 query 编码与离线文档编码。云 API 还需考虑数据合规、限流和版本稳定性。许可证必须允许目标商业使用。

换 embedding 通常需要重建全部文档向量,旧新向量不能混在同一空间直接比较。采用双索引:后台回填新索引,shadow 查询比较,完成后切流量;cache key 与索引版本同步更新,并保留旧索引用于回滚。

八、常见误区与追问

  • 误区:公开榜单第一就是业务最佳。 数据语言、长度与难负样本不同,必须自有集验证。
  • 误区:维度越高效果越好。 维度增加成本,信息质量由训练目标决定。
  • 误区:换模型只替换在线编码器。 全库文档向量必须同空间重建。
  • 追问:Recall 高但答案差怎么办? 检查 rerank、packing 和生成;固定真值证据做分层实验。
  • 追问:什么时候微调 embedding? 业务有稳定标注和困难负例,通用/混合基线仍不足时。
  • 追问:阈值能跨模型复用吗? 不能,应按每个模型与切片重新校准分数分布。

九、加强记忆

Embedding 选型可记成“域、召、排、维、速、迁”:看语言领域,先测召回再测排序,核对维度存储与在线速度,最后规划全量重建迁移。使用官方前缀与相似度配置,以 BM25 和混合检索为基线,并把端到端答案作为最终验收,而不是迷信榜单或向量维度。