Visão geral
Neste guia, você pode aprender a realizar pesquisas em seus documentos usando o recurso Pesquisa Vetorial do MongoDB. O Laravel MongoDB fornece uma API para executar queries de pesquisa do MongoDB Vector Search diretamente com seus modelos. Este guia descreve como criar índices de pesquisa vetorial do MongoDB e fornece exemplos de como usar a integração Laravel para realizar pesquisas.
Observação
Compatibilidade de implantação
Você pode usar a funcionalidade MongoDB Vector Search somente quando se conectar a clusters do MongoDB Atlas . Este recurso não está disponível para implantações autogerenciadas.
Para saber mais sobre a pesquisa vetorial do MongoDB, consulte a Visão geral na documentação do Atlas. A API de pesquisa vetorial do MongoDB usa internamente o operador de agregação $vectorSearch para executar as query. Para saber mais sobre este operador, consulte a referência $vectorSearch na documentação do Atlas.
Observação
Talvez você não consiga usar os métodos descritos neste guia para todos os tipos de query do MongoDB Vector Search . Para casos de uso mais complexos, crie um pipeline de agregação usando as Operações de Agregação.
Para realizar pesquisas avançadas de texto completo em seus documentos, você pode usar a API de pesquisa do MongoDB do Laravel MongoDB . Para saber mais sobre esse recurso, consulte o guia Executar uma query de pesquisa do MongoDB .
Crie um índice de Vector Search do MongoDB
Você pode criar um índice do MongoDB Search de uma das seguintes maneiras:
Chame o método
create()na fachadaSchemae passe o método assistentevectorSearchIndex()com os detalhes da criação do índice. Para saber mais sobre essa estratégia, consulte a seção Gerencie índices do MongoDB Search e do MongoDB Vector Search do guia "Construtor de esquema".Acesse uma coleção e, em seguida, chame o método
createSearchIndex()da biblioteca PHP do MongoDB . Você deve especificar a opçãotypecomo'vectorSearch', conforme mostrado no código a seguir:$collection = DB::connection('mongodb')->getCollection('movies'); $collection->createSearchIndex([ 'fields' => [ [ 'type' => 'vector', 'numDimensions' => 4, 'path' => 'embeddings', 'similarity' => 'cosine' ], ], ], ['name' => 'vector_index', 'type' => 'vectorSearch']);
Executar queries
Nesta seção, você pode aprender como usar a API de pesquisa vetorial do MongoDB na integração com o Laravel. A Integração Laravel fornece o método vectorSearch() como um método construtor de query e como um método de modelo Eloquent. Você pode usar o método vectorSearch() para executar query de pesquisa do MongoDB Vector Search em documentos em suas coleções.
Você deve passar os seguintes parâmetros para o método vectorSearch() :
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Nome do índice de pesquisa vetorial |
|
| Campo que armazena incorporações de vetor |
|
| Representação vetorial da sua query |
|
| Número de resultados a retornar |
O código a seguir usa o índice vector criado na seção anterior Criar um índice de pesquisa vetorial do MongoDB para executar uma query do MongoDB pesquisa vetorial na coleção movies:
$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." } ]
Você pode utilizar o método vectorSearch() para executar muitos tipos de queries de pesquisa do MongoDB Search. Dependendo da query desejada, você pode passar os seguintes parâmetros opcionais para vectorSearch():
Parâmetro opcional | Tipo | Descrição | Valor padrão |
|---|---|---|---|
|
| Especifica se uma pesquisa deve ser executada no vizinho mais próximo exato ( |
|
|
| Especifica um pré-filtro para documentos a serem pesquisados | sem filtragem |
|
| Especifica o número de vizinhos mais próximos a serem usados durante a pesquisa |
|
Observação
Para construir uma instância do QueryInterface, você deve importar a classe MongoDB\Builder\Query para seu aplicação.
Para saber mais sobre esses parâmetros, consulte a seção Campos da referência do operador $vectorSearch na documentação do Atlas.