Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs 菜单
Docs 主页
/ /

自动嵌入概述

您可以配置MongoDB Vector Search,为Atlas 集群中的文本数据自动生成和管理向量嵌入。当您启用自动嵌入时, MongoDB Vector Search 使用指定的 Voyage AI嵌入模型在索引时为集合中的指定文本字段自动生成嵌入,并在查询时为查询中的文本字符串自动生成嵌入。

自动嵌入简化了构建语义搜索的进程。您无需自行生成、存储或管理向量嵌入。 Atlas可以原生处理嵌入的生成、更新和查询。

注意

您必须启用最大实例大小为 M30 或更大的自动伸缩,M10M20 集群才能使用自动嵌入。对于所有其他集群层,默认启用自动嵌入。

您可以部署MongoDB Vector Search,并通过MongoDB Vector Search 索引中的自动嵌入启用,对文本数据启用由AI支持的智能语义搜索。MongoDB 的自动嵌入功能将传统上复杂的向量搜索实现转变为单步解决方案。您现在可以通过简单的字段配置来实现语义搜索,而无需管理单独的嵌入基础架构、模型选择和集成代码。

当您配置MongoDB Vector Search 索引时,它会使用您选择的最先进的 Voyage AI嵌入模型,为集合中的文本数据自动生成向量嵌入,在数据发生变化时保持嵌入同步,还支持使用自然语言文本查询。这些向量嵌入捕获数据中有意义的关系,并允许根据意图而不是关键字进行搜索。

要启用自动嵌入,请使用 autoEmbed 类型创建MongoDB Vector Search索引。 autoEmbed 类型指定要启用自动嵌入的字段以及要使用的嵌入模型。您还可以包含一个或多个字段,以使用 filter 类型对数据进行预筛选。

1{
2 "fields": [
3 {
4 "type": "autoEmbed",
5 "modality": "text",
6 "path": "<field-to-index>",
7 "model": "<embedding-model>"
8 },
9 {
10 "type": "filter",
11 "path": "<field-to-index>"
12 },
13 ...
14 ]
15}

要学习;了解有关索引语法和字段的详情,请参阅 如何为向量搜索的字段建立索引。

MongoDB Vector Search 自动为您插入或更新的现有文档和新文档生成嵌入。

创建索引后,您可以运行查询。 MongoDB Vector Search 使用您在索引中指定的相同嵌入模型自动为查询文本生成嵌入。您可以选择在model $vectorSearch管道阶段使用 选项指定不同的嵌入模型,但指定的嵌入模型必须与索引时使用的嵌入模型兼容。

1[
2 {
3 "$vectorSearch": {
4 "index": "<index-name>",
5 "path": "<field-to-index>",
6 "query": "<query-text>",
7 "model": "<embedding-model>"
8 }
9 },
10 {
11 "$project": {
12 "_id": 0,
13 "<field-to-index>": 1,
14 "score": { "$meta": "vectorSearchScore" }
15 }
16 }
17]

要了解更多信息,请参阅运行向量搜索查询。

注意

该功能适用于使用Docker、Tarball 或包管理器的MongoDB Search 和MongoDB Vector Search 部署,以及将MongoDB Controllers for Kubernetes Operator 与MongoDB8.2 或更高版本 Community Edition 结合使用的部署。 MongoDB Enterprise版尚不提供自动嵌入功能。

只需更改简单的配置,即可为AI助手启用语义搜索、RAG 和内存,而无需编写嵌入代码、管理模型基础架构或处理向量管道。换言之,在部署具有MongoDB Search 和 Vector Search进程 的MongoDB Community Edition时,您可以提供用于生成嵌入的 mongotVoyage AI API密钥,理想情况下,一个用于索引操作,另一个用于来自不同项目的查询操作。

部署后:

  1. 从集合中,选择要启用语义搜索的文本字段。

  2. 从可用嵌入模型列表中,选择一个嵌入模型。

  3. 在MongoDB Vector Search索引定义中,使用 autoEmbed 类型配置自动嵌入。

要学习;了解有关为自动嵌入配置MongoDB Vector Search索引的更多信息,请参阅如何为向量搜索的字段编制索引。

MongoDB Vector Search 会为您使用初始化MongoDB Community Edition时指定的 API密钥插入或更新的现有文档和新文档自动生成嵌入。

对于查询,请在query.text $vectorSearch管道阶段使用 选项。 MongoDB Vector Search 使用索引定义中相同的嵌入模型为文本查询生成嵌入。您可以在model $vectorSearch管道阶段使用 选项指定不同的嵌入模型,但指定的嵌入模型必须与索引时使用的嵌入模型兼容。 MongoDB Vector Search 使用您在MongoDB Community初始化期间提供的查询API密钥在查询时生成嵌入。要学习;了解详情,请参阅运行向量搜索查询。

使用API密钥生成嵌入时需要付费。要学习;了解更多信息,请参阅管理计费。

要自动执行嵌入并运行示例查询,请参阅MongoDB Vector Search 快速入门。

虽然您可以使用单个API密钥在索引时和查询时生成嵌入,但我们建议您使用单独的API密钥,以避免查询操作对索引操作产生负面影响。

您可以通过以下方式生成API密钥:

创建密钥后,在使用MongoDB Community Edition 部署期间配置 mongot 时,必须指定要用于自动嵌入的密钥。MongoDB Vector Search 使用您在部署mongot 期间提供的 Voyage AI API密钥,在索引处为您的数据自动生成嵌入,并在查询时为查询文本自动生成嵌入。

自动嵌入索引异步生成向量嵌入,并持久保存到单独保留数据库上的MongoDB 集群。每个自动嵌入索引都有一个对应的生成嵌入集合。生成的嵌入集合存储在同一集群上的专用内部数据库中。

要学习;了解更多信息,请参阅生成的嵌入集合。

MongoDB Vector Search 与 Voyage AI 最先进的嵌入模型集成,每个模型都针对特定使用案例进行了优化:

嵌入模型
说明
每 1M 个令牌的价格

voyage-4-lite

针对大容量、成本敏感的应用程序进行了优化。

$ 0.02

voyage-4

推荐)平衡一般文本搜索的性能。

$ 0.06

voyage-4-large

复杂语义关系的最高准确性。

$ 0.12

voyage-code-3

专门用于代码搜索和技术文档。

$ 0.18

要学习;了解更多信息,请参阅用于自动嵌入的模型。

内嵌模型

嵌入模型是将数据转换为向量嵌入的算法,而向量嵌入可捕获数据的语义或根本的含义。这些向量启用向量搜索。

要学习;了解有关自动嵌入的嵌入模型的更多信息,请参阅可用模型。

向量嵌入

向量嵌入是一个数字数组,每个维度代表数据的不同功能或属性。向量可用于表示任何类型的数据,从文本、图像和视频到非结构化数据。您可以通过将数据传递到嵌入模型来创建向量嵌入,并且可以存储这些嵌入存储在支持向量嵌入的数据库中,例如MongoDB。

要学习;了解有关自动嵌入的嵌入存储的更多信息,请参阅生成的嵌入集合。

tokens

在嵌入模型和法学硕士中,词元是模型处理以创建嵌入或生成文本的文本的基本单位,例如单词、子词或字符。令牌是针对使用嵌入模型和 LLM 的计费方式。

要学习;了解有关用于自动嵌入的令牌的更多信息,请参阅管理自动嵌入的计费。

速率限制

速率限制是API提供商对用户在特定时间范围内可以发出的请求数量施加的限制,通常以每分钟的令牌数 (TPM) 或每分钟的请求数 (RPM) 来衡量。这些限制可确保公平使用,防止滥用,并为所有用户保持服务的稳定性和性能。

要学习;了解有关自动嵌入速率限制的更多信息,请参阅速率限制。

量化

量化会降低向量嵌入的精度,以减少内存和存储使用量,但会牺牲搜索准确性。对于自动嵌入, MongoDB Vector Search 支持以下量化类型:

量化类型
说明

float

将向量嵌入存储为 32 位浮点值。

scalar

将每个向量维度从 32 位浮点数减少为 8 位整数。

binary

将每个向量维度减少到一位,并对排名靠前的结果重新评分。

binaryNoRescore

将每个向量维度减少为一位,无需重新评分。

要学习;了解有关自动嵌入的量化的更多信息,请参阅关于量化。

维度数

维数指定每个文档的嵌入向量的长度(大量中有多少个数字)。更高的维度可以捕获更多的语义细节,通常可以提高检索准确性,但会增加存储和计算成本(索引大小、 RAM使用量,有时还会延迟)。

要学习;了解更多信息,请参阅numCandidates 选择。

相似度

相似度函数用于衡量两个向量之间的相似度,或查询向量与索引中向量的接近程度。 MongoDB Vector Search 支持以下相似度函数:

  • cosine — 根据向量之间的角度测量相似度。

  • dotProduct - 测量类似于 cosine 的相似度,但考虑了向量的幅度。我们建议将此相似度函数用于全保真或 scalar 量化。

  • euclidean — 测量向量两端之间的距离。我们建议将此相似度函数用于 binarybinaryNoRescore 量化,其中向量被压缩,汉明或欧几里得空间中的距离是正确的信号。

要学习;了解有关自动嵌入的相似度函数的更多信息,请参阅关于相似度函数。

后退

兼容性与限制

获得技能徽章

免费掌握“RAG with MongoDB”!

了解详情

在此页面上