Atlas Vector Search
Nesta página
Visão geral
Neste guia, você pode aprender como realizar pesquisas em seus documentos usando o recurso Atlas Vector Search . A biblioteca PHP permite executar queries do Atlas Vector Search usando o Construtor de aggregation.
Observação
Compatibilidade de implantação
Você pode usar a funcionalidade Atlas Vector Search somente quando se conectar a clusters do MongoDB Atlas . Esta funcionalidade não está disponível para implementações autogerenciadas.
Para saber mais sobre o Atlas Vector Search, consulte a Visão geral do Atlas Vector Search. A implementação do Atlas Vector Search 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
Atlas Search
Para executar a pesquisa avançada de texto completo em seus documentos, você pode usar a API de Atlas Search . Para saber mais sobre esse recurso, consulte o guia Atlas Search.
Índice do Atlas Vector Search
Antes de executar queries do Atlas Vector Search , você deve criar um índice do Atlas Vector Search em sua collection. Para saber mais sobre como criar esse tipo de índice, consulte o guia Índices de Atlas Search.
Estágio de agregação do Vector Search
Importe as seguintes classes para o seu aplicação para executar queries do Atlas Search usando o Aggregation Builder:
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
Pipeline
para armazenar os estágios do pipeline.Chame o método
Stage::vectorSearch()
para criar o estágio do Atlas Vector Search .No corpo do método
vectorSearch()
, especifique os critérios para sua query de vetor.
O seguinte código demonstra o modelo para construir queries básicas do Atlas Search :
$pipeline = new Pipeline( Stage::vectorSearch( /* Atlas 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 Atlas Search
Nesta seção, você pode aprender como executar queries do Atlas 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 Atlas Vector Search 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 Atlas 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 Atlas 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.