Menu Docs
Página inicial do Docs
/ /

Executar uma query de Vector Search do MongoDB

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 .

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 .

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:

  1. Crie uma instância Pipeline para armazenar os estágios do pipeline.

  2. Chame o método Stage::vectorSearch() para criar o estágio MongoDB Vector Search .

  3. 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

index

string

Nome do índice de pesquisa vetorial

path

array ou string

Campo que armazena incorporações de vetor

queryVector

array

Representação vetorial da sua query

limit

int

Número de resultados a retornar

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.

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

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

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

exact

bool

Especifica se uma pesquisa deve ser executada no vizinho mais próximo exato (true) ou no vizinho mais próximo aproximado (false)

false

filter

QueryInterface ou array

Especifica um pré-filtro para documentos a serem pesquisados

sem filtragem

numCandidates

int ou null

Especifica o número de vizinhos mais próximos a serem usados durante a pesquisa

null

Para saber mais sobre esses parâmetros, consulte a seção Campos da referência do operador $vectorSearch na documentação do Atlas.

Voltar

MongoDB Search

Nesta página