Visão geral
Neste guia, você pode aprender a realizar pesquisas em seus documentos usando o recurso Pesquisa Vetorial do MongoDB. A biblioteca PHP permite executar queries de pesquisa do MongoDB Vector Search usando o Construtor de Agregação.
Para saber mais sobre a pesquisa vetorial do MongoDB, consulte a Visão geral da pesquisa vetorial. A implementação da pesquisa vetorial do MongoDB para a biblioteca PHP 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
MongoDB Search
Para realizar pesquisas avançadas de texto completo em seus documentos, você pode usar a API de pesquisa do MongoDB . Para saber mais sobre esse recurso, consulte o Executar uma query de pesquisa do MongoDB guia.
Índice de Vector Search do MongoDB
Antes de executar queries de pesquisa do MongoDB pesquisa vetorial, você deve criar um índice do MongoDB pesquisa vetorial em sua coleção. Para aprender mais sobre como criar esse tipo de índice, consulte o guia Índices de pesquisa do MongoDB.
Estágio de agregação do Vector Search
Importe as seguintes classes para o seu aplicativo para executar query de pesquisa do MongoDB Vector Search usando os construtores de agregação:
use MongoDB\Builder\Pipeline; use MongoDB\Builder\Stage;
Para criar um estágio $vectorSearch em seu pipeline de agregação , execute as seguintes ações:
Crie uma instância
Pipelinepara armazenar os estágios do pipeline.Chamar o método
Stage::vectorSearch()para criar o estágio MongoDB pesquisa vetorial.No corpo do método
vectorSearch(), especifique os critérios para sua query de vetor.
O código abaixo demonstra o modelo para a construção de queries de pesquisa básicas do MongoDB Vector Search:
$pipeline = new Pipeline( Stage::vectorSearch( /* MongoDB Vector Search query specifications index: '<index name>', path: '<path to embeddings>', ...*/ ), );
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 |
Exemplos de query da pesquisa vetorial
Nesta seção, você pode aprender como executar query de pesquisa do MongoDB Vector Search usando o Construtor de Agregação. Os exemplos nesta seção utilizam dados de amostra da coleção sample_mflix.embedded_movies.
Observação
Comprimento do vetor de query
Para fins demonstrativos, os exemplos nesta seção usam vetores query de amostra que contêm pouquíssimos elementos, em comparação com o vetor query que você pode usar em um aplicativo executável. Para visualizar um exemplo que contém o vetor de query completo, consulte o Início Rápido do MongoDB pesquisa vetorial e selecione PHP no menu suspenso Select your language no canto superior direito da página.
Query de Vector Search básica
O seguinte código executa uma query do MongoDB pesquisa vetorial no campo de vetor plot_embedding :
$pipeline = new 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; }
{"title":"Thrill Seekers"} {"title":"About Time"} {"title":"Timecop"} // Results truncated
Pontuação de pesquisa vetorial
O código a seguir executa a mesma query do exemplo anterior , mas gera apenas o campo title e o campo vectorSearchScore , que descreve até que ponto o documento corresponde ao vetor de query:
$pipeline = new 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; }
{"title":"Thrill Seekers","score":0.927734375} {"title":"About Time","score":0.925750732421875} {"title":"Timecop","score":0.9241180419921875} // Results truncated
Opções de Vector Search
Você pode utilizar o método vectorSearch() para executar muitos tipos de queries de pesquisa do MongoDB Vector 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 |
|
Para saber mais sobre esses parâmetros, consulte a seção Campos da referência do operador $vectorSearch na documentação do Atlas.