首页/AI/RAG 与向量库速查/BGE-M3 多语言多粒度模型
Embedding 与检索50 条

BGE-M3 多语言多粒度模型

BGE-M3 同时提供稠密、稀疏(学习型权重)与多向量(ColBERT 式)三种表示,覆盖多语言与较长输入,适合一体化混合检索方案。

RAG 与向量库速查AI更新于 2026-10-13

多语言多粒度模型

这个模型同时提供稠密、稀疏(带学习权重)与多向量(按词片段表示)三种输出,覆盖多语言与较长输入,适合把稠密与稀疏两路检索统一到同一个模型上,省掉单独维护关键词侧的模型与词典。代价是输出更多、计算更重,需要按实际收益决定使用哪几种表示。

基本信息

模型BAAI/bge-m3
稠密维度1024
长度上限8192 token(以模型卡为准)
输出形式dense、sparse、colbert 三种

三种表示

三种表示
from FlagEmbedding import BGEM3FlagModel

model = BGEM3FlagModel("BAAI/bge-m3", use_fp16=True)
out = model.encode(["什么是向量检索"], return_dense=True,
                   return_sparse=True, return_colbert_vecs=False)
print(len(out["dense_vecs"][0]))
print(list(out["lexical_weights"][0].items())[:2])

使用要点

  • 按需开启输出:只做稠密检索时不必计算稀疏与多向量表示
  • 稀疏权重可写入支持稀疏向量的库,与稠密向量组合做混合检索
  • 融合方式按官方示例实现,不要自行简单加权相加
  • 长度上限放宽会显著增加显存占用与耗时,按实际文本长度设置
  • 入库与查询使用同一种输出组合,混用会让检索口径不一致

三种表示对照

表示特点适用
稠密向量语义相似,通用常规语义检索
稀疏权重词级权重,可解释专名与精确匹配
多向量细粒度匹配,精度高候选精排或高精度场景

常见问题

  • 显存不足:多向量表示占用明显更高,先确认设备容量
  • 融合效果不及预期:融合权重与归一化方式未按官方示例实现
  • 入库与查询表示不一致:只用稠密入库却用融合查询
  • 长度设置过大:计算量上升但多数语料用不到那么长
稀疏权重可直接写入支持稀疏向量的库,与稠密向量组合做混合检索,省去单独维护关键词索引与分词词典的工作。

落地建议

  • 先用稠密一路跑通基线,确认语义召回水平后再引入稀疏表示
  • 稀疏权重按库支持的格式写入,写入前检查词权重是否被截断
  • 多向量表示只用在精排环节,避免在线检索阶段的计算量过大
  • 同一索引的稠密维度与度量方式要固定,切换表示组合需要重建

易错点

  • 三种表示的融合方式按官方示例实现,不要自行简单加权相加
  • max_length 放宽到 8192 会显著增加计算量,按需设置
  • 只开启部分输出却在检索时按全部输出计算,导致口径不一致
  • 多向量表示占用显存较高,未做容量评估就上生产

数据来源与参考

  • Chen et al., BGE M3-Embedding, arXiv:2402.03216
  • FlagEmbedding 项目文档(github.com/FlagOpen/FlagEmbedding)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌