您可以使用 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类型。
为 vector 类型定义索引
配置 vector 字段属性
配置 vector 字段属性
MongoDB Search vector 类型采用以下参数:
选项 | 类型 | 必要性 | 说明 |
|---|---|---|---|
|
| 必需 | 标识此字段类型的人类可读标签。值必须是 |
| Int | 必需 | MongoDB Search 在索引时和查询时强制执行的向量维度数。您只能为 对于索引量化向量或 BinData,您可以指定以下值之一:
您选择的嵌入模型决定了向量嵌入的维数,某些模型对于输出的维数有多个选项。要学习;了解更多信息,请参阅选择创建嵌入的方法。 |
| 字符串 | 必需 | 用于搜索前 K 个最近邻域的向量相似度函数。只能为 您可以指定以下值之一:
要学习;了解更多信息,请参阅关于相似度函数。 |
| 字符串 | Optional | 向量的自动向量量化类型。仅当嵌入是 您可以指定以下值之一:
要学习;了解更多信息,请参阅About Quantization. |
| 字符串 | Optional | 向量字段的索引结构。值可以是:
如果省略,则默认为 如果指定 |
| 对象 | Optional | 用于分层导航小世界图表构建的参数。如果省略,将使用 重要提示:此功能可作为预览功能使用。修改默认值可能会对您的 MongoDB Search 索引和查询产生负面影响。 |
hnswOptions.maxEdges | Int | Optional | |
hnswOptions.numEdgeCandidates | Int | Optional | 类似于查询时的 较高的数值可以生成具有高质量连接的图,从而提升搜索质量(召回率),但也会增加查询延迟。 |
vector 类型尝试示例
The following index definition example uses the sample_mflix.embedded_movies collection in the sample data. After you load the collection, you can use the following example to index the plot_embedding_voyage_3_large field as the vector type for running queries using the vectorSearch (MongoDB Search Operator). For a sample query to run against this index, see Examples.
此索引定义使用动态索引所有可索引字段,使用默认typeSet,并使用以下设置将plot_embedding_voyage_3_large字段索引为vector类型:
2048维度数dotProduct相似度函数scalar量化hnsw(默认)索引方法