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.
Docs Menu

Ejecuta una query de búsqueda vectorial en MongoDB

En esta guía, puedes aprender cómo realizar búsquedas en tus documentos utilizando la funcionalidad de Búsqueda Vectorial de MongoDB. La librería PHP te permite realizar consultas de MongoDB Vector Search utilizando el Constructor de agregación.

Para obtener más información sobre la búsqueda vectorial en MongoDB, consulte la descripción general de la búsqueda vectorial en MongoDB. La implementación de la búsqueda vectorial en MongoDB para la biblioteca PHP utiliza internamente el $vectorSearch operador de agregación para realizar consultas. Para obtener más información sobre este operador, consulte la referencia $vectorSearch en la documentación de Atlas.

Nota

MongoDB búsqueda

Para realizar una búsqueda avanzada de texto completo en tus documentos, puedes utilizar la API de búsqueda de MongoDB. Para aprender sobre esta función, consulta la guía Ejecutar una MongoDB Search query.

Antes de ejecutar queries de Búsqueda Vectorial de MongoDB, debes crear un índice de Búsqueda Vectorial de MongoDB en tu colección. Para obtener más información sobre cómo crear este tipo de índice, consulta la guía Índices de búsqueda de MongoDB.

Importe las siguientes clases en su aplicación para realizar queries de búsqueda vectorial en MongoDB utilizando el Agregación Builder:

use MongoDB\Builder\Stage;

Para crear una etapa $vectorSearch en tu pipeline de agregación, realiza las siguientes acciones:

  1. Cree un arreglo para almacenar las etapas de la pipeline.

  2. Llama al método Stage::vectorSearch() para crear la etapa de MongoDB Vector Search.

  3. Dentro del cuerpo del método vectorSearch(), especifica los criterios para tu vector query.

El siguiente código demuestra la plantilla para construir consultas básicas de MongoDB Vector Search:

$pipeline = [
Stage::vectorSearch(
/* MongoDB Vector Search query specifications
index: '<index name>',
path: '<path to embeddings>', ...*/
),
];

Debes pasar los siguientes parámetros al método vectorSearch():

Parameter
Tipo
Descripción

index

string

Nombre del índice de búsqueda vectorial

path

array or string

Campo que almacena incrustaciones de vectores

queryVector

array

Representación vectorial de su query

limit

int

Número de resultados a retornar

En esta sección, puedes aprender a realizar consultas de MongoDB Vector Search utilizando el Aggregation Builder. Los ejemplos en esta sección utilizan datos de muestra de la colección sample_mflix.embedded_movies.

Nota

Longitud de vector de query

A modo de ejemplo, los ejemplos de esta sección utilizan vectores de consulta de muestra con muy pocos elementos, en comparación con el vector de consulta que se usaría en una aplicación ejecutable. Para ver un ejemplo con el vector de consulta completo, consulte la Guía de inicio rápido de MongoDB Vector Search y seleccione PHP Select your language en el menú desplegable situado en la esquina superior derecha de la página.

El siguiente código realiza una MongoDB Vector Search query en el campo vector plot_embedding:

$pipeline = [
Stage::vectorSearch(
index: 'vector',
path: 'plot_embedding',
queryVector: [-0.0016261312, -0.028070757, -0.011342932],
numCandidates: 150,
limit: 5,
),
Stage::project(
_id: 0,
title: 1,
),
];
$cursor = $collection->aggregate($pipeline);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}

El siguiente código realiza la misma query que en el ejemplo anterior, pero sólo muestra el campo title y el campo meta vectorSearchScore, que describe qué tan bien se ajusta el documento al vector de query:

$pipeline = [
Stage::vectorSearch(
index: 'vector',
path: 'plot_embedding',
queryVector: [-0.0016261312, -0.028070757, -0.011342932],
numCandidates: 150,
limit: 5,
),
Stage::project(
_id: 0,
title: 1,
score: ['$meta' => 'vectorSearchScore'],
),
];
$cursor = $collection->aggregate($pipeline);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}

Puedes usar el método vectorSearch() para realizar muchos tipos de MongoDB Vector Search queries. Dependiendo de la query que desees realizar, puedes pasar los siguientes parámetros opcionales a vectorSearch():

Parámetro opcional
Tipo
Descripción
Valor por defecto

exact

bool

Especifica si se ejecutar una búsqueda de Vecino Más Cercano Exacto (true) o de ANN (false)

false

filter

QueryInterface or array

Especifica un pre-filtro para los documentos a buscar.

sin filtro

numCandidates

int or null

Especifica el número de vecinos más cercanos que se usarán durante la búsqueda

null

Para obtener más información sobre estos parámetros, consulte la sección Campos de la $vectorSearch referencia del operador en la documentación de Atlas.