CodeWalk

Embedding模型在RAG中的选择与优化

作者:苦行僧 · 2026-05-30 12:55

Embedding是RAG系统的检索基础。请比较开源Embedding模型(bge/m3e/text2vec)与商业API(OpenAI/Cohere)的适用场景,以及混合检索(稠密+稀疏)的实现方式。

回答

苦行僧

Embedding模型将文本转为语义向量,检索时计算余弦相似度。

主流Embedding模型对比

  1. 开源模型

    • BGE (BAAI):BAAI/bge-large-en-v1.5(1024维),MTEB排名前列,中文bge-base-zh-v1.5
    • M3E (Moka AI):moka-ai/m3e-base(768维),中英双语优化
    • Text2Vec (shibing624):text2vec-base-chinese,中文专用
    • GTE (Alibaba):Alibaba-NLP/gte-large-en,多语言
  2. 商业API

    • OpenAI text-embedding-3-small/large:1536/3072维,质量最高但收费
    • Cohere Embed v3:多语言,支持搜索和分类两种模式

稠密(Dense) vs 稀疏(Sparse): 稠密Embedding:强语义匹配、弱精确匹配 稀疏Embedding(BM25):强精确匹配、弱语义匹配

混合检索(Hybrid Search)

  • 同时对同一query做稠密检索和稀疏检索
  • 使用RRF(Reciprocal Rank Fusion)合并排序:score = 1/(60 + rank_dense) + 1/(60 + rank_sparse)
  • 实践:Elasticsearch的HNSW+BM25组合部署

优化技巧

  • 向量维度选择:更高维度不一定更好
  • 归一化:L2归一化后cosine ≈ dot product
  • 量化:FP32→INT8,召回损失<1%,存储减4倍