做知识库检索时,很多人默认「用DeepSeek就顺手把嵌入也用了」,结果发现向量化那一步根本不是一回事。这篇不吹榜单,只给一套能照着走的判断顺序:先确认有哪些可用路径,再按语料语言、库规模、部署位置和检索效果筛选,最后落到具体验证动作。
做知识库检索时,很多人默认「项目用了 DeepSeek,那嵌入也顺手用它」。真上手才发现,向量化那一步跟对话生成完全是两码事,接口、用途、选型逻辑都对不上。这篇不吹榜单,只给一套能照着走的判断顺序:先确认有哪些可用路径,再按语料语言、库规模、部署位置和检索效果逐项筛,最后落到上线前能做的验证动作。
结论放前面:嵌入模型和生成模型是两条独立的选型线,可以拆开选。项目里用 DeepSeek 做生成,完全不影响嵌入换成别的模型;反过来也一样。下面四节按决策顺序展开,每一节都给了不适用的边界和可执行的验证方法,照着自己的数据走一遍即可。
先弄清:DeepSeek系有没有「嵌入模型」这回事
对话模型和嵌入模型是两类东西。前者根据输入生成文本,后者只把一段文字映射成一串向量,不产出可读内容。两者参数不通用、接口不通用,拿聊天接口去硬凑检索,结果就是又慢又不准。选型第一步不是比较哪个好,而是先确认这一类别里当前有哪些可用条目。
- 到站内模型资料库按「嵌入」类别筛一遍,看当时有哪些条目、各自支持的语种和维度范围;
- 确认这些条目是官方提供、还是社区转换版本,两者的维护节奏和支持力度不同,别到出问题才发现没人管;
- 如果模型库里嵌入方向的选择确实很窄,就直接把嵌入拆成独立选型,不必硬绑 DeepSeek 生态;
- 判断不适用:只是几十上百篇文档做关键词匹配,根本不需要向量检索,上嵌入模型属于多余动作。
按语料筛:中文、代码还是多语言
语料决定了候选范围。中文文档为主的库,要重点看中文近义改写和口语化提问的匹配表现,通用英文模型在「同义不同词」的场景下经常掉链子。代码库、配置文件、日志这类语料要单独试,通用中文模型的检索效果通常撑不住。多语言混排(中英夹杂、含小语种)先确认模型的语种覆盖,别到上线才发现某类文档全是噪声。
| 语料类型 | 筛选要点 | 怎么验证 |
|---|---|---|
| 中文文档 | 中文近义、口语提问的召回 | 抽几十条真实问题人工标注正确文档 |
| 代码与配置 | 符号、缩写的区分能力 | 用报错信息和函数名当查询试召回 |
| 多语言混排 | 语种覆盖与跨语言匹配 | 分语种各抽一批问题对比结果 |
| 短文本问答 | 短语短句的语义稳定性 | 用两三词的问题看能否命中 |
- 建测评集从真实日志或业务问题里抽几十条查询,逐条标注应该命中的文档,不要自己编理想化的问题。
- 跑召回位置用候选模型各跑一遍,记录正确文档出现在前几位,重点看前三位的稳定性而不是平均值。
- 看失败案例把没召回的问题拿出来逐条看,是分块问题、查询表达问题,还是模型本身语义理解不够。
判断不适用的边界:如果查询本身就带明确关键词、用户习惯精确查找,关键词检索的命中并不会比向量差,此时上嵌入模型的边际收益有限,先把关键词那条路做扎实更划算。
按规模和维度定:库多大、要不要省存储
向量维度越高,索引文件越大、检索越慢,几百万条以上就要认真算存储和内存占用再定档。库规模小的时候可以先上高维方案保证效果,规模涨上来再考虑降维或换更轻的模型,不要一开始就按最优解配,容易把预算和运维全压上。
- 维度
- 每条向量占多少个数,直接决定索引体积和比对耗时
- 分块策略
- 文档切成多长一段,切太碎再好的模型也拼不回完整语义
- 降维
- 把高维向量压到低维,省存储但可能损失部分区分度,要重新验证
分块和模型是配套的:先定切分粒度,再定模型档位,顺序反了会来回返工。判断不适用的情况:数据量很小、查询频率很低时,维度优化带来的收益不明显,别为此反复折腾;这时候把精力放在切分和查询改写上更值。
部署方式与上线前验证
本地部署还是走接口,取决于数据能不能出内网、以及调用量大小,两条路的成本结构不同,先按这个顺序算:数据敏感度、日调用量、可接受的响应延迟,再决定。别先看别人怎么选。
- 换模型或迁移时保留旧向量做对照,用同一批问题比对新旧召回,别直接全量重建;
- 迁移后先灰度一部分流量,确认线上检索质量没有下滑再全量切换;
- 上线后监控检索命中率、空结果比例和耗时,出问题先查分块和查询改写,再怀疑模型;
- 同时用了重排模型的话,先分清嵌入负责召回、重排负责排序,别把两者的效果混在一起评。
模型选型不是一次定终身,而是先能用、再能测、最后才谈优化。下一步把候选模型在真实语料上的召回表现拉出来对比,再去站内模型资料库核对当时的条目和参数。→
常见问题
用DeepSeek的聊天模型能不能直接做向量检索?
不行。聊天模型输出的是文本,不是固定维度的向量,硬接检索链路只会拿到没法比对的字符串。检索需要专门的嵌入模型,两者是分工关系。DeepSeek 在生成侧可以继续用,向量化那一步单独选一个嵌入模型接上就行。
中文知识库一定要用国产嵌入模型吗?
不一定,但中文语料上要多试几家。有些通用多语言模型在中文近义、口语化提问上表现一般,换成中文优化过的模型召回会明显好。做法是拿你自己的问题集各跑一遍,看正确答案排在第几位,用结果说话,别只看模型介绍里的语种列表。
嵌入模型换了,已有的向量库要重建吗?
要。不同模型的向量空间不通用,混着用检索结果会乱。稳妥做法是新建一份索引,用同一批测试问题对比新旧召回,确认新模型更好再切换,旧的先留着做回退。全量重建前先算好耗时和存储,别在业务高峰期做。