Visão geral
Neste guia, você pode aprender a realizar pesquisas em seus documentos usando o recurso MongoDB Vector Search . A biblioteca PHP permite executar queries do MongoDB Vector Search usando o Construtor de aggregation.
Para saber mais sobre a Vector Search do MongoDB , consulte a Visão geral da Vector Search MongoDB. A implementação da Vector Search do MongoDB para a biblioteca PHP usa internamente o $vectorSearch operador de agregação 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 guia Executar uma query de pesquisa do MongoDB .
Índice de Vector Search do MongoDB
Antes de executar queries do MongoDB Vector Search , você deve criar um índice do MongoDB Vector Search em sua collection. Para saber 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 aplicação para executar queries do MongoDB Vector Search usando o Construtor de Agregações:
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.Chame o método
Stage::vectorSearch()para criar o estágio MongoDB Vector Search .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 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 do Vector Search
Nesta seção, você pode aprender como executar queries do MongoDB Vector Search usando o Construtor de Agregações. 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 exemplos de vetores de consulta que contêm pouquíssimos elementos, em comparação com o vetor de consulta que você pode usar em um aplicação executável . Para visualizar um exemplo que contém o vetor de query completo, consulte o Início Rápido do MongoDB Vector Search e selecione PHP no Select your language menu suspenso no canto superior direito da página.
Query de Vector Search básica
O seguinte código executa uma query do MongoDB Vector Search 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 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.