Docs Menu
Docs Home
/
Atlas
/ / / /

벡터 검색을 위해 벡터 임베딩을 인덱스하는 방법

knnVector 유형을 사용하여 벡터 임베딩을 인덱싱할 수 있습니다. 벡터 필드는 다음 유형의 숫자 배열로 표현할 수 있습니다.

  • BSON int32, knnBeta 연산자를 사용하여 쿼리할 수 있는 int64 또는 double 데이터 유형.

  • BSON double $vectorSearch 단계를 사용하여 쿼리하기 위한 데이터 형식입니다.

이제 더 이상 사용되지 않는 knnBeta 연산자와 집계 파이프라인의 $vectorSearch 단계를 사용하여 knnVector로 인덱싱된 필드를 쿼리할 수 있습니다.

참고

Atlas UI 에서 MongoDB Search Visual Editor 를 사용하여 knnVector 유형의 필드를 구성할 수 없습니다. 대신 MongoDB Search JSON Editor 를 사용하여 knnVector 유형의 필드를 구성합니다.

Atlas CLI 사용하여 만든 로컬 Atlas 배포와 함께 MongoDB Vector Search를 사용할 수도 있습니다. 자세히 학습 로컬 Atlas 배포 만들기를 참조하세요.

문서 배열 내부의 필드 또는 객체 배열 내부의 필드( MongoDB Search embeddedDocuments 유형)를 knnVector 유형으로 인덱스 할 수 없습니다.

다음은 knnVector 유형에 대한 JSON 구문입니다. 기본 인덱스 정의를 다음으로 바꿉니다. 필드에 대해 자세히 알아보려면 필드 속성을 참조하세요.

1{
2 "mappings": {
3 "dynamic": true|false,
4 "fields": {
5 "<field-name>": {
6 "type": "knnVector",
7 "dimensions": <number-of-dimensions>,
8 "similarity": "euclidean | cosine | dotProduct"
9 }
10 }
11 }
12}

knnVector 유형에는 다음과 같은 옵션이 있습니다:

옵션
유형
필요성
목적

type

문자열

필수 사항

이 토크나이저 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. 값은 knnVector이어야 합니다.

dimensions

int

필수 사항

MongoDB Search가 인덱스 및 쿼리 시점에 시행하는 벡터 차원의 수입니다. 이 값은 8192보다 클 수 없습니다.

similarity

문자열

필수 사항

상위 K-최근접 이웃을 검색하는 데 사용하는 벡터 유사성 함수입니다. 값은 다음 중 하나일 수 있습니다:

  • euclidean - 벡터의 끝과 끝 사이의 거리를 측정합니다. 이를 통해 다양한 차원을 기반으로 유사성을 측정할 수 있습니다. 자세한 학습 은 유클리드.참조하세요.

  • cosine - 벡터 사이의 각도를 기준으로 유사성을 측정합니다. 이를 통해 크기에 따라 배율이 조정되지 않는 유사성을 측정할 수 있습니다. cosine에는 크기가 0인 벡터를 사용할 수 없습니다. 코사인 유사성을 측정하려면 벡터를 정규화하고 대신 dotProduct 를 사용하는 것이 좋습니다. 자세한 학습 은 코사인.참조하세요.

  • dotProduct - cosine와(과) 같이 유사성을 측정하지만 벡터의 크기를 고려합니다. 이를 통해 각도와 크기를 기준으로 유사성을 효율적으로 측정할 수 있습니다. 자세한 학습 은 도트 제품을 참조하세요.

    크기를 정규화하면 유사성 측정에서 cosinedotProduct 은 거의 동일합니다.

sample_mflix.embedded_movies 컬렉션에 대한 다음 인덱스 정의는 컬렉션에서 동적으로 인덱싱할 수 있는 모든 필드를 동적으로 인덱싱하고 plot_embedding 필드를 knnVector 유형으로 정적으로 인덱싱합니다. plot_embedding 필드에는 OpenAI의 text-embedding-ada-002 임베딩 모델을 사용하여 생성된 임베딩이 포함되어 있습니다. 인덱스 정의는 1536 벡터 차원을 지정하고 euclidean을 사용하여 유사성을 측정합니다.

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "plot_embedding": {
6 "type": "knnVector",
7 "dimensions": 1536,
8 "similarity": "euclidean"
9 }
10 }
11 }
12}

클러스터에 샘플 데이터를 로드하고 이 컬렉션에 대한 이전 MongoDB Search 인덱스를 만들면 이 컬렉션에 대해 $vectorSearch 쿼리를 실행할 수 있습니다. 실행 수 있는 샘플 쿼리에 대해 자세히 학습하려면 $vectorSearch 예제를 참조하세요.

돌아가기

geo

이 페이지의 내용