你在做 RAG,向量化这一步选谁一直没底:官方页面只列规格,评测榜单又是通用任务,跟你自己的语料对不上。这篇不给你一个「最好模型」的结论,而是给一套能自己跑的评测流程——定任务、造数据集、算指标、看成本,再决定要不要换。适合已经有一版检索链路、想把召回质量调到可解释的工程师。
做 RAG 的人迟早会卡在向量化这一步:官方页面只列规格,榜单又是通用任务的排名,跟你的语料根本对不上。这篇不给「最好模型」这种结论,只给一套能自己跑的评测流程——定任务、造数据集、算指标、看成本,最后再决定要不要换。前提是你已经有一版能跑的检索链路,想把召回质量调到可解释。
先说一句省时间的:评测的目标不是找出全场最强,而是找出「在你自己的语料和问法上,够用且便宜」的那一个。所以后面的每一步都在围绕你自己的数据,而不是别人的榜单。
先定任务,再谈指标:不同检索场景评的不是一回事
评测之前先分清你在做哪种检索。短查询找长文档(典型问答检索)、长查询找短文本(分类、聚类)、对称匹配(去重、相似推荐),这三类任务用的指标完全不能混着比。拿问答检索的直觉去评去重任务,很容易得出错误结论。
- 召回率
- 前 K 条里有没有把正确答案捞回来,最直观的底线指标
- MRR
- 正确结果排在多靠前,越靠前分越高,适合只看第一条的场景
- NDCG
- 看整体排序质量,多档相关性都能表达,不只看命中与否
- 轮廓系数/纯度和
- 聚类类任务常用,衡量同类聚得紧不紧、不同类分得开不开
- K 取多少要按你实际喂给大模型的上下文条数来定,别默认取十
- 同一个模型 Top-1 强、Top-20 可能被反超,看单个数字容易误判
- 如果检索后面接了重排模型,最终成绩要以重排后的结果为准,别只看粗排召回
- 术语没对齐先别动手,可以到 /ai-dict/category/basics 把距离度量、归一化这些前提搞清
评测集怎么造:几百条就够,关键是贴你自己的语料
别顺手拿公开榜单的测试集交差。通用语料和你业务文档在术语密度、句式长度上差得远,结论迁移不过来。真正有用的是 200 到 500 条「查询 + 正确文档 ID」,覆盖你真实问法的主要类型。宁可小而准,也别大而糊。
- 确定问法类型从线上真实提问、客服工单、搜索日志里归出几类典型问法,每类都要有样本,别全是一种句式
- 生成候选查询让大模型按文档反向生成问题,再人工筛一遍,去掉常识就能答的、答案有歧义的
- 标注正确文档 ID标到切片级别而不是文件级别,切片策略必须跟线上一致,否则评的不是同一个东西
- 切出留出集留一份不参与调参的样本,只在最后验收时用,否则你会不知不觉在评测集上过拟合
| 数据来源 | 优点 | 注意点 |
|---|---|---|
| 线上真实提问 | 最贴实际问法 | 样本可能稀,要攒一段时间 |
| 大模型反向生成 | 便宜、量大 | 必须人工筛,容易出套话问题 |
| 客服工单/搜索日志 | 带真实痛点 | 要脱敏,长尾噪音多 |
跑对比的实操顺序:从连通性到成本,一步步筛
很多人一上来就算指标,跑完才发现向量维度写错了。顺序应该反过来:先把接口通不通、维度对不对、延迟大概什么水平验掉,再进入对比环节。延迟基线可以先在 /tools/speed-test 量一下,作为后面换算成本的参照。
- 验证连通与维度先发一条最小请求,确认返回向量长度、归一化方式跟你预期一致
- 固定变量同一份切片、同一套查询、同一个 K,一次只换一个 embedding 模型,别同时改动切片策略
- 三类数据一起记检索质量指标、批量向量化的耗时与费用、向量维度带来的存储开销,维度越高存储越贵,单价到 /embeddings 核对当时的口径
- 小流量灰度用真实流量跑一两周,看点击、追问、答非所问的比例,离线涨线上不涨很常见
选型收口与常见坑:什么时候可以停,什么时候要重评
评测最大的坑不是指标算错,而是没有终点。开跑前给自己定一条及格线,比如前 K 条命中率达到你自己认可的水平就收手,否则会陷进无穷无尽的对比里。及格线不用跟别人一样,但要能解释为什么是这个数。
- 成本要按两块算:每次查询的向量化开销,加上存量文档重刷一遍的一次性开销,后者别漏
- 换模型意味着全量重新向量化,存量越多停机窗口越长,要提前排期,不能当热切换处理
- 评测集要随业务更新,问法变了、文档结构变了就补样本,别用一份老集子管一年
- 榜单可以参考但不是结论,/benchmarks 和 /rankings 是别人的口径,能不能对上你的场景得自己验
判断什么时候该重评:你的文档分布发生明显变化、线上追问率上升、或者换了切片策略和重排模型,这三件事任意一件发生,旧评测集的结果就不再可信,需要补样本重跑。
下一步想横向看各家中转站的可用性和口碑,先从 /sites 过一遍,再结合 /rankings 里的历史表现挑几个候选,最后用你自己造的那套评测集做最终拍板。→常见问题
没有标注数据,能评 embedding 模型吗?
可以先用弱监督起步:拿大模型按文档反向生成问题,人工只筛明显错的,凑出两三百条就能看出模型之间的相对差距。但要清楚这种集子偏向「文档里写到的内容」,覆盖不了用户真实的口语化提问,正式选型前最好补一批线上真实问句。
维度和检索质量是什么关系,越高越好吗?
不必然。更高维度能装下更多区分信息,但也会放大噪声、抬高存储和检索成本,而且不同模型之间的维度不能横向比优劣。判断方法还是固定语料跑对比,看质量提升值不值那份存储开销,具体维度和价格口径到 /embeddings 核对当时的数字。
离线指标涨了,线上效果没动,问题出在哪?
大概率是瓶颈不在向量化。常见原因有三个:切片太长导致单条召回自带噪声、没有重排直接按距离取前几条、或者提示词没把检索内容用好。先按这个顺序排一遍,别急着换 embedding 模型,换了通常也不解决问题。