做RAG(检索增强生成)的朋友,一定踩过这个坑:明明Prompt写得很好,大模型也很强,但检索出来的内容就是不靠谱。
问题很可能出在Embedding模型上。
今天就来聊聊,RAG检索中那些主流的Embedding模型,以及到底该怎么选。
一、主流Embedding模型盘点
1. OpenAI系列:曾经的绝对主力
早期做RAG,OpenAI的embedding模型几乎是唯一选择。text-embedding-ada-002 一度是行业标准,1536维、英文效果极佳。
但说实话,中文能力确实稍弱。如果你的项目主要面向中文场景,OpenAI可能不是最优解。
2. BGE-M3:国产之光
智源研究院推出的BGE-M3,曾经是最强的中文Embedding模型。它支持稠密+稀疏+多向量的混合检索,在中文场景下表现优异。
不过整体性能 compared to OpenAI的模型,还是略逊一筹。
3. Qwen系列:开源大哥
阿里通义千问(Qwen)进入爆发期后,推出了一系列开源Embedding模型,从0.6B到8B,从纯文本到支持视觉的多模态模型,覆盖面极广。
开源社区现在基本被Qwen刷屏了,生态好、文档全、社区活跃,强烈值得关注。
4. Gemini Embedding 2:多模态新贵
Google最新推出的Gemini Embedding 2,支持多模态输入,也是目前比较热门的选择之一。
二、选型必看:维度参数
使用Embedding模型时,维度参数是一个关键指标:
- 维度越高 → 精度越高
- 维度越高 → 向量数据库存储空间越大
常见维度有:1024、1536、2048、3072 等。
怎么选?根据项目实际情况评估:
- 资源有限 → 选低维度
- 追求精度 → 选高维度
- 没有银弹,适合你的才是最好的
三、Embedding的进化史
广义上的Embedding,其实可以分为稀疏检索和稠密检索两大阵营。
稀疏检索:精确匹配的老将
稀疏检索就是我们熟悉的精确关键词匹配,核心公式是:
词频 + 逆文档频率 + 文档长度归一化
代表算法是BM25,Elasticsearch和Lucene默认使用的就是它。
稀疏检索的优势是精确匹配能力强,但语义理解能力弱。
稠密检索:语义理解的新贵
这就是我们通常说的Embedding大模型。它的算法演进经历了几个重要阶段:
第一阶段:Word2Vec / GloVe
将词映射到固定维度向量。问题是:词序信息丢失、上下文无关。"苹果"在水果语境和科技语境中是一个意思,这显然不合理。
第二阶段:BERT时代
基于Transformer架构,引入[CLS] token,终于实现了上下文理解。但BERT本质上是预训练模型,直接拿来做Embedding效果并不理想,需要fine-tuning。
第三阶段:SimCSE 对比学习
进入对比学习时代,核心思想很简单:让相似样本的向量靠近,不相似的拉远。分有监督和无监督两种,大幅提升了语义表示能力。
第四阶段:BGE 混合检索
最新的趋势是混合检索——在稠密算法中重新引入稀疏算法(BM25)的思想。
为什么?因为纯向量匹配只能做语义匹配,处理不了精确匹配。把老技术融合进来,鱼和熊掌兼得。
四、一个关键小知识
RAG检索时,知识库写入时的模型和查询时的模型,必须是同一个!
很多人检索效果差,就是因为写入和查询用了不同的Embedding模型,向量空间不一致,自然匹配不到。
五、如何查看最新模型排行?
如果你想知道当前哪个Embedding模型最强,可以关注 MTEB(Massive Text Embedding Benchmark)排行榜:
👉 https://huggingface.co/spaces/mteb/leaderboard
这是目前最权威的Embedding模型评测榜单,涵盖了多语言、多任务的综合评分。
⚠️ 但有一点必须强调:
排行榜只是通用测试,不代表你的场景!
MTEB的测试集是通用的,但每个项目的知识库特点不同:
- 你的数据是技术文档还是法律条文?
- 是短文本问答还是长文档检索?
- 是中文为主还是多语言混合?
正确的做法是:用排行榜做初步筛选,然后用你自己的知识库数据做针对性测试。
别人的第一名,不一定是你的最优解。
总结
Embedding模型的选择没有标准答案,关键看你的场景:
- 中文优先 → BGE、Qwen
- 多模态需求 → Qwen多模态、Gemini Embedding 2
- 英文为主 → OpenAI依然能打
- 追求精度 → 高维度 + 混合检索
技术选型不是追新,而是找到最适合自己业务的那一个。
希望这篇文章能帮你少走弯路。如果觉得有用,点赞+收藏,后面选型的时候翻出来看看!
