Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Ejecuta una query de búsqueda vectorial en MongoDB

En esta guía, puedes aprender cómo utilizar el driver de sincronización de Kotlin para realizar MongoDB Vector Search queries. el Aggregates La clase desarrolladores proporciona el método auxiliar vectorSearch(), que se puede usar para crear una etapa de pipeline $vectorSearch.

Importante

Compatibilidad de características

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

Antes de poder realizar consultas de MongoDB Vector Search, debes crear un índice de MongoDB Vector Search en tu colección. Para aprender a crear programáticamente un índice de búsqueda vectorial, consulte la Guía de Índices de búsqueda de MongoDB y de búsqueda vectorial

Luego, puedes ejecutar una query de Búsqueda Vectorial de MongoDB utilizando el método vectorSearch() en un pipeline de agregación. Este método acepta los siguientes parámetros:

  • path:El campo a buscar

  • queryVector: El embedding vectorial que representa tu 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 puedes usar para configurar la query 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

Query Vector Type

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 meta-puntuación de búsqueda vectorial de los documentos. Esta puntuación representa la relevancia de cada documento con respecto al vector 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

Tip

Tutoriales de búsqueda vectorial

Para ver más tutoriales que muestran cómo ejecutar consultas de MongoDB Vector Search, consulta el Tutoriales de MongoDB Vector Search en la documentación de MongoDB Atlas.

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

Volver

MongoDB búsqueda

En esta página