Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.

$vectorSearch etapa de agregación

La etapa $vectorSearch enriquece cada documento de transmisión con los resultados de una query de búsqueda vectorial de MongoDB. Para cada documento de entrada, la etapa ejecuta una query $vectorSearch en una colección y adjunta los resultados a un campo que especifique.

$vectorSearch debe ser una etapa intermedia de tu pipeline. No lo utilices como $source o receptor de tu pipeline.

La etapa de pipeline $vectorSearch tiene la siguiente forma de prototipo:

{ "$vectorSearch": { "from": { "connectionName": "<registered-atlas-connection>", "db": "<database>", "coll": "<collection>" }, "as": "<output-field>", "queryVector": [<number>, ...] | <expression>, "query": { "text": "<string>" | <expression> }, "model": "<embedding-model>", "index": "<vector-index-name>", "path": "<field-containing-vectors>", "numCandidates": <int>, "limit": <int>, "filter": { ... }, "exact": <bool>, "searchNodePreference": { "key": "<preference>" }, "pipeline": [ { $<aggregation-stage>: { ... } }, ... ], "let": { "<variable>": <expression>, . . . } }}

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

Campo
Tipo
Necesidad
Descripción

from

Documento

Requerido

Documento que especifica la colección de Atlas de destino que $vectorSearch query para cada documento de entrada.

from.connectionName

string

Requerido

Nombre de una conexión de Atlas en su Registro de Conexiones. Atlas Stream Processing rechaza cualquier otro tipo de conexión en el momento del análisis.

from.db

string literal

Requerido

Nombre de la base de datos de destino.

from.coll

string literal

Requerido

Nombre de la colección de destino que contiene el índice de búsqueda vectorial de MongoDB.

as

string

Requerido

Campo de salida en el documento de transmisión para el arreglo de resultados de la búsqueda. Si la búsqueda vectorial de MongoDB no devuelve ningún documento coincidente, Atlas Stream Processing establece este campo en un arreglo vacío.

ADVERTENCIA: si este campo está vacío o choca con el nombre del campo de metadatos de la transmisión, Atlas Stream Processing informa de un error StreamProcessorInvalidOptions al inicio.

queryVector

arreglo | expresión de ruta de campo

Condicional

Incrustación vectorial explícita para buscar documentos coincidentes.

query

Documento

Condicional

Documento que especifica la query de texto para la incrustación automática.

query.text

string | expresión de ruta de campo

Condicional

Query de texto para usar para la incrustación automática.

model

string

Opcional

Modelo de incrustación que utiliza la búsqueda vectorial de MongoDB para convertir query.text en un vector. Válido solo junto con query.

Cuando omite model, la búsqueda vectorial de MongoDB utiliza el modelo configurado en la definición del índice de búsqueda vectorial de MongoDB de destino.

index

string

Requerido

Nombre del índice de MongoDB búsqueda vectorial para la query.

path

string

Requerido

Campo en la colección de destino que contiene las incrustaciones vectoriales para buscar.

numCandidates

Int

Condicional

Número de candidatos que la búsqueda vectorial de MongoDB considera durante la búsqueda. Obligatorio a menos que exact sea true. Para aprender cómo elegir un valor, consulte Selección de numCandidates.

limit

Int

Requerido

Número máximo de resultados a devolver. No debe exceder numCandidates.

ADVERTENCIA: Si limit supera numCandidates, cada documento falla en tiempo de ejecución con un error PlanExecutor.

filter

Documento

Opcional

Expresión de prefiltro que se aplicará antes de la búsqueda vectorial. Para conocer los operadores compatibles, consulte Filtro.

ADVERTENCIA: Si filter utiliza un operador no compatible, todos los documentos fallarán en tiempo de ejecución con un error PlanExecutor.

exact

booleano

Opcional

Indicador que especifica si se debe ejecutar la búsqueda de ANN o ENN. Proporcione este campo si omite numCandidates.

El valor puede ser uno de los siguientes:

  • false para ejecutar la búsqueda de ANN

  • true para ejecutar ENN search

Se establece por defecto en false.

searchNodePreference

Documento

Opcional

Documento con un campo key que Atlas Stream Processing utiliza para enrutar la query a un nodo de búsqueda específico. El valor key debe ser una string no vacía.

pipeline

arreglo

Opcional

Etapas de agregación adicionales que Atlas Stream Processing ejecuta en los resultados de la búsqueda, antes de adjuntarlos al documento de entrada.

let

Documento

Opcional

Variables que Atlas Stream Processing evalúa con cada documento de entrada. Cada valor puede ser un literal, una ruta de campo o una expresión. Las etapas pipeline pueden hacer referencia a los valores resueltos como $$<variable>.

$vectorSearch admite dos modos de query mutuamente excluyentes: queryVector para incrustación de vectores y query.text para incrustación automática. En cualquier modo, puede especificar un valor literal o una expresión de ruta de campo, de modo que un único procesador de transmisión pueda emitir una query diferente para cada documento de entrada.

Si el índice de búsqueda vectorial de MongoDB de destino no existe, el procesador de transmisión entra en un estado de error cuando $vectorSearch se ejecuta por primera vez. Atlas Stream Processing informa de un error MongoServerError y deja de procesar documentos.

Si queryVector o query.text se evalúa con el tipo incorrecto en tiempo de ejecución, Atlas Stream Processing solo enruta el documento infractor a la fila de letra muerta, si está configurado, o lo descarta en caso contrario. El procesador de flujos sigue procesando documentos posteriores. Para el esquema de documento de DLQ, consulte fila de letra muerta.

Utilice pipeline para procesar aún más los resultados de la búsqueda antes de que Atlas Stream Processing los adjunte al documento de entrada. Atlas Stream Processing reenvía pipeline a MongoDB búsqueda vectorial textualmente. Para hacer referencia a un valor del documento de entrada dentro de pipeline, páselo a través de let y haga referencia a él como $$<variable>.

Los siguientes ejemplos consultan el conjunto de datos sample_mflix, que contiene datos sobre películas y cines. Para ejecutarlos, cargue los datos de muestra en su clúster de Atlas y cree un índice de búsqueda vectorial de MongoDB en la colección embedded_movies.