Menu Docs
Página inicial do Docs
/ /

MongoDB Vector Search

Neste guia, você pode aprender a usar o recurso pesquisa vetorial MongoDB no driver Java. A classe de construtores Aggregates fornece o método assistente vectorSearch() que você pode usar para criar uma etapa de pipeline $vectorSearch. Esta etapa do pipeline permite que você execute uma pesquisa semântica nos seus documentos. Uma pesquisa semântica é um tipo de pesquisa que localiza informações que são semelhantes em significado, mas não necessariamente idênticas ao termo ou frase de pesquisa fornecido.

Importante

Compatibilidade de recursos

Para saber quais versões do MongoDB Atlas suportam este recurso, consulte Limitações na documentação do MongoDB Atlas.

Para usar este recurso, você deve criar um índice de pesquisa de vetor e indexar suas incorporações de vetor. Para aprender a criar programaticamente um índice de pesquisa vetorial, consulte a seção Índices de Pesquisa e Índices de Pesquisa Vetorial do MongoDB no guia de Índices. Para aprender mais sobre incorporações de vetor, consulte Como indexar incorporações de vetor para pesquisa vetorial 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.

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.

Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo:

Voltar

MongoDB Search

Nesta página