您可以使用 vector 类型对向量嵌入编制索引。向量字段必须包含以下类型的数字数组:
BSON
int32,int64,或double数据类型BSON
double数据类型
您可以在 聚合管道中使用 vectorSearch 操作符(类似于$vectorSearch $search阶段)来查询索引为vector 类型的字段。
vector 类型限制
适用以下限制:
您无法将包含对象数组的字段(MongoDB 搜索
embeddedDocuments类型)索引为vector类型。您无法在包含
vector类型的索引定义中将 storedSource 设置为true。相反,使用include指定要存储在mongot上的字段,或使用exclude从存储中排除vector类型的字段。您不能使用
$vectorSearch阶段来查询索引为vector类型的字段。您可以在 MongoDB Search Playground 中将字段索引为
vector类型。
Define the Index for the vector Type
Configure vector Field Properties
Configure vector Field Properties
MongoDB Search vector 类型采用以下参数:
选项 | 类型 | 必要性 | 说明 |
|---|---|---|---|
|
| 必需 | 标识此字段类型的人类可读标签。值必须是 |
| Int | 必需 | MongoDB Search 在索引时和查询时强制执行的向量维度数。您只能为 对于索引量化向量或 BinData,您可以指定以下值之一:
您选择的嵌入模型决定了向量嵌入的维数,某些模型对于输出的维数有多个选项。要学习;了解更多信息,请参阅选择创建嵌入的方法。 |
| 字符串 | 必需 | 用于搜索前 K 个最近邻域的向量相似度函数。只能为 您可以指定以下值之一:
要学习;了解更多信息,请参阅关于相似度函数。 |
| 字符串 | Optional | 向量的自动向量量化类型。仅当嵌入是 您可以指定以下值之一:
要学习;了解更多信息,请参阅About Quantization. |
| 字符串 | Optional | 向量字段的索引结构。值可以是:
如果省略,则默认为 如果指定 |
| 对象 | Optional | 用于分层导航小世界图表构建的参数。如果省略,将使用 重要提示:此功能可作为预览功能使用。修改默认值可能会对您的 MongoDB Search 索引和查询产生负面影响。 |
| Int | Optional | 在分层可导航小世界图中,一个节点最多可以拥有的边(或连接)数量。值可以在 A higher number improves :recall (accuracy of search results) because the graph is better connected. However, this also increases query and indexing time by increasing the number of neighbors to evaluate per graph node, and requires more memory to store the additional nodes for each connection in the Hierarchical Navigable Small Worlds graph. |
| Int | Optional | 类似于查询时的 较高的数值可以生成具有高质量连接的图,从而提升搜索质量(召回率),但也会增加查询延迟。 |
Try an Example for the vector Type
以下索引定义示例在sample_mflix.embedded_movies 示例数据 中使用了 个集合。加载集合后,您可以使用以下示例将 plot_embedding_voyage_3_large 字段索引为 vector 类型,以便使用 vectorSearch (MongoDB Search 操作符)运行查询。有关针对此索引运行的示例查询,请参阅示例。
此索引定义使用动态索引所有可索引字段,使用默认typeSet,并使用以下设置将plot_embedding_voyage_3_large字段索引为vector类型:
2048维度数dotProduct相似度函数scalar量化hnsw(默认)索引方法