Docs Menu
Docs Home
/ /

Búsqueda vectorial de MongoDB

En esta guía, aprenderá a realizar búsquedas en sus documentos mediante la función MongoDB Vector Search. Laravel MongoDB proporciona una API para realizar consultas MongoDB Vector Search directamente con sus modelos. Esta guía describe cómo crear índices MongoDB Vector Search y proporciona ejemplos de cómo usar la integración de Laravel para realizar búsquedas.

Nota

Compatibilidad de implementación

Solo puede usar la función de búsqueda vectorial de MongoDB al conectarse a clústeres de MongoDB Atlas. Esta función no está disponible para implementaciones autogestionadas.

Para obtener más información sobre MongoDB Vector Search, consulte Descripción general en la documentación de Atlas. La API de búsqueda vectorial de MongoDB utiliza internamente... $vectorSearch Operador de agregación para realizar consultas. Para obtener más información sobre este operador, consulte la referencia de $vectorSearch en la documentación de Atlas.

Nota

Es posible que no pueda usar los métodos descritos en esta guía para todos los tipos de consultas de búsqueda vectorial de MongoDB. Para casos de uso más complejos, cree una canalización de agregación mediante Constructor de agregaciones.

Para realizar búsquedas avanzadas de texto completo en sus documentos, puede usar la API de búsqueda de MongoDB de Laravel MongoDB. Para obtener más información sobre esta función, consulte la guía de búsqueda de MongoDB.

Puede crear un índice de búsqueda de MongoDB de cualquiera de las siguientes maneras:

  • Invoque el create() método en la Schema fachada y pase el método vectorSearchIndex() auxiliar con los detalles de creación del índice. Para obtener más información sobre esta estrategia, consulte la sección "Administrar índices de búsqueda MongoDB y búsqueda vectorial MongoDB" de la guía del Constructor de esquemas.

  • Acceda a una colección y luego llame al método desde la biblioteca PHP de MongoDB. Debe especificar createSearchIndex() la type opción 'vectorSearch' como, como se muestra en el siguiente código:

    $collection = DB::connection('mongodb')->getCollection('movies');
    $collection->createSearchIndex([
    'fields' => [
    [
    'type' => 'vector',
    'numDimensions' => 4,
    'path' => 'embeddings',
    'similarity' => 'cosine'
    ],
    ],
    ], ['name' => 'vector_index', 'type' => 'vectorSearch']);

En esta sección se puede aprender a usar la API de búsqueda vectorial de MongoDB en la integración de Laravel. La integración de Laravel proporciona el método vectorSearch() tanto como método de generador de consultas como método de modelo Eloquent. Puedes usar el método vectorSearch() para ejecutar consultas de búsqueda vectorial de MongoDB en documentos de tus colecciones.

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

Parameter
Tipo
Descripción

index

string

Nombre del índice de búsqueda vectorial

path

string

Campo que almacena incrustaciones vectoriales

queryVector

array

Representación vectorial de su consulta

limit

int

Número de resultados a retornar

El siguiente código utiliza el vector índice creado en la sección Crear un índice de búsqueda vectorial de MongoDB anterior para realizar una consulta de búsqueda vectorial de MongoDB en la movies colección:

$movies = Book::vectorSearch(
index: 'vector',
path: 'vector_embeddings',
// Vector representation of the query `coming of age`
queryVector: [-0.0016261312, -0.028070757, ...],
limit: 3,
);
[
{ "title": "Sunrising",
"plot": "A shy teenager discovers confidence and new friendships during a transformative summer camp experience."
},
{ "title": "Last Semester",
"plot": "High school friends navigate love, identity, and unexpected challenges before graduating together."
}
]

Puede usar el método vectorSearch() para realizar diversos tipos de consultas de búsqueda de MongoDB. Según la consulta deseada, puede pasar los siguientes parámetros opcionales a vectorSearch():

Parámetro opcional
Tipo
Descripción
Valor por defecto

exact

bool

Especifica si se debe ejecutar una búsqueda de vecino más cercano exacto (true) o de vecino más cercano aproximado (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 a utilizar durante la búsqueda

null

Nota

Para construir una instancia QueryInterface, debe importar la clase MongoDB\Builder\Query en su aplicación.

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.

Volver

MongoDB búsqueda

En esta página