Atlas Vector Search
Overview
在本指南中,您可以学习;了解如何使用Java驾驶员中的 Atlas Vector Search功能。Aggregates
vectorSearch()
构建者类提供了可用于创建 $vectorSearch管道阶段的 辅助方法。此管道阶段允许您对文档执行语义搜索。语义搜索是一种搜索,可查找与您提供的搜索术语或短语含义相似但不一定相同的信息。
执行向量搜索
要使用此功能,您必须创建向量搜索索引并为向量嵌入索引。 要学习;了解如何以编程方式创建向量搜索索引,请参阅索引指南中的 Atlas Search和向量搜索索引部分。要学习;了解有关向量嵌入的更多信息,请参阅Atlas文档中的如何为向量搜索编制向量嵌入索引。
在向量嵌入上创建向量搜索索引后,您可以在管道阶段引用此索引,如下节所示。
向量搜索示例
以下示例展示了如何构建一个聚合管道,从而使用 vectorSearch()
和 project()
方法计算向量搜索分数:
List<Double> queryVector = (asList(-0.0072121937, -0.030757688, -0.012945653)); String indexName = "mflix_movies_embedding_index"; FieldSearchPath fieldSearchPath = fieldPath("plot_embedding"); int limit = 1; VectorSearchOptions options = exactVectorSearchOptions().filter(gte("year", 2016)); List<Bson> pipeline = asList( vectorSearch( fieldSearchPath, queryVector, indexName, limit, options), project( metaVectorSearchScore("vectorSearchScore")));
以下示例展示了如何运行聚合并从上述聚合管道的结果中打印向量搜索分数:
Document found = collection.aggregate(pipeline).first(); double score = found.getDouble("vectorSearchScore").doubleValue(); System.out.println("vectorSearch score: " + score);
API 文档
要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档: