Docs Menu
Docs Home
/ /

Ejecución de consultas de búsqueda vectorial

Una consulta de búsqueda vectorial de MongoDB toma la forma de una canalización de agregación que utiliza $vectorSearchcomo 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 define una etapa, puede utilizar $vectorSearch el exact campo para especificar si desea ejecutar una 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 subtubería []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

Puede usar vectorSearchScore como score expresión $meta solo después de la $vectorSearch etapa de canalización. Si usa vectorSearchScore después de cualquier otra consulta, MongoDB registra una advertencia a partir de MongoDB v..82

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") }
  • Puede utilizar el operador $and MQL para especificar una matriz de filtros en una sola consulta.

    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 obtener capacidades de filtrado avanzadas, como búsqueda difusa, coincidencia de frases, filtrado de ubicación y otros textos analizados, utilice el operador vectorSearch en una $search etapa.

Antes de ejecutar estos ejemplos, realiza las siguientes acciones:

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

  • Cree índices de búsqueda vectorial de MongoDB para la colección. Para obtener instrucciones, consulte el procedimiento "Crear un índice de búsqueda vectorial de MongoDB" y copie las configuraciones de los ejemplos básicos o de filtro en el idioma que desee.

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