如何对 Atlas 集群中的数据执行语义搜索
本教程介绍如何对 Atlas 集群上的 collection 中的 字段中的向量执行 ANN 搜索。plot_embeddings
sample_mflix.embedded_movies
为了演示这一点,它将带您完成以下步骤:
在
sample_mflix.embedded_movies
集合中名为plot_embeddings
的数字字段上创建 Atlas Vector Search 索引。针对
sample_mflix.embedded_movies
集合中的plot_embeddings
字段运行 Atlas Vector Search 查询。
先决条件
要完成本教程,您必须具备以下条件:
运行 MongoDB 版本 6.0.11、v7.0.2 或更高版本(包括RC )的 Atlas 集群。
示例数据已加载到您的 Atlas 集群中。
用于在 Atlas 集群上运行查询的以下应用程序之一:
您还可以将 Atlas Vector Search 与通过 Atlas CLI 创建的本地 Atlas 部署结合使用。要了解更多信息,请参阅创建本地 Atlas 部署。
创建 Atlas Vector Search 索引
本部分演示如何在sample_mflix.embedded_movies
collection中的plot_embeddings
字段上创建 Atlas Vector Search 索引,以便对该字段运行查询。
必需的访问权限
要创建 Atlas Vector Search 索引,您必须对项目具有Project Data Access Admin
或更高访问权限。
步骤
定义 Atlas Vector Search 索引。
将默认定义替换为以下索引定义。
此索引定义指定在vectorSearch类型的索引中对以下字段建立索引:
plot_embedding
字段作为向量类型。plot_embedding
字段包含使用 OpenAI 的text-embedding-ada-002
嵌入模型创建的嵌入。 索引定义指定了1536
向量维度,并使用euclidean
来衡量相似性。genres
字段作为筛选器类型,用于按字段中的字符串值对数据进行预筛选。year
字段作为筛选器类型,用于按字段中的数值对数据进行预筛选。
1 { 2 "fields": [ 3 { 4 "type": "vector", 5 "path": "plot_embedding", 6 "numDimensions": 1536, 7 "similarity": "euclidean" 8 }, 9 { 10 "type": "filter", 11 "path": "genres" 12 }, 13 { 14 "type": "filter", 15 "path": "year" 16 } 17 ] 18 }
使用$vectorSearch
聚合管道阶段运行查询
➤ 使用选择语言下拉菜单选择要用于运行本节中示例查询的客户端。
概述
本部分演示如何使用$vectorSearch
阶段查询sample_mflix.embedded_movies
集合中的索引向量数据。这些样本查询还演示了各种比较查询和聚合管道操作符,我们可以在查询中使用它们来预筛选要执行语义搜索的数据。