문서 메뉴

문서 홈MongoDB 실행 및 관리MongoDB Atlas

knnBeta

이 페이지의 내용

  • 정의
  • 구문
  • 옵션
  • 행동
  • 예제
knnBeta

연산자는 knnBeta Hierarchical Navigable Small Worlds 를 사용합니다. 알고리즘을 사용하여 시맨틱 검색을 수행합니다.kNN 쿼리에 대한 Atlas Search 지원을 사용하여 선택한 제품과 유사한 검색, 이미지 검색 등을 수행할 수 있습니다.

knnBeta 의 구문은 다음과 같습니다:

1{
2 $search: {
3 "index": "<index name>", // optional, defaults to "default"
4 "knnBeta": {
5 "vector": [<array-of-numbers>],
6 "path": "<field-to-search>",
7 "filter": {<filter-specification>},
8 "k": <number>,
9 "score": {<options>}
10 }
11 }
12}
필드
유형
설명
필요성
filter
문서
Atlas Search에서는 메타데이터나 특정 검색 기준에 따라 문서를 필터링 할 수 있는 다양한 연산자를 제공하여, 벡터 검색의 범위를 좁힐 수 있습니다.
옵션
k
숫자
반환할 가장 가까운 이웃의 수입니다. 반환할 문서 수($limit)보다 많은 숫자를 지정하여 정확도를 높일 수 있습니다.
필수 사항
path
문자열
검색할 KNNVector 유형 필드를 인덱싱했습니다. 자세한 내용은 경로 구성을 참조하세요.
필수 사항
score
문서
결과에서 일치하는 문서에 할당된 점수입니다. 자세한 내용은 채점 동작을 참조하세요.
옵션
vector
숫자 배열
쿼리 벡터를 나타내는 BSON 유형 int 또는 double 의 숫자 배열입니다. 배열 크기는 필드의 인덱스에 지정된 벡터 dimensions 수와 일치해야 합니다.
필수 사항

Atlas Search 유형 knnVector로 인덱싱된 필드에 대해서만 kNN 쿼리를 실행할 수 있습니다.

단계 뒤에 를 사용하여 쿼리 결과의 문서 수를 제한할 수 $limit 있습니다. 값을 값보다 $search knnBeta k 높게 설정하는 $limit 것이 좋습니다. 이러한 과다 요청 패턴은 대략적인 근접 이웃 검색에서 지연 시간과 리콜의 균형을 맞출 수 있는 주요 방법입니다. 경험상 - 의 배수는 510 많은 사용 사례에서 잘 작동하는 것으로 나타났지만, 특정 데이터 세트에 맞게 이 배수를 조정하는 것이 좋습니다.

예제

다음 쿼리는 쿼리에 대해 150개의 가장 근접한 이웃을 찾고 나머지 결과 수를 50개로 제한합니다.

1db.<collection>.aggregate({
2 "$search": {
3 "knnBeta": {
4 "vector": <array-of-numbers-to-search>,
5 "path": <indexed-field-to-search>,
6 "k": 150
7 }
8 }
9},
10{
11 "$limit": 50
12})

쿼리 성능을 향상시키려면 결과에 모든 필드가 필요한 경우를 제외하고 $project 단계를 사용하여 결과에 반환할 필드를 선택합니다. $project 단계에서 벡터 필드를 제외하는 것이 좋습니다.

단계에서 score 필드를 $meta 표현식 searchScore 과 함께 $project 사용하여 결과에서 문서의 점수를 반환할 수 있습니다.

Atlas Search는 0 에서 1 사이의 고정된 범위에서만 kNN 쿼리에 대한 결과의 점수를 매깁니다. cosinedotProduct 유사도에 대해서는 Atlas Search가 다음 알고리즘을 사용하여 점수를 정규화합니다:

score = (1 + cosine/dot_product(v1,v2)) / 2

knnBeta 연산자는 쿼리의 최상위 연산자여야 하므로, 다음과 같은 연산자 내에서 knnBeta 연산자를 사용할 수 없습니다.

vectorSearch 유형 인덱스를 사용하여 인덱싱된 필드에는 knnBeta 연산자를 사용하여 쿼리할 수 없습니다. knnBeta연산자와 함께 $search 정렬 옵션을 사용할 수 없습니다.

단계 이후에는 $skip $limit $search 및 를 사용하여 Atlas Search 결과 페이지 매김을 하지 않는 것이 좋습니다.

다음 쿼리는 knnBeta 연산자를 사용하여 샘플 sample_mflix.embedded_movies 컬렉션을 검색합니다. 쿼리는 OpenAI의 text-embedding-ada-002 임베딩 모델을 사용하여 생성된 임베딩이 포함된 plot_embedding 필드를 검색합니다. 샘플 컬렉션을 Atlas 클러스터에 추가하고 컬렉션에 대한 샘플 인덱스 정의를 만든 경우 sample_mflix 데이터베이스로 전환하여 컬렉션에 대해 다음 쿼리를 실행할 수 있습니다.

← 

이 페이지의 내용