Docs Menu
Docs Home
/ /

Ejecuta una query de búsqueda vectorial en MongoDB

En esta guía, puede aprender a utilizar el controlador de sincronización de Kotlin para realizar Consultasde búsqueda vectorial de MongoDB. Aggregates La clase Builder proporciona el vectorSearch() método auxiliar, que puede utilizar para crear una etapa de canalización $vectorSearch.

Importante

Compatibilidad de características

Para saber qué versiones de MongoDB Atlas admiten esta función, consulte Limitaciones en la documentación de MongoDB Atlas.

Antes de poder realizar consultas de búsqueda vectorial de MongoDB, debe crear un índice de búsqueda vectorial de MongoDB en su colección. Para aprender a crear un índice de búsqueda vectorial mediante programación, consulte Guía de índices de búsqueda vectorial y de búsqueda de MongoDB.

Luego, puede ejecutar una consulta de búsqueda vectorial de MongoDB mediante el método vectorSearch() en una canalización de agregación. Este método acepta los siguientes parámetros:

  • path:El campo a buscar

  • queryVector:La incrustación vectorial que representa su consulta de búsqueda

  • indexName:El nombre del índice de búsqueda vectorial de MongoDB que se utilizará

  • limit:El número máximo de resultados a devolver

  • options: (Opcional) Un conjunto de opciones que puede utilizar para configurar la consulta de búsqueda vectorial

Este ejemplo ejecuta una consulta de búsqueda vectorial de MongoDB que realiza las siguientes acciones:

  • Consulta el campo vectorial plot_embedding.

  • Limita los resultados a 5 documentos.

  • Especifica una búsqueda vectorial de Vecino Más Cercano Aproximado (ANN) que considera 150 candidatos. Para obtener más información sobre las búsquedas ANN, consulta Búsqueda ANN en la documentación de 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"}

Tip

Tipo de vector de consulta

El ejemplo anterior crea una instancia de BinaryVector para que sirva como vector de query, pero también puedes crear un List de instancias de Double. Sin embargo, se recomienda usar el tipo BinaryVector para mejorar la eficiencia del almacenamiento.

El siguiente ejemplo muestra cómo ejecutar la misma consulta de búsqueda vectorial que el ejemplo anterior e imprimir la metapuntuación de búsqueda vectorial de los documentos. Esta puntuación representa la relevancia de cada documento para el vector de consulta:

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

Tip

Tutoriales de búsqueda de vectores

Para ver más tutoriales que muestran cómo ejecutar consultas de búsqueda vectorial de MongoDB, consulte los Tutoriales de búsqueda vectorial de MongoDB en la documentación de MongoDB Atlas.

Para obtener más información sobre los métodos y tipos mencionados en esta guía, consulte la siguiente documentación de API:

Volver

MongoDB búsqueda

En esta página