개요
이 가이드 에서는 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 Vector Search 인덱스 만들어야 합니다. 이 인덱스 유형을 만드는 방법에 대해 자세히 학습 Atlas Search 인덱스 가이드 참조하세요.
벡터 검색 애그리게이션 단계
애그리게이션 빌더를 사용하여 Atlas Search 쿼리를 수행하려면 다음 클래스를 애플리케이션 으로 가져옵니다.
use MongoDB\Builder\Pipeline; use MongoDB\Builder\Stage;
집계 파이프라인 에서 $vectorSearch
단계를 만들려면 다음 작업을 수행합니다.
파이프라인 단계를 저장
Pipeline
인스턴스 를 만듭니다.Stage::vectorSearch()
메서드를 호출하여 Atlas Vector Search 단계를 만듭니다.vectorSearch()
메서드 본문 내에서 벡터 쿼리 에 대한 기준을 지정합니다.
다음 코드는 기본 Atlas Search 쿼리를 구성하기 위한 템플릿을 보여줍니다.
$pipeline = new Pipeline( Stage::vectorSearch( /* Atlas Vector Search query specifications index: '<index name>', path: '<path to embeddings>', ...*/ ), );
다음 매개변수를 vectorSearch()
메서드에 전달해야 합니다.
Parameter | 유형 | 설명 |
---|---|---|
|
| 벡터 검색 인덱스 의 이름 |
|
| 벡터 임베딩을 저장하는 필드 |
|
| 쿼리 의 벡터 표현 |
|
| 반환할 결과 수 |
Atlas Search 쿼리 예시
이 섹션에서는 애그리게이션 빌더를 사용하여 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()
에 전달할 수 있습니다.
선택적 매개변수 | 유형 | 설명 | 기본값 |
---|---|---|---|
|
| 정확한 인접 이웃( |
|
|
| 검색 할 문서에 대한 사전 필터를 지정합니다. | 필터링 없음 |
|
| 검색 중에 사용할 가장 가까운 이웃의 수를 지정합니다. |
|
이러한 매개변수에 대해 자세히 $vectorSearch
학습 Atlas 문서에서 연산자 참조의 필드 섹션을 참조하세요.