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 主页
/ /

如何索引向量字段

您可以使用 vector 类型来索引向量嵌入。向量字段必须包含以下类型的 数字 数组:

  • BSON int32int64,或 double 数据类型

  • BSON double 数据类型

您可以在 聚合管道中使用 vectorSearch操作符(类似于 $vectorSearch$search阶段)来查询索引为vector 类型的字段。

适用以下限制:

  • 您无法将包含对象数组的字段(MongoDB 搜索 embeddedDocuments 类型)索引为 vector 类型。

  • 您无法在包含 vector 类型的索引定义中将 storedSource 设置为 true。相反,使用 include 指定要存储在 mongot 上的字段,或使用 exclude 从存储中排除 vector 类型的字段。

  • 您不能使用$vectorSearch 阶段来查询索引为vector 类型的字段。

  • 您可以在 MongoDB Search Playground 中将字段索引为 vector 类型。

MongoDB Search vector 类型采用以下参数:

选项
类型
必要性
说明

type

vector

必需

标识此字段类型的人类可读标签。值必须是 vector

numDimensions

Int

必需

MongoDB Search 在索引时和查询时强制执行的向量维度数。您只能为 vector 类型字段设置此字段。您必须指定小于或等于 8192 的值。

对于索引量化向量或 BinData,您可以指定以下值之一:

  • 1int8 向量的 8192 进行摄取。

  • 用于摄取的 int1 向量的 8 倍数。

  • 18192(表示 binData(float32))和 array(float32) 向量(表示自动标量量化)。

  • binData(float32)array(float32) 向量的 8 的倍数,用于自动二进制量化。

您选择的嵌入模型决定了向量嵌入的维数,某些模型对于输出的维数有多个选项。要学习;了解更多信息,请参阅选择创建嵌入的方法。

similarity

字符串

必需

用于搜索前 K 个最近邻域的向量相似度函数。只能为 vector 类型字段设立此字段。

您可以指定以下值之一:

  • euclidean — 测量向量两端之间的距离。

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

  • dotProduct - 测量类似于 cosine 的相似度,但考虑了向量的幅度。

要学习;了解更多信息,请参阅关于相似度函数。

quantization

字符串

Optional

向量的自动向量量化类型。仅当嵌入是 floatdouble 向量时才使用此设置。

您可以指定以下值之一:

  • none - 表示向量嵌入不会自动量化。 如果您有要摄取的预量化向量,请使用此设置。 如果省略,则为默认值。

  • scalar - 表示标量量化,将值转换为 1 字节整数。

  • binary - 表示二进制量化,将值转换为单个比特。要使用此值,numDimensions 必须是 8 的倍数。

    如果精度至关重要,请选择 nonescalar 而不是 binary

要学习;了解更多信息,请参阅向量量化。

indexingMethod

字符串

Optional

向量字段的索引结构。值可以是:

  • hnsw - 用于基于图表的索引,其中连接了相似的向量

  • flat - 适用于平面、非图表、索引

如果省略,则默认为 hnsw。如果指定hnsw , MongoDB Vector Search 将在 Hierarchical Navigable Small Worlds 图表上执行 近似最近邻 (ANN) 搜索,并在全保真向量上执行 精确最近邻 (ENN) 搜索。您也可以指定 hnswOptions

如果指定 flat, MongoDB Vector Search 将对全保真向量或量化向量执行全面扫描。在 近似最近邻 (ANN) 搜索期间, MongoDB Vector Search 会忽略 numCandidates 的设置。对于 精确最近邻 (ENN) 搜索, MongoDB Vector Search 对全保真向量执行全面扫描。

hnswOptions

对象

Optional

用于分层导航小世界图表构建的参数。如果省略,将使用 maxEdgesnumEdgeCandidates 参数的默认值。

重要提示:此功能可作为预览功能使用。修改默认值可能会对您的 MongoDB Search 索引和查询产生负面影响。

hnswOptions.
maxEdges

Int

Optional

分层可导航小世界图中,一个节点最多可以拥有的边(或连接)数量。值可以在 1664 之间(含)。如果未指定,则默认值为 16。例如,对于值 16,在分层可导航小世界图的每一层,每个节点最多可以有十六个出边。

较高的数值会提升召回率(搜索结果的准确性),因为图的连接性更好。不过,这也会增加每个图表节点需要评估的邻居数量,从而增加查询和索引时间,并且需要更多内存来存储分层导航小世界图中每个连接的额外节点。

hnswOptions.
numEdgeCandidates

Int

Optional

类似于查询时的 numCandidates,此参数控制要评估的最大节点数,以找到连接到新节点的最近邻居。值可以在 1003200 之间(含)。如果未指定,值默认为 100

较高的数值可以生成具有高质量连接的图,从而提升搜索质量(召回率),但也会增加查询延迟。

以下索引定义示例在示例数据中使用了 sample_mflix.embedded_movies 个集合。加载集合后,您可以使用以下示例将 plot_embedding_voyage_3_large 字段索引为 vector 类型,以便使用 vectorSearch(MongoDB 搜索操作符)运行查询。有关针对此索引运行的示例查询,请参阅示例

此索引定义使用动态索引所有可索引字段,使用默认typeSet,并使用以下设置将plot_embedding_voyage_3_large字段索引为vector类型:

  • 2048 维度数

  • dotProduct 相似度函数

  • scalar 量化

  • hnsw (默认)索引方法

后退

uuid

在此页面上