Visão geral
Neste guia, você pode aprender como usar o driver Kotlin Sync para executar queries do Atlas Vector Search . A Aggregates
classe de construtores fornece o vectorSearch()
método assistente, que você pode usar para criar um estágio de pipeline $vectorSearch.
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
Antes de executar queries do Atlas Vector Search , você deve criar um índice do Atlas Vector Search em sua collection. Para saber como criar programaticamente um índice de pesquisa vetorial, consulte o guia do Atlas Search e dos índices de Vector Search .
Em seguida, você pode executar uma query do Atlas Vector Search usando o método vectorSearch()
em um pipeline de agregação . Este método aceita os seguintes parâmetros:
path
: O campo a ser pesquisadoqueryVector
: A incorporação do vetor que representa sua query de pesquisaindexName
: O nome do índice do Atlas Vector Search para usarlimit
: o número máximo de resultados a serem retornadosoptions
: (Opcional) Um conjunto de opções que você pode usar para configurar a query de pesquisa vetorial
Exemplo de Vector Search básica
Este exemplo executa uma query do Atlas Vector Search que executa as seguintes ações:
Executa query do campo vetorial
plot_embedding
.Limita os resultados a
5
documentos.Especifica uma pesquisa vetorial do vizinho mais próximo (ANN) que considera
150
candidatos. Para saber mais sobre pesquisas de ANN, consulte Pesquisa de ANN na documentação do MongoDB Atlas .
val vectorValues = FloatArray(1536) { i -> (i % 10).toFloat() * 0.1f } val queryVector = BinaryVector.floatVector(vectorValues) val indexName = "<vector search index>" // Specifies the path of the field to search val fieldSearchPath: FieldSearchPath = fieldPath("plot_embedding") // Creates the vector search pipeline stage with a limit and numCandidates val pipeline: List<Bson> = listOf( vectorSearch( fieldSearchPath, queryVector, indexName, 5L, approximateVectorSearchOptions(150) ), project( Projections.fields( Projections.excludeId(), Projections.include("title") ) ) ) val results = collection.aggregate(pipeline) results.forEach { doc -> println(doc.toJson()) }
{"title": "Berserk: The Golden Age Arc I - The Egg of the King"} {"title": "Rollerball"} {"title": "After Life"} {"title": "What Women Want"} {"title": "Truth About Demons"}
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.
Exemplo de pontuação do Vector Search
O exemplo a seguir mostra como executar a mesma query de pesquisa vetorial do exemplo anterior e imprimir a meta-pontuação da pesquisa vetorial dos documentos. Essa pontuação representa a relevância de cada documento para o vetor de query:
val pipeline: List<Bson> = listOf( vectorSearch( fieldSearchPath, queryVector, indexName, 5L, approximateVectorSearchOptions(150) ), project( Projections.fields( Projections.excludeId(), Projections.include("title"), Projections.metaVectorSearchScore("score") ) ) ) val results = collection.aggregate(pipeline) results.forEach { doc -> println("Title: ${doc.getString("title")}, Score: ${doc.getDouble("score")}") }
Title: Berserk: The Golden Age Arc I - The Egg of the King, Score: 0.49899211525917053 Title: Rollerball, Score: 0.4976102113723755 Title: After Life, Score: 0.4965665936470032 Title: What Women Want, Score: 0.49622756242752075 Title: Truth About Demons, Score: 0.49614521861076355
Dica
Tutoriais de Vector Search
Para visualizar mais tutoriais que mostram como executar queries do Atlas Vector Search , consulte os Tutoriais do Atlas Vector Search na documentação do MongoDB Atlas .
Documentação da API
Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo: