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 o MongoDB pesquisa vetorial, veja o 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 queries. 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 pesquisa vetorial. Para casos de uso mais complexos, crie um pipeline de agregação usando o Construtor 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 aprender mais sobre este recurso, consulte o guia Pesquisa do MongoDB.
Crie um índice de Vector Search do MongoDB
Você pode criar um índice de pesquisa do MongoDB 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 aprender mais sobre essa estratégia, consulte a seção Gerenciar índices de pesquisa do MongoDB e pesquisa vetorial do MongoDB 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.