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 que você execute queries de pesquisa do MongoDB Vector Search usando o Construtor de Agregação.
To learn more about MongoDB Vector Search, see the MongoDB Vector Search Overview. The MongoDB Vector Search implementation for the PHP library internally uses the $vectorSearch aggregation operator to perform queries. To learn more about this operator, see the $vectorSearch reference in the Atlas documentation.
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\Stage;
Para criar um estágio $vectorSearch em seu pipeline de agregação , execute as seguintes ações:
Crie uma array para 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 = [ 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
For demonstrative purposes, the examples in this section use sample query vectors that contain very few elements, compared to the query vector you might use in a runnable application. To view an example that contains the full-length query vector, see the MongoDB Vector Search Quick Start and select PHP from the Select your language dropdown in the upper-right corner of the page.
Query de Vector Search básica
O seguinte código executa uma query do MongoDB pesquisa vetorial no campo de vetor plot_embedding :
$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; }
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 = [ 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; }
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 |
|
To learn more about these parameters, see the Fields section of the $vectorSearch operator reference in the Atlas documentation.