개요
이 가이드 에서는 MongoDB 벡터 검색 기능 사용하여 문서에서 검색을 수행하는 방법을 학습 수 있습니다. PHP 라이브러리를 사용하면 집계 빌더를 사용하여 MongoDB Vector Search 검색 쿼리를 수행할 수 있습니다.
To learn more about MongoDB Vector Search, see the MongoDB Vector Search Overview. The MongoDB Vector Search implementation for the PHP library internally uses the $vectorSearch aggregation operator to perform queries. To learn more about this operator, see the $vectorSearch reference in the Atlas documentation.
참고
MongoDB Search
문서에서 고급 전체 텍스트 검색 수행하려면 MongoDB Search API 사용할 수 있습니다. 이 기능 에 대해 학습 MongoDB Search 쿼리 실행 가이드 참조하세요.
MongoDB Vector Search 인덱스
MongoDB Vector Search 쿼리를 수행하려면 먼저 컬렉션 에 MongoDB Vector Search 인덱스 생성해야 합니다. 이 인덱스 유형을 만드는 방법에 대해 자세히 학습하려면 MongoDB 검색 인덱스 가이드를 참조하세요.
벡터 검색 애그리게이션 단계
집계 빌더를 사용하여 MongoDB Vector Search 검색 쿼리를 수행하려면 다음 클래스를 애플리케이션으로 가져옵니다.
use MongoDB\Builder\Stage;
집계 파이프라인 에서 $vectorSearch 단계를 만들려면 다음 작업을 수행합니다.
파이프라인 단계를 저장 배열 만듭니다.
Stage::vectorSearch()메서드를 호출하여 MongoDB 벡터 검색 단계를 만듭니다.vectorSearch()메서드 본문 내에서 벡터 쿼리 에 대한 기준을 지정합니다.
다음 코드는 기본 MongoDB Vector Search 검색 쿼리를 구성하기 위한 템플릿을 보여줍니다.
$pipeline = [ Stage::vectorSearch( /* MongoDB Vector Search query specifications index: '<index name>', path: '<path to embeddings>', ...*/ ), ];
다음 매개변수를 vectorSearch() 메서드에 전달해야 합니다.
Parameter | 유형 | 설명 |
|---|---|---|
|
| 벡터 검색 인덱스 의 이름 |
|
| 벡터 임베딩을 저장하는 필드 |
|
| 쿼리 의 벡터 표현 |
|
| 반환할 결과 수 |
벡터 검색 쿼리 예시
이 섹션에서는 집계 빌더를 사용하여 MongoDB Vector Search 검색 쿼리를 수행하는 방법에 대해 학습합니다. 이 섹션의 예제에서는 sample_mflix.embedded_movies 컬렉션 의 샘플 데이터를 사용합니다.
참고
쿼리 벡터 길이
For demonstrative purposes, the examples in this section use sample query vectors that contain very few elements, compared to the query vector you might use in a runnable application. To view an example that contains the full-length query vector, see the MongoDB Vector Search Quick Start and select PHP from the Select your language dropdown in the upper-right corner of the page.
기본 벡터 검색 쿼리
다음 코드는 plot_embedding 벡터 필드 에 대해 MongoDB Vector Search 쿼리 수행합니다.
$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 필드 와 vectorSearchScore 메타 필드 만 출력합니다.
$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; }
벡터 검색 옵션
vectorSearch() 메서드를 사용하여 다양한 유형의 MongoDB Vector 검색 쿼리를 수행할 수 있습니다. 원하는 쿼리에 따라 다음 선택 사항 매개변수를 vectorSearch()에 전달할 수 있습니다.
선택적 매개변수 | 유형 | 설명 | 기본값 |
|---|---|---|---|
|
| 정확한 인접 이웃( |
|
|
| 검색 할 문서에 대한 사전 필터를 지정합니다. | 필터링 없음 |
|
| 검색 중에 사용할 가장 가까운 이웃의 수를 지정합니다. |
|
To learn more about these parameters, see the Fields section of the $vectorSearch operator reference in the Atlas documentation.