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

Ejecución de consultas de búsqueda vectorial

Una MongoDB Vector Search tiene la forma de un pipeline de agregación que usa $vectorSearch como la primera etapa. Esta página explica la sintaxis, las opciones y el comportamiento de la etapa $vectorSearch.

$vectorSearch

La etapa $vectorSearch procesa un documento con los siguientes campos:

Cuando defines un $vectorSearch etapa, puedes usar el campo exact para especificar si ejecutar un BúsquedaANN o ENN.

$vectorSearch debe ser la primera etapa de cualquier pipeline en el que aparezca.

$vectorSearch no se puede utilizar en definición de vista ni en las siguientes etapas de la pipeline:

  • $lookup sub-pipeline [1]

  • $facet etapa de pipeline

[1] Puedes pasar los resultados de a esta $vectorSearch etapa.

Para obtener más información sobre estos tipos de campos de búsqueda vectorial de MongoDB, consulte Cómo indexar campos para la búsqueda vectorial.

La búsqueda vectorial de MongoDB asigna una puntuación, en un rango fijo de 0 a 1 (donde 0 indica baja similitud y 1 indica alta similitud), a cada documento que devuelve.

Cada documento devuelto incluye la puntuación como metadatos. Para devolver la puntuación de cada documento junto con el conjunto de resultados, utilice una etapa en su canal de agregación y configure $project como score campo para proyectar. En el score campo, especifique una expresión $meta con el vectorSearchScore valor. La sintaxis es la siguiente:

1db.<collection>.aggregate([
2 {
3 "$vectorSearch": {
4 <query-syntax>
5 }
6 },
7 {
8 "$project": {
9 "<field-to-include>": 1,
10 "<field-to-exclude>": 0,
11 "score": { "$meta": "vectorSearchScore" }
12 }
13 }
14])

Nota

Puedes usar vectorSearchScore como una expresión score $meta solamente después de la etapa de $vectorSearch del pipeline. Si usa vectorSearchScore después de cualquier otra query, MongoDB registra una advertencia a partir de MongoDB v8.2.

Nota

El prefiltrado de sus datos no afecta a la puntuación que devuelve la búsqueda vectorial de MongoDB mediante vectorSearchScore para queries $vectorSearch.

La opción de filter $vectorSearch coincide con valores BSON booleanos, de fecha, objectId, numéricos, de string y UUID, incluidos arreglos de estos tipos.

Debe indexar los campos por los que desea filtrar sus datos como el tipo de filtro en la definición de un índice de tipo vectorSearch. Filtrar sus datos es útil para reducir el alcance de su búsqueda semántica y garantizar que no se tengan en cuenta todos los vectores para la comparación.

La búsqueda vectorial de MongoDB admite la opción $vectorSearch filter para los siguientes operadores MQL:

Tipo
Operador de MQL

Igualdad

Rango

En conjunto

Existencia

Lógica

  • La búsqueda vectorial de MongoDB admite la forma abreviada de $eq. En la forma abreviada, no es necesario especificar $eq en la query.

    Por ejemplo, considere el siguiente filtro con $eq:

    "filter": { "_id": { "$eq": ObjectId("5a9427648b0beebeb69537a5") }

    Esto es equivalente al siguiente filtro, que utiliza la forma corta de $eq:

    "filter": { "_id": ObjectId("5a9427648b0beebeb69537a5") }
  • Puedes usar el $and MQL operador para especificar un arreglo de filtros en una sola query.

    Por ejemplo, considere el siguiente prefiltro para documentos con un campo genres igual a Action y un campo year con el valor 1999, 2000 o 2001:

    "filter": {
    "$and": [
    { "genres": "Action" },
    { "year": { "$in": [ 1999, 2000, 2001 ] } }
    ]
    }
  • Para capacidades avanzadas de filtrado como búsqueda difusa, coincidencia de frases, filtrado por ubicación y otros textos analizados, utiliza el operador vectorSearch en una etapa $search.

Antes de ejecutar estos ejemplos, realiza las siguientes acciones:

  • Añade el conjunto de datos a tu clúster.

  • Crea índices de MongoDB Vector Search para la colección. Para obtener instrucciones, consulta el procedimiento Crear un MongoDB Vector Search Index y copia las configuraciones de los ejemplos básicos o de filtro en el lenguaje que desees.

Nota

Si se usa mongosh, pegar el queryVector del código de muestra en el terminal podría tardar un poco dependiendo de la máquina.

Volver

Referencia del índice

Obtén una insignia de habilidad

Domina "Fundamentos de búsqueda vectorial" de forma gratuita.

Más información

En esta página