您可以使用 knnVector 类型来索引向量嵌入。向量字段可以用以下类型的 数字 数组来表示:
BSON
int32、int64或double数据类型,用于使用 knnBeta 操作符进行查询。BSON
double数据类型用于使用$vectorSearch阶段进行查询。
您可以使用 knnBeta 运算符(现已弃用)和聚合管道中的$vectorSearch阶段来查询索引为 knnVector 的字段。
注意
不能使用Atlas用户界面中的MongoDB搜索 Visual Editor 来配置 knnVector 类型的字段。相反,请使用MongoDB搜索 JSON Editor 来配置 knnVector 类型的字段。
您还可以将MongoDB Vector Search 与通过Atlas CLI创建的本地Atlas部署结合使用。要学习;了解更多信息,请参阅创建本地Atlas部署。
knnVector 类型限制
您无法将文档数组内的字段或对象数组内的字段( MongoDB Search embeddedDocuments 类型)索引为 knnVector 类型。
为 knnVector 类型定义索引
以下是 knnVector 类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性。
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<field-name>": { 6 "type": "knnVector", 7 "dimensions": <number-of-dimensions>, 8 "similarity": "euclidean | cosine | dotProduct" 9 } 10 } 11 } 12 }
配置 knnVector 字段属性
knnVector 类型具有以下选项:
选项 | 类型 | 必要性 | 用途 |
|---|---|---|---|
| 字符串 | 必需 | 标识此字段类型的人类可读标签。值必须是 |
| int | 必需 | 向量维度数, MongoDB搜索在索引和查询时强制执行。此值不能大于 |
| 字符串 | 必需 | 用于搜索前 K 个最近邻的向量相似度函数。值可以是以下值之一:
|
尝试 knnVector 类型的示例
sample_mflix.embedded_movies 集合的以下索引定义为集合中所有动态可索引的字段建立动态索引,并将 plot_embedding 字段作为 knnVector 类型建立静态索引。plot_embedding 字段包含使用 OpenAI 的 text-embedding-ada-002 向量嵌入模型创建的向量嵌入。索引定义指定了 1536 个向量维度,并使用 euclidean 来衡量相似性。
1 { 2 "mappings": { 3 "dynamic": true, 4 "fields": { 5 "plot_embedding": { 6 "type": "knnVector", 7 "dimensions": 1536, 8 "similarity": "euclidean" 9 } 10 } 11 } 12 }
如果在集群上加载示例数据并为此集合创建前面的MongoDB搜索索引,则可以对此集合运行$vectorSearch查询。要学习;了解有关可以运行的示例查询的详情,请参阅 $vectorSearch 示例。