Docs Menu
Docs Home
/ /

MongoDB 벡터 검색 쿼리 실행

이 가이드 에서는 MongoDB 벡터 검색 기능 사용하여 문서에서 검색을 수행하는 방법을 학습 수 있습니다. PHP 라이브러리를 사용하면 애그리게이션 빌더를 사용하여 MongoDB Vector Search 쿼리를 수행할 수 있습니다.

MongoDB Vector Search에 대해 자세히 학습 MongoDB Vector Search 개요를 참조하세요. PHP 라이브러리에 대한 MongoDB Vector Search 구현 내부적으로 $vectorSearch 집계 연산자 사용하여 쿼리를 수행합니다. 이 연산자 에 대해 자세히 학습 Atlas 문서에서 $vectorSearch 참조를 확인하세요.

참고

MongoDB Search

문서에서 고급 전체 텍스트 검색 수행하려면 MongoDB Search API 사용할 수 있습니다. 이 기능 에 대해 학습 MongoDB Search 쿼리 실행 가이드 참조하세요.

MongoDB Vector Search 쿼리를 수행하려면 먼저 컬렉션 에 MongoDB Vector Search 인덱스 생성해야 합니다. 이 인덱스 유형을 만드는 방법에 대해 자세히 학습 MongoDB 검색 인덱스 가이드 참조하세요.

애그리게이션 빌더를 사용하여 MongoDB Vector Search 쿼리를 수행하려면 다음 클래스를 애플리케이션 으로 가져옵니다.

use MongoDB\Builder\Pipeline;
use MongoDB\Builder\Stage;

집계 파이프라인 에서 $vectorSearch 단계를 만들려면 다음 작업을 수행합니다.

  1. 파이프라인 단계를 저장 Pipeline 인스턴스 를 만듭니다.

  2. Stage::vectorSearch() 메서드를 호출하여 MongoDB Vector Search 단계를 만듭니다.

  3. vectorSearch() 메서드 본문 내에서 벡터 쿼리 에 대한 기준을 지정합니다.

다음 코드는 기본 MongoDB Vector Search 쿼리를 구성하기 위한 템플릿을 보여줍니다.

$pipeline = new Pipeline(
Stage::vectorSearch(
/* MongoDB Vector Search query specifications
index: '<index name>',
path: '<path to embeddings>', ...*/
),
);

다음 매개변수를 vectorSearch() 메서드에 전달해야 합니다.

Parameter
유형
설명

index

string

벡터 검색 인덱스 의 이름

path

array or string

벡터 임베딩을 저장하는 필드

queryVector

array

쿼리 의 벡터 표현

limit

int

반환할 결과 수

이 섹션에서는 애그리게이션 빌더를 사용하여 MongoDB Vector Search 쿼리를 수행하는 방법에 대해 학습 봅니다. 이 섹션의 예제에서는 sample_mflix.embedded_movies 컬렉션 의 샘플 데이터를 사용합니다.

참고

쿼리 벡터 길이

설명을 위해 이 섹션의 예제에서는 실행 가능한 애플리케이션 에서 사용할 수 있는 쿼리 벡터와 비교하여 매우 적은 수의 요소를 포함하는 샘플 쿼리 벡터를 사용합니다. 전체 길이 쿼리 벡터가 포함된 예시 보려면 MongoDB Vector Search 빠른 시작을 PHP 참조하고 Select your language 페이지 오른쪽 상단의 드롭다운에서 를 선택합니다.

다음 코드는 plot_embedding 벡터 필드 에 대해 MongoDB Vector Search 쿼리 수행합니다.

$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

다음 코드는 앞의 예시 와 동일한 쿼리 수행하지만 문서 쿼리 벡터와 얼마나 잘 일치하는지 설명하는 title 필드 와 vectorSearchScore 메타 필드 만 출력합니다.

$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

vectorSearch() 메서드를 사용하여 다양한 유형의 MongoDB Vector Search 쿼리를 수행할 수 있습니다. 원하는 쿼리 에 따라 다음 선택적 매개변수를 vectorSearch()에 전달할 수 있습니다.

선택적 매개변수
유형
설명
기본값

exact

bool

정확한 인접 이웃(true) 검색 실행 할지, 아니면 대략적인 근접 이웃(false) 검색 실행할지 지정합니다.

false

filter

QueryInterface or array

검색 할 문서에 대한 사전 필터를 지정합니다.

필터링 없음

numCandidates

int or null

검색 중에 사용할 가장 가까운 이웃의 수를 지정합니다.

null

이러한 매개변수에 대해 자세히 $vectorSearch 학습 Atlas 문서에서 연산자 참조의 필드 섹션을 참조하세요.

돌아가기

MongoDB Search

이 페이지의 내용