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

Búsqueda vectorial de MongoDB

En esta guía, puedes aprender cómo realizar búsquedas en tus documentos utilizando la MongoDB Vector Search funcionalidad. Laravel MongoDB proporciona una API para realizar consultas MongoDB Vector Search directamente con tus modelos. Esta guía describe cómo crear índices de MongoDB Vector Search y proporciona ejemplos de cómo utilizar 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, consulta la Resumen general en la documentación de Atlas. La MongoDB Vector Search API utiliza internamente la $vectorSearch operador de agregación para realizar queries. Para obtener más información sobre este operador, consulta la referencia $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 agregación.

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.

Puedes crear un índice de MongoDB Search de cualquiera de las siguientes maneras:

  • Llama al método create() en la fachada Schema y pasa el método asistente vectorSearchIndex() con los detalles de la creación del índice. Para obtener más información sobre esta estrategia, consulta la sección Gestionar MongoDB Search y MongoDB Vector Search Indexes de la guía del Generador 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 query

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."
}
]

Se puede usar el método vectorSearch() para ejecutar muchos tipos de consultas de query de MongoDB Search. 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

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