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
/ /

Búsqueda vectorial de MongoDB

En esta guía, puedes aprender cómo utilizar el MongoDB Vector Search funcionalidad en el driver de Kotlin. el Aggregates La clase desarrolladores proporciona el método asistente vectorSearch() que puede usar para crear una etapa de pipeline $vectorSearch. Esta etapa del pipeline permite realizar una búsqueda semántica en los documentos. Una búsqueda semántica es un tipo de búsqueda que localiza información con un significado similar, pero no necesariamente idéntica, al término o frase de búsqueda proporcionada.

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.

Para usar esta función, debe crear un índice de búsqueda vectorial e indexar sus incrustaciones vectoriales. Para obtener información sobre cómo crear un índice de búsqueda vectorial mediante programación, consulte Sección "Búsqueda MongoDB" e "Índices de Búsqueda Vectorial MongoDB" de la guía de Índices. Para obtener más información sobre incrustaciones vectoriales, consulte "Cómo indexar incrustaciones vectoriales para la búsqueda vectorial" en la documentación de Atlas.

Después de crear un índice de búsqueda vectorial en sus incrustaciones vectoriales, puede hacer referencia a este índice en su etapa de canalización, como se muestra en la siguiente sección.

El ejemplo en esta sección utiliza datos modelados con la siguiente clase de datos de Kotlin:

data class MovieAlt(
val title: String,
val year: Int,
val plot: String,
val plotEmbedding: List<Double>
)

Este ejemplo muestra cómo crear una canalización de agregación que utiliza el método vectorSearch() para realizar una búsqueda vectorial exacta con las siguientes especificaciones:

  • Busca valores de campo de plotEmbedding utilizando incrustaciones de vectores de un valor de string

  • Utiliza el índice de búsqueda vectorial mflix_movies_embedding_index

  • Devuelve 1 documento

  • Filtros para documentos en los que el valor year es al menos 2016

Aggregates.vectorSearch(
SearchPath.fieldPath(MovieAlt::plotEmbedding.name),
BinaryVector.floatVector(floatArrayOf(0.0001f, 1.12345f, 2.23456f, 3.34567f, 4.45678f)),
"mflix_movies_embedding_index",
1.toLong(),
exactVectorSearchOptions().filter(Filters.gte(MovieAlt::year.name, 2016))
)

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.

Tip

Ejemplos de búsqueda vectorial en Kotlin

Visita la documentación de Atlas para encontrar más tutoriales sobre cómo usar el driver Kotlin para realizar una búsqueda vectorial con MongoDB.

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