Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver de Kotlin Sync

Executar uma query no Atlas Vector Search

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.

Antes de executar queries do Atlas Vector Search , você deve criar um índice do Atlas Vector Search em sua collection.

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 pesquisado

  • queryVector: A incorporação do vetor que representa sua query de pesquisa

  • indexName: O nome do índice do Atlas Vector Search para usar

  • limit: o número máximo de resultados a serem retornados

  • options: (Opcional) Um conjunto de opções que você pode usar para configurar a query de pesquisa vetorial

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.

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.

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

Voltar

Atlas Search

Nesta página