BGE-M3:真正会说话的嵌入向量 法语
BGE-M3(BAAI,MIT 许可证)是一个支持超过 100 种语言的嵌入模型,每个文本片段最多可接受 8,192 个 token,并在一次处理过程中生成三种表示:稠密表示(整体语义)、词汇表示(精确词项,类似 BM25)和多向量表示(类似 ColBERT 的重排序)。对于法语语料,它比公开排行榜中的英语模型更稳妥。通过 Ollama 使用时(bge-m3:567m),其大小为 1.2 GB,无需显卡也能运行。
大多数排名靠前的嵌入模型主要使用英语数据训练。用于法语语料时,它们不会报错,但检索效果较差——这种失败最具隐患,因为没有任何迹象提示问题。中国 BAAI 实验室发布的 BGE-M3 是少数真正支持多语言的模型之一,还具备一项实用特性:一次生成三种表示形式,无需额外成本。
#法语处理的难题
嵌入模型从训练语料中学习如何判断相似性。如果语料中有 90% 是英语内容,模型就能准确地表示英文文本之间的相对关系,而对法语文本的处理则远没有那么精细。实际使用时,在法语文档语料库中,这会导致相关段落未被检索出来,无关段落却被检索出来——没有任何错误提示,日志中也没有警告,而且往往直到有用户指出回答答非所问,才有人注意到这个问题。
这就是为什么“选择哪种嵌入模型”这个问题会因语言不同而有不同的答案。公开排行榜(如 MTEB)中的任务大多是英语任务;这些排名无法预测模型在您的文档或专业词汇上的表现。中国研究机构 BAAI(Beijing Academy of Artificial Intelligence,北京智源人工智能研究院)正是针对这种情况设计了 BGE-M3:其名称代表 Multi-Functionality、Multi-Linguality、Multi-Granularity,即多功能、多语言、多粒度——三种检索功能、100 多种语言,以及从短句到长文档的输入,都整合在一个模型中,而不是分散在多个工具之间。
#BGE-M3带来的优势
你的文档,你的 AI:基于你的 PDF、笔记和邮件的可靠本地 RAG——无需向云端发送任何内容。
- 在线空间,终身可用
- PDF + 文件
- 终身更新
- 多语言设计
- 该模型根据官方规格支持超过100种工作语言;其对法语的处理准确,同时支持用法语查询英文语料库。
- 长上下文:8192个标记
- 它能接受的文本段落明显长于大多数嵌入模型所支持的长度(后者通常限制在 512 个 token),因此在选择索引分块大小时更灵活。
- 同时支持三种表示形式
- 稠密、词汇和多向量三种表示在一次前向计算中生成;据 BAAI 称,不会增加计算开销。
- MIT 许可证
- 企业使用无特殊限制;在集成模型前,请始终查阅模型详情页,因为许可证可能在不同版本间发生变化。
- 无需额外指令
- 与其它较早的BGE模型不同,BGE-M3不再需要在请求中添加指令:可直接使用,简化了集成流程。
#稠密、词法、多向量:各有什么用
| 表示 | 它所捕捉的信息 | 它带来的价值 |
|---|---|---|
| Dense | 将文本表示为一个捕捉其整体语义的向量 | 经典语义搜索 |
| 词汇(稀疏) | 词表中的每个词项都有一个权重,除文本中出现的词外,其余权重均为零 | 像 BM25 一样,找出语义检索遗漏的引用编号、缩写和专有名词 |
| Multi-vecteur | 每个文本多个向量,类似ColBERT的结构 | 对最佳候选结果进行更精确的重排序 |
优势在于可以进行混合检索,而无需运行两个独立模型:官方模型说明明确推荐混合检索与重排序相结合,利用在生成稠密嵌入向量的同时获得的“无额外成本”的词法权重。词法部分恰好能弥补稠密向量部分的检索失败,多向量部分则用于对筛选出的约二十个候选结果进行重排序。并非所有向量数据库都能利用这三种输出,但仅使用稠密向量就已足以满足常规使用需求——这也是入门时最容易实现的配置;如果准确性仍然不足,再添加词法层。
#本地使用
在本地测试 BGE-M3 最快的方法是使用 Ollama,它以 bge-m3:567m 的名称提供该模型的量化版本——拥有 5.67 亿参数,下载大小约为 1.2 GB,模型页面标注的上下文窗口为 8000 个 token。该模型基于 XLM-RoBERTa-large 构建,先通过专门的预训练(RetroMAE)将上下文长度扩展至 8192 个 token,再通过一个统一的微调阶段同时针对三项检索任务进行训练,而不必维护三个独立模型。
对于完整的 RAG 流程,只有稠密输出能在无需特殊配置的情况下直接用于大多数标准向量数据库(Qdrant、Milvus、pgvector);词法输出和多向量输出则需要能够将它们结合使用的引擎,例如 BAAI 引用的 Milvus 和 Vespa 集成文档就说明了这一点。
在传统的 RAG 流程中,使用本地 LLM 时,BGE-M3 仅替换默认的嵌入模型:文档的每个片段在索引时仅编码一次,每次用户提问时对问题进行编码,然后将检索到的最优段落传递给负责生成的 LLM(Qwen、Mistral、Llama 等),该模型运行在 Ollama 或 LM Studio 上。嵌入模型与生成模型的选择是两个独立的决策:无需两者来自同一模型家族,实践中也极少如此。
#用您自己的文档进行验证
产品页面标注‘超过100种语言’并不保证语言间的质量一致性:这仅表示覆盖范围,而非每种语言的评分。BAAI在MIRACL(多语言检索)和MLDR(长文档检索数据集)上评估BGE-M3,MLDR是该实验室为该模型专门发布的、覆盖13种语言的长文档检索数据集,并提供相应的公开评估流程。这些评估基于标准化的检索语料库,仅能反映总体趋势;无法替代在您自身领域、使用您专属技术术语和问题表述方式的自有语料库上的实际测试。
- 01构建一个具有代表性的小样本从目标语料库中选取二十到三十份真实文档,保留其在长度和词汇上的常见多样性,而不是只挑选精心筛选的样本。
- 02按照您的用户实际提问的方式编写问题十到二十个真实问题,包括使用同义词或与源文档表述不同的问题。
- 03在同一组样本上比较两个或三个模型将BGE-M3与一个知名的英语模型进行比较;如果条件允许,再加入另一个多语言模型。记录正确文本段落出现在前三个结果中的次数。
- 04在大规模导入前作出决定测试需要半天时间;在完整语料库索引后更换模型,必须重新编码全部内容,如上文所述。
#成本是多少
这个嵌入模型比当下流行的小型英语模型更大:它有 5.67 亿个参数,下载大小为 1.2 GB,在这类模型中属于中等规模,与那些只有几千万个参数、在纯速度排行榜上占据领先位置的模型相去甚远。它的编码速度更慢,占用的内存也更多。首次为大型语料库建立索引时,这种差异很明显;但只查询一个问题时,相比后续语言模型的生成耗时,这点差异几乎察觉不到。
另一个影响是:其稠密向量有 1 024 个维度,因此索引比使用 384 或 768 维模型时占用更多空间。当文本片段达到一百万个时,算下来增加的存储空间就不容忽视了,这时应考虑向量数据库的压缩选项。
| 模型 | 维度 | 最大长度 | 覆盖范围 |
|---|---|---|---|
| BAAI/bge-m3 | 1 024 | 8 192 tokens | 支持多语言,统一了三种检索方法 |
| BAAI/bge-large-en-v1.5 | 1 024 | 512 tokens | 仅支持英文 |
| BAAI/bge-base-en-v1.5 | 768 | 512 tokens | 仅支持英文,更轻量 |
| BAAI/bge-small-en-v1.5 | 384 | 512 tokens | 仅支持英文,最轻量级 |
对比很鲜明:在相同维度(1 024)下,BGE-M3 每段文本可接受的 token 数量是 bge-large-en-v1.5 的十六倍,并且覆盖 100 多种语言,而 BAAI 的整个“en”系列仅限于英语。为了不必为语料库中的每种语言选择不同的模型,也不必根据传入文档的语言维护多个独立索引,需要付出的代价就是更大的下载体积和更长的编码时间。
#何时选择它,何时无需使用它
| 情况 | 选择 |
|---|---|
| 法语或多语言语料库 | BGE-M3 或其他真正支持多语言的模型 |
| 关于英文文档的法语问题 | 必须使用多语言模型 |
| 纯英语语料库,优先考虑速度 | 一个以英语为主的专用小模型 |
| 长度较长(超过512个token)且不希望进一步分割的段落 | BGE-M3,因为其输入长度可达 8192 个 token |
| 硬件资源极为有限 | 更轻量的模型,即使这意味着法语内容的检索相关性会有所下降 |
- 面向法语的嵌入模型全景
- 本地运行嵌入模型
- 对候选项重新排序,以提高准确性
- 使用 pgvector 将这些向量存储到 PostgreSQL 中
- 来源:Hugging Face上的BGE-M3官方文档
- 来源:Ollama 模型库中的 bge-m3
- 来源:BGE-M3(FlagEmbedding)官方仓库和代码
#FAQ
BGE-M3在法语中表现良好吗?+
可以用法语查询英文文档吗?+
需要显卡吗?+
这三个输出项有什么作用?+
BGE-M3 每个文本段落最多支持多少 token?+
我之后可以更换吗?+
BGE-M3是否比OpenAI的模型在法语处理上更优?+
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。