Visão geral
Neste guia, você pode aprender como utilizar o recurso do Atlas Vector Search no driver Java . A Aggregates
classe de construtores vectorSearch()
do fornece o método assistente do que você pode utilizar para criar um estágio de pipeline $vectorSearch. Esse estágio do pipeline permite realizar uma pesquisa semântica em seus documentos. Uma pesquisa semântica é um tipo de pesquisa que localiza informações com significado semelhante, mas não necessariamente idênticas, ao termo ou frase de pesquisa fornecida.
Importante
Compatibilidade de recursos
Para saber quais versões do MongoDB Atlas suportam este recurso, consulte Limitações na documentação do MongoDB Atlas.
Realizar uma Vector Search
Para utilizar este recurso, você deve criar um índice de pesquisa de vetor e indexar suas incorporações de vetor. Para saber mais sobre como criar programaticamente um índice de pesquisa vetorial, consulte a seção Índices do Atlas Search e Vector Search no guia Índices. Para saber mais sobre incorporações vetoriais, consulte Como indexar incorporações vetoriais para Vector Search na documentação do Atlas .
Depois de criar um índice de pesquisa vetorial nas incorporações vetoriais, você poderá fazer referência a esse índice no estágio do pipeline, conforme mostrado na seção a seguir.
Exemplo de Vector Search
O exemplo abaixo mostra como construir um aggregation pipeline que utiliza os métodos vectorSearch()
e project()
para calcular uma pontuação de pesquisa vetorial:
// 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")));
Dica
Tipo de vetor de query
O exemplo anterior cria uma instância de BinaryVector
para servir como o vetor de consulta, mas você também pode criar um List
de Double
instâncias. No entanto, recomendamos que você use o tipo BinaryVector
para melhorar a eficiência do armazenamento.
O exemplo a seguir mostra como executar a agregação e imprimir a meta-score do vector search a partir do resultado da agregação pipeline anterior:
Document found = collection.aggregate(pipeline).first(); double score = found.getDouble("vectorSearchScore").doubleValue(); System.out.println("vectorSearch score: " + score);
Dica
Exemplos de Vector Search do driver Java
Visite a documentação do Atlas para encontrar mais tutoriais sobre como usar o driver Java para executar o Atlas Vector Search.
Documentação da API
Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo: