对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

自动嵌入概述

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

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

注意

使用自动嵌入时,MongoDB 向量搜索会将生成的向量嵌入存储在集群上。

在专用集群 (M10+) 上使用自动嵌入时,必须启用存储自动伸缩。如果集群磁盘空间不足,MongoDB Vector Search 将暂停嵌入生成,并且索引会过渡到 Stale 状态。释放磁盘空间后,MongoDB 向量搜索 将恢复嵌入生成。

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

{ "fields": [ { "type": "autoEmbed", "modality": "text", "path": "<field-to-index>", "model": "<embedding-model>" }, { "type": "filter", "path": "<field-to-index>" }, ... ]}

要学习;了解有关索引语法和字段的更多信息,请参阅如何为向量搜索的字段编制索引。

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

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

[ { "$vectorSearch": { "index": "<index-name>", "path": "<field-to-index>", "query": "<query-text>", "model": "<embedding-model>" } }, { "$project": { "_id": 0, "<field-to-index>": 1, "score": { "$meta": "vectorSearchScore" } } }]

要了解更多信息,请参阅 运行向量搜索近似最近邻 (ANN) 和精确最近邻 (ENN) 查询。

自动嵌入索引异步生成 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-4

(推荐用于代码)专门用于代码搜索和技术文档。

$ 0.12

voyage-code-3

专门用于代码搜索和技术文档的旧版模型。改用 voyage-code-4。

$ 0.18

注意

voyage-code-4 需要 Atlas 部署。对于自管理部署,请使用 voyage-code-3 进行代码搜索和技术文档查阅。

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

内嵌模型

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

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

向量嵌入

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

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

tokens

在嵌入模型和 LLM 中,词元是模型处理以创建嵌入或生成文本的文本基本单位,例如单词、子词或字符。词元是对使用嵌入模型和 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 - 根据向量之间的角度衡量相似度。我们建议将此相似度功能用于未规范化向量,例如 scalar 量化。

  • dotProduct - 衡量相似度,类似于 cosine,但还会考虑向量的长度。我们建议将此相似度功能用于浮点(完全保真度)量化等规范化向量。

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

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

获得技能徽章

免费掌握“RAG with MongoDB”!

了解详情

给本页内容打分