最佳嵌入模型 FR
对于法语,BGE-M3 是最稳妥的起点:支持多语言,上下文窗口为 8,192 tokens,采用 MIT 许可证,可在 Ollama 中获取。Qwen3-Embedding 和 EmbeddingGemma 是近期推出、可供测试的替代方案。处理法语时,应避免使用以英语为主的模型(nomic-embed-text、mxbai-embed-large、all-MiniLM)。最终选择需在您自己的文档上验证。
嵌入模型将每段文本转换为向量:正是它决定了「CDD」和「固定期限合同」是相近概念。对于法语,MTEB-French 基准测试显示 BGE-M3 与 all-MiniLM-L12-v2 在检索得分上的差距为 22 个点。本页面对可在本地使用的开放模型进行排名,引用已发布的测量结果及其局限性,然后讨论生产环境中成本高昂的因素:前缀、截断、维度、存储与重新索引。
#什么是嵌入模型,以及法语为何会带来额外复杂性
嵌入模型是一种神经网络,可将文本(一句话、一段文字或一个文本块)转换为数值向量,其维度因模型而异,从 384 到 4,096 不等。语义相近的两段文本会产生相近的向量,通常用余弦相似度衡量这种接近程度。正是这种机制使 RAG 能够在用户输入“CDD”时,找到有关“固定期限合同”的段落,即使两者没有任何共同词汇。正如 Ollama 文档所强调的,问题和文档必须由同一个模型编码;因此,更换模型就必须重新索引整个语料库。选择时,只需回答三个问题:模型是否在法语语料上训练过?它的上下文窗口是否能容纳您的文本块?它的许可证是否允许您的用途?
法语本身还带来一些难点:重音符号、省音(如“l'employeur”)、法律缩略语,以及混在文本中的技术性英语用语。模型之间的差距明显。在 MTEB-French 基准测试中,all-MiniLM-L12-v2 的检索得分为 0.43,BGE-M3 为 0.65,在同一组问题上相差 22 个百分点。
#真正区分模型的五个标准
你的文档,你的 AI:基于你的 PDF、笔记和邮件的可靠本地 RAG——无需向云端发送任何内容。
- 在线空间,终身可用
- PDF + 文件
- 30 天内退款
- 训练语言
- BGE-M3 和 Qwen3-Embedding 宣称支持超过 100 种语言,multilingual-e5-large 宣称支持 94 种。在 Ollama 中下载量很高的 nomic-embed-text-v1.5 和 mxbai-embed-large-v1,其模型说明页均标注为 English。
- 最大上下文长度
- multilingual-e5-large、Solon 和 mxbai-embed-large 为 512 token;EmbeddingGemma 为 2048 token;BGE-M3 为 8192 token;Qwen3-Embedding 和 Granite R2 为 32000 token。过长的文本块会被截断,而不会被拒绝。
- 维度与存储
- 384 至 4 096 维;使用 float32 时,每个向量的每一维占 4 字节(计算见下文)。
- 许可证
- BGE-M3、multilingual-e5-large 和 Solon 采用 MIT 许可证;Qwen3-Embedding、Granite R2、nomic 和 mxbai 采用 Apache 2.0 许可证;EmbeddingGemma 适用 Gemma 条款;jina-clip-v2 采用 CC BY-NC 4.0 许可证(非商业用途)。
- 前缀和指令
- 某些模型要求在每段文本前添加前缀(E5 使用“query:”和“passage:”,即使文本是法语也一样)。遗漏前缀会降低检索效果,但不会报错。
#2026年法语模型排名:共对比九个模型
该排名为编辑推荐,非内部测试:综合了法语支持、已发布基准测试及本地部署可用性。模型权重若在 Ollama 库中存在则采用该库权重,否则采用 MTEB-French 研究估算的 float32 权重。
| 模型 | 维度 / 上下文 | 许可证 | 模型大小 | 各来源对法语支持的说明 |
|---|---|---|---|---|
| BGE-M3 (BAAI) | 1 024 / 8 192 | MIT | 1.2 GB (Ollama) | 检索 MTEB-French 0.65。支持密集、稀疏和多向量。推荐作为起点。 |
| Qwen3-Embedding 0.6B / 4B / 8B | 1 024 / 2 560 / 4 096 ; 32 000 | Apache 2.0 | 639 MB / 2.5 GB / 4.7 GB (Ollama) | 支持超过 100 种语言。据 Qwen 公布,多语言 MTEB 得分为:64.33 / 69.45 / 70.58。 |
| EmbeddingGemma 300M (Google) | 768 (512, 256, 128) / 2 048 | Gemma | 622 MB (Ollama) | 超过100种语言。MTEB多语言v2:Google数据显示为61.15。 |
| multilingual-e5-large | 1 024 / 512 | MIT | 2.24 GB(float32) | MTEB-French 检索得分为 0.59。必须使用前缀。 |
| Solon-embeddings-large-0.1 | 1 024 / 512 | MIT | 2.24 GB(float32) | 由 Ordalie Technologies 发布的法语模型。MTEB-French 检索得分为 0.63。 |
| Granite Embedding 311M Multilingual R2 (IBM) | 768 / 32 768 | Apache 2.0 | 3.11亿参数 | 法语是 52 种得到强化的语言之一。据 IBM 报告,多语言 MTEB 检索得分为 65.2;尚未查阅独立的法语评测。 |
| nomic-embed-text v1.5 | 768 / 8192(在 Ollama 中为 2048) | Apache 2.0 | 274 MB (Ollama) | 资料页标注的语言为英语。应仅用于英语语料库。 |
| mxbai-embed-large-v1 | 上下文长度512 | Apache 2.0 | 670 MB (Ollama) | 资料页标注的语言为英语。应仅用于英语语料库。 |
| all-MiniLM-L12-v2 | 384 | Apache 2.0 | 3300 万参数 | MTEB-French 检索得分为 0.43。原型仅在 CPU 上运行。 |
BGE-M3 仍是最佳默认选择:其法语检索结果已公布,8,192 个 token 的上下文长度可避免大多数被迫切分的情况,它还提供有助于混合检索的词法权重。有显卡可用时,可以考虑 Qwen3-Embedding:据 Qwen 称,其 8B 版本在 2025 年 6 月 5 日发布时位居 MTEB 多语言排行榜榜首,但其 4,096 维向量会带来较大的存储负担。EmbeddingGemma 面向配置较低的设备。
Solon 常被介绍为法语法律和行政领域的专家,但在 MTEB-French 研究的三个检索数据集上,它都没有胜出:在 Syntec 集体协议数据集上与 BGE-M3 持平,在法律条文(BSARD)和学校学习问题(Alloprof)数据集上则落后于 BGE-M3。
#法语基准测试能说明什么,又不能说明什么
已发表的参考基准是MTEB-French(Ciancone等,2024年5月):18个数据集、8类任务,共比较了51个模型。作者得出结论,针对句子相似性进行预训练的大型多语言模型表现极为出色。以下是三个数据集上的检索结果(NDCG@10):法语法律条文(BSARD)、Syntec集体协议以及Alloprof的学科问题。
| 模型 | 检索平均分 | 法律(BSARD) | Syntec 集体劳动协议 | Alloprof |
|---|---|---|---|---|
| text-embedding-3-large (OpenAI API) | 0,73 | 0,73 | 0,87 | 0,60 |
| mistral-embed (API Mistral) | 0,68 | 0,68 | 0,79 | 0,57 |
| BGE-M3 | 0,65 | 0,60 | 0,85 | 0,49 |
| Solon-embeddings-large-0.1 | 0,63 | 0,58 | 0,85 | 0,47 |
| multilingual-e5-large | 0,59 | 0,59 | 0,81 | 0,38 |
| multilingual-e5-small | 0,52 | 0,52 | 0,76 | 0,27 |
| paraphrase-multilingual-MiniLM-L12-v2 | 0,44 | 0,38 | 0,66 | 0,27 |
| all-MiniLM-L12-v2 | 0,43 | 0,34 | 0,61 | 0,33 |
有三项局限,因此不能据此给出最终排名。这项研究发表于 2024 年:既不包含 Qwen3-Embedding(2025 年 6 月),也不包含 EmbeddingGemma(2025 年 9 月)或 Granite R2,而且编写本页时并未参考这些模型在法语上的任何可比评测数据。研究所用的语料库(法律条文、集体劳动协议、学校教育问题)未必与您的语料库相似。最后,厂商公布的多语言评分是自行报告的数据,并且混合了所有语言的结果。
#不同场景该选哪个模型:决策表
| 您的情况 | 优先测试的模型 | 为什么 | 注意事项 |
|---|---|---|---|
| 法语或法语 + 英语语料,电脑配置尚可 | BGE-M3 | 法语检索得分为 0.65,与该研究中表现最好的开放模型处于同一水平 | 在Ollama中为1.2 GB;无前缀 |
| 法律、行政、人力资源 | BGE-M3,随后对比 Solon | 在该研究的三个法语数据集上,BGE-M3 的表现与 Solon 持平或更好 | 没有内部法律测试集来验证,选择一个模型仍是在冒险 |
| 低端设备或仅使用CPU | EmbeddingGemma 300M,或 multilingual-e5-small | 在 Ollama 中大小为 622 MB;由 Google 为笔记本电脑和移动设备设计 | 上下文长度为2048个token:分块较短 |
| 显卡可用,最高质量 | Qwen3-Embedding-4B 或 8B | 32000个标记,可调节维度,支持100多种语言 | 2560 维和 4096 维:存储需求与索引限制 |
| 长片段、结构化文档 | BGE-M3、Qwen3-Embedding或Granite R2 | 8192 到 32768 个上下文标记 | 过长的分块会稀释语义 |
| 商业用途,许可证审计 | BGE-M3、multilingual-e5-large、Solon、Qwen3-Embedding、Granite R2 | MIT 或 Apache 2.0 | 重新阅读 Gemma 的使用条款;jina-clip-v2 为非商业用途 |
#企业定制嵌入模型:开放模型、微调或 API
“量身定制”并不意味着一开始就训练自己的模型。避免浪费时间的顺序是:先使用通用的开放模型,做好分块,采用混合检索和重排序器;然后用您的实际问题评估召回率;最后,只有在失败仍然持续、且原因在于业务术语(内部引用、公司自用缩写)时,才进行微调。
Philipp Schmid 于 2024 年 6 月使用从金融文档中提取的 6300 组问题与段落配对,对 bge-base-en-v1.5 模型进行了微调:在他的测试集上,检索得分提高了约 7.4%,训练在一块消费级显卡上耗时三分钟。这是一个英文案例,只涉及一个语料库,且配对由 LLM 生成:仅供了解大致量级,并非效果承诺。BAAI 也提供了 BGE-M3 微调的相关文档。
| 选项 | 何时选择 | 限制 |
|---|---|---|
| 在本地运行的通用开放模型(BGE-M3、Qwen3-Embedding) | 默认起点;文本保留在您的网络内;MIT或Apache许可证 | 尚未学会业务领域术语;需使用您的文档进行评估 |
| 开放模型微调 | 混合检索和重排序器仍无法提升召回率;已有数千组问题与文本片段配对 | 需要重新编码的语料库;模型需像软件一样进行版本管理;存在过拟合风险 |
| 嵌入 API(Mistral,OpenAI) | 无GPU,使用量适中;在2024年MTEB-French研究中,text-embedding-3-large和mistral-embed表现领先 | 文本将离开您的网络;模型可能由供应商端变更;存在持续性成本 |
#多模态嵌入:在图像和文档页面中进行检索
多模态嵌入模型将文本和图像映射到同一个向量空间。这样就可以根据一句话检索照片,或检索扫描的 PDF 页面,而无需经过 OCR。本页查阅的 Ollama 模型库中的模型(BGE-M3、Qwen3-Embedding、EmbeddingGemma、nomic-embed-text、mxbai-embed-large)仅接受文本输入:下面的多模态模型通过 Hugging Face(Sentence-Transformers 或 Transformers)使用。
| 模型 | 输入 | 许可证 | 须知 |
|---|---|---|---|
| Qwen3-VL-Embedding 2B / 8B | 文本、图片、屏幕截图、视频 | Apache 2.0 | 32,000个token;2048和4096维;可调节维度 |
| jina-clip-v2 | 文本与图像;94种语言 | CC BY-NC 4.0 | 仅限非商业用途:未经发布方许可,应避免用于付费产品或服务 |
| ColPali v1.3 | 图像形式的文档页面,多向量 | MIT(资料页) | 模型卡标注为英语;每页使用多个向量会改变存储方式 |
多模态模型在纯文本任务上并不更好。在 Qwen 发布的表格中,Qwen3-VL-Embedding-2B 在 MTEB 多语言评测中得分为 63.87,而 Qwen3-Embedding-0.6B 得分为 64.33,后者是一个参数量不到前者三分之一的文本模型。对于有效内容为文本的 PDF,请将其转换为干净的文本(使用 Docling 或 OCR),并继续使用文本嵌入模型。将多模态模型留给视觉类语料:示意图、图纸、截图、幻灯片。
#管理嵌入向量:前缀、截断、存储与重新索引
RAG 的效果下降往往更多是由这些细节造成的,而不是模型选择本身。第一个细节是:每个模型家族对问题和文档各有不同的输入格式要求。
| 模型 | 问题前的前缀 | 文档之前 |
|---|---|---|
| BGE-M3 | 无 | 无 |
| multilingual-e5-large | query: | passage: (必填,即使为法语) |
| Solon-embeddings-large-0.1 | query : | 无 |
| nomic-embed-text v1.5 | search_query: | search_document: |
| mxbai-embed-large-v1 | 用于检索相关段落的句子表示: | 无 |
| Qwen3-Embedding | Instruct: {用一句话描述任务},换行,Query: {问题} | 无 |
| EmbeddingGemma | task: search result | query: {question} | title: {标题或 none} | text: {内容} |
使用Ollama时,mxbai-embed-large的官方示例会将前缀直接嵌入发送的文本中:您需要在自己的代码中手动添加该前缀。Qwen表示指令通常可提升1%至5%的性能,即使在多语言语料库中,也建议使用英文编写指令。
#Ollama 的陷阱:静默截断
Ollama 的 /api/embed 接口有一个 truncate 参数,默认值为 true:输入超过模型的上下文窗口时,会被截断而不报错。使用 mxbai-embed-large(在 Ollama 中的上下文窗口为 512 个 token)时,一个 700 个 token 的分块会在缺少末尾内容的情况下被索引,而且没人察觉。Ollama 中的上下文长度也可能与原始模型说明不同:nomic-embed-text 在 Ollama 中为 2K,而 Nomic 公布的是 8 192。测试时请将 truncate 设为 false:宁可报错,也不要让文本被截断。
#维度、存储与索引限制
存储计算方式很简单:chunk 数量 × 维度 × 4 字节(float32),不包含索引。对于一百万个 chunk,向量本身占用的空间为:
| 维度 | 模型示例 | 存储 |
|---|---|---|
| 256 | 降维后的 EmbeddingGemma 或 Qwen3(Matryoshka) | 1.0 GB |
| 384 | all-MiniLM-L12-v2 | 1.5 GB |
| 768 | EmbeddingGemma, Granite R2, nomic | 3.1 GB |
| 1 024 | BGE-M3,multilingual-e5-large,Qwen3-0.6B | 4.1 GB |
| 2 560 | Qwen3-Embedding-4B | 10.2 GB |
| 4 096 | Qwen3-Embedding-8B | 16.4 GB |
数据库也有上限。使用 pgvector 时,索引最多支持 2,000 维向量,采用半精度(halfvec)时则最多支持 4,000 维:Qwen3-Embedding-8B 的 4,096 维甚至超过了这一限制。应对方法是截断向量,经过 Matryoshka 训练的模型(Qwen3-Embedding、EmbeddingGemma、nomic v1.5)支持这种做法,然后再重新归一化,正如 Google 针对 EmbeddingGemma 所说明的那样。Ollama 的 /api/embed API 接受 dimensions 参数,该参数应仅用于这些模型。
#版本管理与重新索引
- 需保留的元数据
- 模型的确切名称、修订版本、维度、前缀模板、分块参数、索引日期。没有这些信息,就没人知道检索为何发生了变化。
- 更换模型
- 将整个语料库重新编码到新的集合中,进行评估后切换。切勿在同一个集合中混合使用两个模型。
- 归一化
- Ollama 返回 L2 归一化的向量:请在整个系统中使用相同的度量方式(余弦或点积)
#在实际场景中使用模型,并在您的文档上进行测试
只需记住两个分数的高低关系:第一个必须明显高于第二个。要认真比较两三个候选模型,下面的流程可以取代所有已发布的排名。
- 01构建一个真实的测试集收集 50 到 100 个真实用户提出的问题(客服咨询、工单、常见问题),并为每个问题标注包含答案的 chunk。由 LLM 编造的问题会让评测结果显得过于理想。
- 02使用每个候选模型进行编码按照前缀表先对 chunk 编码,再对问题编码;所有候选模型都应使用相同的 chunk 长度和存储维度。
- 03测量recall@5对于每个问题,检查前五个结果中是否包含正确的文本块。下面的脚本会完成这一计算。
- 04以成本为标准进行决策保留 recall@5 与最佳模型仅相差一到两个百分点的最轻量模型:体积是原来八倍的模型,每次重新索引都会增加存储和时间成本。
- Sentence Transformers:本地嵌入
- 分块策略:分块大小与模型上下文长度的关系
- BM25 + 向量混合搜索
- 在微调前添加重排序器
- pgvector : 维度限制和索引
- Ragas:用数据评估您的 RAG
- 来源:BGE-M3(BAAI)官方文档
- 数据来源:Ciancone 等人(2024)的 MTEB-French 研究
- 来源:Ollama 的嵌入文档
- 来源:Qwen3-Embedding 模型说明页
- 来源:EmbeddingGemma 模型卡(Google)
最适合法语的嵌入模型是哪个?+
可以使用 nomic-embed-text 或 mxbai-embed-large 进行法语嵌入吗?+
是否存在 bge-m4 模型?+
更换嵌入模型时需要重新索引吗?+
多模态嵌入模型可以替代文本模型吗?+
是否需要为企业量身定制嵌入模型?+
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。