跳到正文

文本嵌入模型怎么选?

对比 BERT、SimCSE 等 Embedding 模型在检索场景的适用性

原题:在向量检索任务中,常用的文本嵌入模型有哪些?请对比不同模型的特点和适用场景。

模型微调 · 百度真题

30 秒回答

  1. 区分通用嵌入模型与专用嵌入模型的差异
  2. 掌握主流模型的核心特点(如M3E、BGE、GTE、OpenAI等)
  3. 理解模型选型需考虑的因素(语言支持、向量维度、上下文长度、推理成本)
  4. 了解领域适配和微调策略

回答与解析

答案要点

  • 区分通用嵌入模型与专用嵌入模型的差异
  • 掌握主流模型的核心特点(如M3E、BGE、GTE、OpenAI等)
  • 理解模型选型需考虑的因素(语言支持、向量维度、上下文长度、推理成本)
  • 了解领域适配和微调策略
  • 能结合实际场景给出选型建议

主流文本嵌入模型分类

1. 开源中文模型(国内首选)

模型 特点 适用场景
BGE (智源) 中文SOTA,多尺寸(large/base/small),支持指令微调 通用RAG、需要高性价比的场景
GTE (阿里) 长文本支持好(8K),中文效果优秀 长文档检索、法律文书
M3E (开源社区) 轻量、易部署,适合资源受限环境 边缘部署、快速验证
BCEmbedding (网易) 双语对齐好,跨语言检索强 中英混合场景

2. 国际主流模型

  • OpenAI text-embedding-3/ada-002:效果稳定,API便捷,成本高
  • Cohere Embed:多语言支持好,长文本优化
  • E5/MiniLM:英文场景轻量选择

3. 选型核心维度

必考虑因素:

  • 语言覆盖:纯中文→BGE/GTE;中英混合→BCEmbedding或微调
  • 上下文长度:短文本(512)vs 长文档(8K+)
  • 向量维度:768/1024常见,维度越高存储成本越大
  • 推理成本:边缘端选小模型(如bge-small),服务端可选大模型

进阶优化:

  • 垂直领域建议用领域数据做对比学习微调
  • 重排序(Rerank)阶段可用Cross-Encoder提升精度

一句话总结

通用场景选BGE-large,长文本选GTE,成本敏感选M3E,中英混合做微调——没有最好,只有最适合业务约束的。

口语版讲法(约4分钟)

  • 一句话定位:选型本质是平衡语言、成本、上下文
  • 边界划分:开源 vs 闭源,通用 vs 领域微调
  • 真实场景:电商退款政策检索,BGE+GTE+rerank
  • 落地风险:模型更新、维度膨胀、数据漂移
  • 工程师判断:倾向混合检索加微调

这道题其实是在问,当你要做向量检索时,怎么在模型能力、成本、业务场景之间做取舍。说白了,没有万能模型,只有最适配你约束的方案。

先说分类。市面上模型可以划成开源和闭源两拨。开源里中文好的有BGE、GTE、M3E,闭源就是OpenAI、Cohere这些。但真正落地时,很少只用一种。比如你的场景是电商客服要检索退款政策,文档有长有短,有纯中文也有中英混杂。我会把BGE-large作为主力,因为它中文语义理解强,性价比高,适合大部分问答。但遇到那种几千字的政策条款,BGE的默认上下文可能不够,我就换成GTE,它支持8K token,能完整编码长文档。这就引出一个关键:不要迷信单一模型,要根据文本长度和语言灵活组合。

再一个,很多人忽略边界。向量检索不是万能的。如果你的query里包含精确订单号或错误码,向量embedding会丢失精度,这时候需要跟关键词检索结合,比如Hybrid Search,用BM25兜底。我见过不少项目上线后召回率低,一查全是向量模型对短代码不敏感。所以前提是,你得先判断数据里有没有结构化片段。

举个例子,一个退货申请页面,用户输入“订单号12345为什么退款失败”,我期望召回两条政策:“退款失败可能原因”和“订单状态异常处理”。如果只用向量,可能只召回语义接近的第一条,漏了第二条。所以我会做两路召回:一路向量检索语义相似文档,一路关键词匹配订单号,然后用Rerank阶段把结果合并排序。这样命中率明显提升。

落地还有几个坑。第一,模型更新频繁,BGE从1.0到3.0向量分布会变,如果你已经存了几千万向量,重新索引成本极高。我会在选型时预留一个版本兼容层,比如存两份不同维度的向量,或者用Product Quantization压缩,但精度会有折损。第二,维度越高不一定越好。768维和1024维,检索效果可能只差1%,但存储和计算成本翻倍。我一般会先用小维度模型做快速验证,效果不达标再升维,而不是一上来就上最大号。

另外,很多团队忽略数据漂移。业务政策每季度更新,旧向量对新query可能不匹配。我倾向于定期用线上真实query回测,如果Recall@K掉到阈值以下,就触发增量微调。但微调不是万能药,它需要标注数据,成本不低。

所以我的判断是:没有银弹。我更倾向走混合路线,开源模型做主体,关键词检索做补充,再根据业务反馈迭代微调。面试官如果感兴趣,我可以展开聊聊微调时怎么构造对比学习样本,或者怎么评估向量质量。

关键一句:数据漂移导致向量模型效果退化,需要定期回测和增量微调,但微调成本高且需要标注数据

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做一个电商客服的智能问答,用户问“这个订单什么时候发货”,你需要从商品库和订单库里检索相关信息。你会选哪个文本嵌入模型来做向量化?为什么?

  2. 问法 2 · 层层追问

    做RAG的时候你一般用什么模型把文本变成向量?……中文场景和英文场景有区别吗?……那如果文档特别长,比如法律文书,你还会用同一个模型吗?

  3. 问法 3 · 直球架构

    聊一下文本嵌入模型选型。从BGE、GTE、M3E、OpenAI这些里挑,怎么选?要考虑语言支持、上下文长度、向量维度、推理成本这些,你具体怎么权衡?

同模块相关题目