对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
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 Vector Search 快速入门教程。

虽然您可以使用单个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”!

了解详情