Atlas Vector Search
Overview
在本指南中,您可以学习;了解如何使用Kotlin驾驶员中的 Atlas Vector Search功能。Aggregates
vectorSearch()
构建者类提供了可用于创建 $vectorSearch管道阶段的 辅助方法。此管道阶段允许您对文档执行语义搜索。语义搜索是一种搜索,可查找与您提供的搜索术语或短语含义相似但不一定相同的信息。
执行向量搜索
要使用此功能,您必须创建向量搜索索引并为向量嵌入索引。要学习;了解如何以编程方式创建向量搜索索引,请参阅索引指南中的 Atlas Search和向量搜索索引部分。要学习;了解有关向量嵌入的更多信息,请参阅Atlas文档中的如何为向量搜索编制向量嵌入索引。
在向量嵌入上创建向量搜索索引后,您可以在管道阶段引用此索引,如下节所示。
向量搜索示例
本部分中的示例使用通过以下 Kotlin 数据类建模的数据:
data class MovieAlt( val title: String, val year: Int, val plot: String, val plotEmbedding: List<Double> )
此示例演示如何构建聚合管道,该管道使用vectorSearch()
方法执行符合以下规范的精确向量搜索:
使用字符串值的向量嵌入搜索
plotEmbedding
字段值使用
mflix_movies_embedding_index
向量搜索索引返回 1 个文档
筛选
year
值至少为2016
的文档
Aggregates.vectorSearch( SearchPath.fieldPath(MovieAlt::plotEmbedding.name), BinaryVector.floatVector(floatArrayOf(0.0001f, 1.12345f, 2.23456f, 3.34567f, 4.45678f)), "mflix_movies_embedding_index", 1.toLong(), exactVectorSearchOptions().filter(Filters.gte(MovieAlt::year.name, 2016)) )
提示
查询向量类型
前面的示例创建了一个 BinaryVector
实例提供服务查询向量,但您也可以创建 Double
实例的 List
。但是,我们建议您使用 BinaryVector
类型以提高存储效率。
API 文档
要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档: