嵌入模型决定了你的检索系统能找什么。它把每个输入转成向量,并把相关的输入放在彼此附近,这样你的应用就能按语义而不是精确措辞来检索。
最佳选择取决于你需要搜索的材料。英文知识库、多语言支持档案、源代码仓库以及文本加图片集合各有不同的需求。向量大小、上下文长度、公开权重和价格也会改变决定。
我们为英文 RAG、多语言检索、代码搜索、文本加图片检索以及低成本索引筛选了模型,然后通过我们的 embeddings 端点向每个模型发送了实时请求。
最后验证时间:2026 年 9 月 11 日。我们的嵌入模型目录在该日期返回了 37 个条目,其中包括一些模型的批量和预览变体。
提供商可能会增加或移除路由,提示价格也可能变化。在开始大规模索引或重新索引任务之前,请查看当前的模型页面。如果模型页面与本指南不一致,请以模型页面为准。
TL;DR
- 从
openai/text-embedding-3-small开始,用于英文 RAG。 - 测试
voyageai/voyage-4-large当你的输入超过 8,192 tokens,或者你想在 Voyage 4 各档之间切换而无需重建索引时。qwen/qwen3-embedding-8b如果你想要一个开源权重替代方案,它有更长的上下文窗口和更低的提示价格。 - 使用
qwen/qwen3-embedding-8b用于带公开权重的多语言检索,voyageai/voyage-code-4用于代码搜索,以及google/gemini-embedding-2或voyageai/voyage-multimodal-3.5用于文本加图片检索。 perplexity/pplx-embed-v1-0.6b在我们候选名单中的付费文本模型里,它的提示价格最低。nvidia/nemotron-3-embed-1b:free是一个免费的文本嵌入路由,具有 32,768-token 的上下文窗口。- 我们的 API 检查确认的是请求和响应行为,而不是检索质量。在构建或重建完整索引之前,请用你应用中的带标注查询和文档至少比较两个候选模型。
按用例划分的最佳嵌入模型
| 用例 | 推荐模型 | 它为何入选候选名单 |
|---|---|---|
| 默认英文 RAG | openai/text-embedding-3-small | 低提示价格、8,192-token 上下文,以及可调整的输出维度 |
| 输入超过 8,192 tokens | voyageai/voyage-4-large | 32,000-token 上下文、四种可选维度,以及与 Voyage 4 其他档兼容的嵌入 |
| 带公开权重的多语言检索 | qwen/qwen3-embedding-8b | 支持 100 多种语言、32,768-token 上下文窗口,以及公开权重 |
| 代码搜索 | voyageai/voyage-code-4 | 专为检索代码及相关技术内容而构建 |
| 文本与图像检索 | google/gemini-embedding-2 | 将文本和图像置于同一嵌入空间。voyageai/voyage-multimodal-3.5是我们验证过的第二个选项 |
| 价格最低的付费文本选项 | perplexity/pplx-embed-v1-0.6b | 提示价格为每百万输入 token 0.004 美元,上下文窗口为 32,000 token |
| 免费文本嵌入 | nvidia/nemotron-3-embed-1b:free | 一条免费路径,具有 32,768 token 的上下文窗口和多语言模型卡 |
按输入类型选择模型
从你需要搜索的材料开始。图表首先按输入类型排序,然后按你是否需要公开权重排序,最后按你的主要限制排序。

图表为你提供一个起点。在构建或重建大型索引之前,至少用你应用中的查询和文档比较两个候选模型,并跟踪每个模型检索到相关片段的频率。
我们如何选择这些模型
我们使用实时目录来确认可用性、上下文窗口、输入类型和提示价格。我们查阅了模型提供商的文档以了解能力和基准测试结果,然后通过我们的嵌入端点发送实时请求,以确认请求和响应行为。
我们向 19 个模型发送了双字符串批量请求,共运行了 28 项检查,涵盖批量输入、可配置维度、图像输入、文本与图像输入以及错误处理。16 个付费模型为每个输入返回一个向量。响应确认了下表中的默认维度,并表明dimensions参数适用于 OpenAI Text Embedding 3 Small、Gemini Embedding 2 和 Voyage 4 Large。请求一个不存在的模型会返回 400 错误,并带有消息Model openai/does-not-exist does not exist。
这三条免费路径从我们的测试账户返回了 404 错误,因为其隐私设置不允许路由到可能使用免费模型提示进行训练的提供商。我们在下面的免费选项部分描述了该设置。我们为这些模型列出的默认维度来自它们的模型卡,而非我们的响应。
这些请求确认了 API 兼容性。它们并未衡量检索质量。我们排除了响应时间,因为每个模型在不同服务条件下只收到一个小请求。我们将每个用例匹配到一项有文档记录的能力,然后用语言覆盖、上下文长度、输出维度、公开权重和提示价格来缩小候选范围。已发布的评估,包括 MTEB 和 CoIR,帮助我们确定要测试的模型。你标注的检索结果应该决定你部署哪一个。
比较入围的嵌入模型
以下价格是 2026 年 9 月 11 日我们目录中列出的提示价格,Gemini Embedding 2 的图像价格是 2026 年 9 月 18 日的目录值。默认维度来自我们的实时响应,除了免费的 NVIDIA 模型,其默认值来自其模型卡。
| 模型 | 输入 | 上下文 | 默认维度 | 每百万 token 的提示价格 | 权重 |
|---|---|---|---|---|---|
openai/text-embedding-3-small | 文本 | 8,192 | 1,536 | $0.02 | 闭源 |
openai/text-embedding-3-large | 文本 | 8,192 | 3,072 | $0.13 | 闭源 |
voyageai/voyage-4-lite | 文本 | 32,000 | 1,024 | $0.02 | 闭源 |
voyageai/voyage-4 | 文本 | 32,000 | 1,024 | $0.06 | 闭源 |
voyageai/voyage-4-large | 文本 | 32,000 | 1,024 | $0.12 | 闭源 |
voyageai/voyage-code-4 | 文本,针对代码优化 | 32,000 | 1,024 | $0.12 | 闭源 |
voyageai/voyage-multimodal-3.5 | 文本和图像 | 32,000 | 1,024 | $0.12 | 闭源 |
qwen/qwen3-embedding-8b | 文本 | 32,768 | 4,096 | $0.01 | 开源 |
qwen/qwen3-embedding-4b | 文本 | 32,768 | 2,560 | $0.02 | 开源 |
perplexity/pplx-embed-v1-0.6b | 文本 | 32,000 | 1,024 | $0.004 | 开源 |
perplexity/pplx-embed-v1-4b | 文本 | 32,000 | 2,560 | $0.03 | 开源 |
google/gemini-embedding-2 | 文本和图像 | 8,192 | 3,072 | 文本 $0.20,图像 token $0.45 | 闭源 |
nvidia/nemotron-3-embed-1b:free | 文本 | 32,768 | 2,048 | 免费 | 开源 |
维度列影响原始索引大小。公式和示例见下文“计算向量存储”。
我们的目录包含的模型比表中展示的更多。baai/bge-m3增加了另一个开源多语言选项,mistralai/mistral-embed-2312提供了一个通用文本替代方案,并且mistralai/codestral-embed-2505针对代码检索。这三个模型在我们的文本请求检查中都返回了向量。目录还列出了来自 BAAI、E5、GTE 和 Sentence Transformers 的一组 512 token 开源模型,价格为每百万 token $0.005 到 $0.01,我们未在本指南中测试它们。
英语 RAG 的最佳默认选择
从以下开始openai/text-embedding-3-small当你需要一个用于英语知识库的托管模型时。它的默认向量有 1,536 个值,是以下模型默认值的一半openai/text-embedding-3-large在相同的数值格式下,Small 使用的原始向量存储量只有一半。首次评估时保留 1,536 维的默认值,只有当默认值满足检索目标但存储或搜索成本仍是限制因素时,才降低它。
你可以用以下参数缩短其向量dimensions参数。我们使用"dimensions": 256发起的请求返回了一个包含 256 个值的向量。更小的向量占用更少的数据库存储,并减少相似度搜索所需的工作量,但它们也可能降低检索质量。在更改现有索引之前,先测试更小的维度。
OpenAI 将text-embedding-3-large描述为其在英语和非英语任务上能力最强的嵌入模型。当 Small 漏掉相关结果时测试它,尤其是当用户跨语言搜索时。迁移到 Large 会改变向量维度和提示价格,因此在重新嵌入语料库之前,先在留出问题上比较两个模型。
如果你的输入超过 Small 的 8,192 token 限制,测试 Voyage 4 Large。对于较短的输入,使用相同的分块、查询和相关性标签比较两个模型。
Voyage 4 系列用于更长的输入
测试voyageai/voyage-4-large当你需要一个托管的 32,000 token 模型,且维度可调并兼容 Voyage 4 各层级时。它最多接受 32,000 token,并支持 256、512、1,024 和 2,048 维。在我们的 API 检查中,将dimensions设为 512 返回了一个包含 512 个值的向量。
该系列包括voyageai/voyage-4和voyageai/voyage-4-lite,它们使用相同的上下文窗口。Voyage 表示所有使用 4 系列创建的嵌入彼此兼容。这让你可以针对现有索引测试另一个 Voyage 4 层级。在部署前,在具有代表性的样本上验证层级变更。兼容的向量空间消除了重建需求,但并不能保证检索结果完全相同。
在相同的评估集上运行 Large 和至少一个较低的 Voyage 4 层级。如果它们在相同截断点检索到相同的相关段落,较低的层级可能满足你的需求。
Voyage 模型是托管服务。如果你需要公开权重用于自托管或部署控制,Qwen3 Embedding 8B 是本短名单中的开源权重替代方案。
用于多语言检索的最佳开源权重模型
qwen/qwen3-embedding-8b是我们的开源权重多语言选择。它支持 100 多种语言,你可以从 Hugging Face 下载权重,或通过我们的 API 调用托管模型。我们的默认 API 请求返回了 4,096 个值。在相同的数值格式下,一个 4,096 值的向量占用的原始存储空间是一个 1,024 值向量的四倍。在估算索引大小时要把这一差异考虑进去。我们的 API 检查并不能确定 Qwen3 Embedding 8B 的检索效果是否优于nvidia/nemotron-3-embed-1b:free。当路由成本和向量大小会影响决策时,在最终确定之前,请在同一个标注集上对两者都进行测试。
该Qwen 模型卡报告称,截至 2025 年 6 月 5 日,其在 Massive Text Embedding Benchmark(MTEB)上的多语言得分为 70.58。这是厂商报告的公开基准测试结果。可以用它把 Qwen 列入候选名单,然后测试你的应用所支持的每一种语言和领域,因为你的语料库可能得出不同的排名。
模型页面列出了 32,768 token 的上下文窗口,但该限制是按端点设置的。2026 年 9 月 11 日,Qwen3 Embedding 8B 的 DeepInfra 和 SiliconFlow 端点列出的是 32,768 token,而 Nebius 端点列出的是 32,000。如果你发送的输入超过 32,000 token,请查看端点列表并固定使用限制更大的提供商,或将输入保持在 32,000 token 及以下。
4B 版本使用相同的模型级上下文窗口,在我们的检查中返回了 2,560 个值。它自行运行所需的资源更少。托管价格取决于可用的提供商,因此在选择之前请比较 Qwen3 Embedding 8B 和 4B 当前的模型页面。
baai/bge-m3为你提供了第二个开源多语言模型,可在你自己的数据集上与 Qwen3 进行比较。其模型卡涵盖 100 多种语言以及最多 8,192 token 的输入,我们的请求返回了一个 1,024 值的向量。上游模型可以返回多种表示类型,包括稠密向量和稀疏向量。我们的标准 embeddings 响应返回的是稠密向量。如果你的检索设计依赖其他表示类型,请使用上游实现。
用于代码搜索的最佳嵌入模型
使用voyageai/voyage-code-4当查询需要检索函数、文件或一段代码文档时。Voyage 为代码检索和编码智能体工作负载构建了该模型。其 32,000 token 的上下文窗口可以接受长文件或查询,不过索引分块仍应代表检索时有用的代码单元。
mistralai/codestral-embed-2505是我们目录中主要的代码专用替代方案。在我们的文本请求检查中,它返回了 1,536 个值。其上下文窗口为 8,192 token,而 Voyage Code 4 为 32,000。请先测试 Voyage Code 4,并将 Codestral Embed 作为对比模型。
公开评测可以帮助你比较候选模型。代码信息检索基准,CoIR包含十个数据集,覆盖七个领域的八项代码检索任务。在将最强候选模型用于你自己仓库中的工作进行测试之前,可以用它来比较模型。一个有用的内部评测会将 issue 描述或开发者问题映射到解决它们所需的文件和分块。
文本和图像检索的最佳模型
当同一个索引需要同时搜索文本和图像时,请使用google/gemini-embedding-2。它将两种输入类型放在同一个嵌入空间中,因此文本查询可以检索到含义相关的图像,图像查询也可以检索到相关文本。
我们通过 embeddings 端点验证了文本、base64 编码的 PNG 图像以及文本与图像组合请求。每个请求都返回了一个包含 3,072 个值的向量。我们还发送了一个带有"dimensions": 768的文本请求,并收到了一个包含 768 个值的向量。在我们的检查中,一张 64 x 64 像素的 PNG 计为 258 个提示 token,费用为 $0.000128。我们的目录为该模型的图像输入单独定价,截至 2026 年 9 月 18 日,在模型页面上为每百万图像 token $0.45,因此在索引大型图像集合之前请查看模型页面。本指南将推荐范围限制为文本和图像输入,因为这些是我们验证过的请求类型。
voyageai/voyage-multimodal-3.5是我们验证的第二个文本与图像模型。它的图像请求和文本加图像的组合请求各自返回了一个包含 1,024 个值的向量,同一张 64 x 64 像素的 PNG 计为 89 个提示 token,费用为 $0.00003。它拥有 32,000 token 的上下文窗口,提示价格为每百万 token $0.12。Gemini Embedding 2 和 Voyage Multimodal 3.5 使用不同的向量空间,因此在建立索引前请先选定一个。
google/gemini-embedding-001是一个单独的纯文本模型,拥有 20,000 token 的上下文窗口。这两个 Gemini 模型使用不同的向量空间,因此在它们之间切换需要重新嵌入索引。
nvidia/llama-nemotron-embed-vl-1b-v2:free是我们目录中一个免费的文本与图像路径,拥有 131,072 token 的上下文窗口。我们的测试账号因下文所述的隐私设置原因无法调用它,因此我们将其排除在推荐之外。
最佳低成本与免费选项
perplexity/pplx-embed-v1-0.6b在我们候选名单中拥有最低的付费文本价格,为每百万输入 token $0.004。它最多接受 32,000 token,并返回了一个包含 1,024 个值的向量。更大的perplexity/pplx-embed-v1-4b返回了 2,560 个值,提示价格为每百万输入 token $0.03。
Perplexity 将 0.6B 模型定位为轻量、低延迟的检索,将 4B 模型定位为更高质量的检索。我们的 API 检查确认了默认向量大小,而非哪个 Perplexity 模型检索效果更好。将提供商的定位视为候选信号,并在带标注的查询上比较两个模型。
将免费路径用于评估,而不是作为大规模生产索引任务的唯一路径。当你需要一个免费的候选方案来测试时,从nvidia/nemotron-3-embed-1b:free开始。它拥有 32,768 token 的上下文窗口,并且NVIDIA 的模型卡报告了 2,048 个值的输出向量、覆盖 34 种语言的评估,以及通过 L2 重新归一化将向量切分为更小尺寸的支持。NVIDIA 在 OpenMDW-1.1 许可下发布了权重。在将免费路径用于生产索引任务之前,请查看当前模型页面以了解可用性和速率限制。可用性和速率限制在批处理期间可能会发生变化。
我们目录中的免费路径由数据政策可能允许使用你的提示进行训练的提供商提供。你的账号隐私设置为付费模型和免费模型设置了独立的开关。当免费模型开关关闭时,对这些路由之一的请求会返回 404 错误,错误中会指明免费模型训练设置并列出被排除的端点。我们的测试账号关闭了该开关,这就是三个免费路由未通过我们检查的原因。A工作区护栏禁用免费模型训练,或provider.data_collection设置为deny在请求上,排除相同的端点并产生相同的 404 错误。参见提供商日志记录和训练策略了解我们如何应用这些设置。
liquid/lfm-2.5-embedding-350m:free是候选名单中的另一个免费文本路由。其 512 token 的上下文窗口将每次输入限制为一段短文本,因此较长的文档需要比本指南中其他模型更小的分块。仅当每个嵌入段落都在 512 token 以内时使用它,例如简短的 FAQ 条目、标题或句子级片段。当你的检索单元需要更长的上下文时,请排除它。
在你的数据上评估嵌入模型
对每个候选模型使用相同的语料库、查询、相关性标签、分块和检索指标。只更改模型,保持评估的其余部分不变,以便结果保持可比性。
评估英文 RAG
对每个候选模型使用相同的分块策略。从约 512 到 1,024 token 且带重叠的分块开始,然后根据你的文档结构和检索结果调整大小。
从用户提出的问题开始,并标注包含答案的分块。使用与你的应用发送给生成模型相同数量的检索分块来衡量召回率。当多个分块相关但有些比其他更有用时,添加归一化折损累计增益,即 nDCG。
评估多语言检索
包含你计划支持的每一种语言。如果用户可能用一种语言编写查询并检索另一种语言的文档,请添加跨语言用例。将每种语言的结果与总体平均值分开报告,这样一种语言的强劲结果就不会掩盖另一种语言的薄弱结果。
评估代码搜索
使用开发者问题或 issue 描述,并标注解决这些问题的文件或代码块。CoIR 可以补充这一集合。你的仓库特定标签应具有更高权重,因为它们反映了你的应用将要运行的搜索。
计算向量存储
在比较中纳入向量存储。一百万个 4,096 维 float32 向量在索引开销之前需要约 16.4 GB。一百万个 1,024 维向量需要约 4.1 GB。你可以用这个公式估算原始存储:
向量存储字节数 = 向量数量 x 维度数 x 每个值的字节数
在每个受支持的向量大小下比较检索质量,然后选择满足你目标的最小者。将选定的模型和维度同时用于索引和查询。
为索引和查询使用兼容的模型
来自不同模型家族的向量不共享坐标空间。如果你用openai/text-embedding-3-small来索引文档,就用相同的模型和配置嵌入每个查询。混用模型会产生不可靠的检索结果。同样的规则适用于google/gemini-embedding-2和google/gemini-embedding-001。在它们之间切换需要重建索引。
更换模型通常需要重新嵌入语料库。Voyage 设计 Voyage 4 文本模型以产生兼容的向量,这在该家族内创造了一个有文档记录的例外。在更改查询或索引路径之前先测试样本,因为所选层级仍可能影响检索质量。
将模型 slug、输出维度、提示格式和创建日期与索引元数据一起存储。一些嵌入模型使用input_type值来区分查询,例如search_query,与索引内容,例如search_document。将每一侧使用的值随索引元数据一起存储。这些字段让后续部署在查询索引之前检查其嵌入配置。
端点在我们的模型目录中保持不变。模型 slug 和输出维度必须与构建索引时使用的配置匹配。如果你用非默认维度构建了索引,在嵌入查询时也要包含相同的dimensions值。
通过我们的 API 调用嵌入模型
将请求发送到https://openrouter.ai/api/v1/embeddings。这个 Python 示例使用了通过我们验证的相同批量请求结构:
importos
importrequests
response=requests.post(
"https://openrouter.ai/api/v1/embeddings",
headers={
"Authorization":f"Bearer{os.environ['OPENROUTER_API_KEY']}",
"Content-Type":"application/json",
},
json={
"model":"openai/text-embedding-3-small",
"input":[
"Reset a password from the account settings page.",
"Refunds are available within 14 days of purchase.",
]
},
timeout=90,
)
response.raise_for_status()
result=response.json()
vectors=[item["embedding"]foriteminresult["data"]]
print(len(vectors))
print(len(vectors[0]))
响应会按相同顺序为每个输入返回一个向量。当所选模型支持可调维度时,在请求中添加"dimensions": 256或其他受支持的大小,并将该值与索引元数据一起存储。
对于 Gemini Embedding 2 和 Voyage Multimodal 3.5,将图像输入放在content数组内的input列表中。我们用这两个模型验证了此请求结构:
payload={
"model":"google/gemini-embedding-2",
"input":[
{
"content":[
{"type":"text","text":"A purple square"},
{
"type":"image_url",
"image_url": {"url":"data:image/png;base64,BASE64_IMAGE_DATA"},
},
]
}
],
"encoding_format":"float",
}
省略文本部分即可仅嵌入图像。请参阅我们的Embeddings API 文档以了解完整的请求和响应模式。
常见问题
我应该使用哪个嵌入模型?
根据你检索的材料以及对部署重要的约束条件来选择。先从支持你的输入类型、语言覆盖范围、上下文长度和权重要求的候选模型开始。在相同的标注查询上至少比较两个模型,然后选择能以可接受的存储和索引成本满足你的检索目标的模型。
我可以在不重建索引的情况下更换嵌入模型吗?
更换到另一个模型系列需要重建索引,因为文档和查询必须使用来自同一模型和配置的向量。Voyage 表示,Voyage 4 Large、Voyage 4 和 Voyage 4 Lite 的嵌入彼此兼容。在更换层级之前,先在样本上测试检索质量。
最快的嵌入模型是什么?
我们没有为本指南运行受控的延迟基准测试。延迟会随输入长度、批大小、提供商负载和路由而变化。请使用你的应用程序将使用的输入和批大小测试各端点。
我应该使用最大的嵌入维度吗?
根据你的检索结果和存储限制来选择嵌入维度。更高的维度需要更多存储空间,每次相似度搜索的工作量也更大。当模型支持降低维度时,使用在你的评估集上满足检索目标的最小维度。
text-embedding-ada-002 仍然是一个好的默认选择吗?
我们不会将 text-embedding-ada-002 作为新的基于 OpenAI 的索引的默认选择。先评估 text-embedding-3-small,如果你的检索结果足以证明更高的提示价格和更大的向量是合理的,再将其与 text-embedding-3-large 进行比较。
为什么免费的嵌入模型会返回 404 错误?
我们目录中的免费嵌入路由由数据政策可能允许使用你的提示进行训练的提供商提供。如果你的账户隐私设置、工作区护栏,或provider.data_collection请求字段设置为deny排除了那些使用免费模型提示进行训练的提供商,那么就没有符合条件的端点,请求会返回一个 404 错误,并指明免费模型训练限制。在你将模型 ID 视为无效之前,请检查你的账户隐私页面以及应用于该 API 密钥的任何护栏。