Docs Menu
Docs Home
/ / /
PHP 라이브러리 매뉴얼
/

Atlas Vector Search

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

참고

배포 호환성

Atlas Vector Search 기능 MongoDB Atlas 클러스터에 연결한 경우에만 사용할 수 있습니다. 이 기능 자체 관리형 배포서버에는 사용할 수 없습니다.

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

참고

Atlas Search

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

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

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

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

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

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

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

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

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

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

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

Parameter
유형
설명

index

string

벡터 검색 인덱스 의 이름

path

array or string

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

queryVector

array

쿼리 의 벡터 표현

limit

int

반환할 결과 수

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

참고

쿼리 벡터 길이

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

다음 코드는 plot_embedding 벡터 필드 에 대해 Atlas 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() 메서드를 사용하여 다양한 유형의 Atlas Vector Search 쿼리를 수행할 수 있습니다. 원하는 쿼리 에 따라 다음 선택적 매개변수를 vectorSearch()에 전달할 수 있습니다.

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

exact

bool

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

false

filter

QueryInterface or array

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

필터링 없음

numCandidates

int or null

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

null

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

돌아가기

Atlas Search

이 페이지의 내용