Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs 菜单
Docs 主页
/ /

自动嵌入概述

您可以配置MongoDB Vector Search,为Atlas 集群中的文本数据自动生成和管理vector embeddings。当您启用自动嵌入时, MongoDB Vector Search 使用指定的 Voyage AI embedding model在索引时为集合中的指定文本字段自动生成嵌入,并在查询时为查询中的text string自动生成嵌入。

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

注意

免费 (M0)、Flex层级和专用 (M10+) 集群支持自动嵌入。

要在专用集群 (M10+) 上使用自动嵌入,必须同时启用存储和集群层自动伸缩。需要自动伸缩来扩展大型datasets上初始索引构建的资源。索引构建完成后,考虑到新的索引大小不需要更高的存储资源,集群会缩减到原始计算层级。

按如下方式设置自动伸缩设置:

  • 如果当前集群层为 M10M20(可突发的 CPU 实例),请将最大实例大小设立为 M30 或更大。

  • 如果当前集群层为 M30 或更高,请将最大实例大小设立为高于当前层级的层级。

  • 对于使用 NVMe 存储的集群,请选择“扩展 NVMe 集群层”选项,当存储空间不足时。

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

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

要启用自动嵌入,请使用 autoEmbed 类型创建MongoDB Vector Search索引。autoEmbed 类型指定要启用自动嵌入的字段以及要使用的embedding model。您还可以包含一个或多个字段,以使用 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 自动为您插入或更新的现有 document 和新 document 生成嵌入。

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

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 向量搜索 部署,以及将MongoDB Controllers for Kubernetes 操作符与MongoDB 8.2 或更高版本 Community Edition 结合使用的部署。MongoDB Enterprise Edition尚不提供自动嵌入功能。

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

部署后:

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

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

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

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

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

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

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

要自动执行嵌入并运行示例查询,请参阅MongoDB 向量搜索 快速入门。

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

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

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

自动嵌入索引异步生成 vector embeddings,并持久保存到单独保留数据库上的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

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

内嵌模型

embedding model是将数据转换为vector embeddings的算法,而vector embeddings可捕获数据的语义或根本的含义。这些向量启用向量搜索。

要学习有关自动嵌入的embedding model的更多信息,请参阅可用model。

向量嵌入

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

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

tokens

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

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

速率限制

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

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

量化

Quantization reduces the precision of vector embeddings to decrease memory and 存储 usage, with trade-offs in search accuracy.对于自动嵌入, MongoDB Vector Search 支持以下 quantization 类型:

Quantization 类型
说明

float

将 vector embeddings 存储为 32 位 float 值。

scalar

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

binary

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

binaryNoRescore

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

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

维度数

The number of dimensions specifies the length of the embedding vector for each document (how many numbers are in the 数组).更高的dimensions可以捕获更多的语义细节,通常可以提高检索准确性,但会增加存储和计算费用(索引大小、 RAM使用量,有时还会延迟)。

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

相似度

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

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

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

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

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

后退

兼容性与限制

获得技能徽章

免费掌握“RAG with MongoDB”!

了解详情

在此页面上