Docs 菜单
Docs 主页
/ / /
Java (Sync) 驱动程序
/ / /

Atlas Vector Search

在此页面上

  • Overview
  • 执行向量搜索
  • 向量搜索示例
  • API 文档

在本指南中,您可以学习;了解如何使用Java驾驶员中的 Atlas Vector Search功能。Aggregates 构建者类提供了可用于创建vectorSearch() $vectorSearch管道阶段的 辅助方法。此管道阶段允许您对文档执行语义搜索。语义搜索是一种搜索,可查找与您提供的搜索术语或短语含义相似但不一定相同的信息。

重要

功能兼容性

要了解哪些版本的 MongoDB Atlas 支持此功能,请参阅 MongoDB Atlas 文档中的限制

要使用此功能,您必须创建向量搜索索引并为向量嵌入索引。要学习;了解如何以编程方式创建向量搜索索引,请参阅索引指南中的 Atlas Search和向量搜索索引部分。要学习;了解有关向量嵌入的更多信息,请参阅Atlas文档中的如何为向量搜索编制向量嵌入索引。

在向量嵌入上创建向量搜索索引后,您可以在管道阶段引用此索引,如下节所示。

以下示例展示了如何构建一个聚合管道,从而使用 vectorSearch()project() 方法计算向量搜索分数:

// Create an instance of the BinaryVector class as the query vector
BinaryVector queryVector = BinaryVector.floatVector(
new float[]{0.0001f, 1.12345f, 2.23456f, 3.34567f, 4.45678f});
// Specify the index name for the vector embedding index
String indexName = "mflix_movies_embedding_index";
// Specify the path of the field to search on
FieldSearchPath fieldSearchPath = fieldPath("plot_embedding");
// Limit the number of matches to 1
int limit = 1;
// Create a pre-filter to only search within a subset of documents
VectorSearchOptions options = exactVectorSearchOptions()
.filter(gte("year", 2016));
// Create the vectorSearch pipeline stage
List<Bson> pipeline = asList(
vectorSearch(
fieldSearchPath,
queryVector,
indexName,
limit,
options),
project(
metaVectorSearchScore("vectorSearchScore")));

提示

查询向量类型

前面的示例创建了一个 BinaryVector实例提供服务查询向量,但您也可以创建 Double 实例的 List。但是,我们建议您使用 BinaryVector 类型以提高存储效率。

以下示例展示了如何运行聚合并从上述聚合管道的结果中打印向量搜索分数:

Document found = collection.aggregate(pipeline).first();
double score = found.getDouble("vectorSearchScore").doubleValue();
System.out.println("vectorSearch score: " + score);

提示

Java驱动程序向量搜索示例

访问Atlas文档,查找有关使用Java驾驶员执行Atlas矢量搜索的更多教程。

要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档:

后退

聚合(Aggregation)