AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

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

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

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

  • BSON double data type for querying using the $vectorSearch stage.

You can use the knnBeta operator, which is now deprecated, and the $vectorSearch stage in your aggregation pipeline to query fields indexed as knnVector.

참고

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

You can also use MongoDB Vector Search with local Atlas deployments that you create with the Atlas CLI. To learn more, see Create a Local Atlas Deployment.

문서 배열 내부의 필드 또는 객체 배열 내부의 필드( 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 - 벡터의 끝과 끝 사이의 거리를 측정합니다. 이를 통해 다양한 차원을 기준으로 유사성을 측정할 수 있습니다. 자세한 내용은 Euclidean.를 참조하세요.

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

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

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

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}

If you load the sample data on your cluster and create the preceding MongoDB Search index for this collection, you can run $vectorSearch queries against this collection. To learn more about the sample queries that you can run, see $vectorSearch Examples.

MongoDB 검색 인덱스를 벡터 유형으로 마이그레이션 하려면 벡터 필드 에 대한 인덱스 정의에서 knnVector 유형을 vector 유형으로 바꿉니다.

예시

To use the vector type for the plot_embedding field in the sample index definition for the sample_mflix.embedded_movies collection, replace the index definition with the following:

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

유형 필드 에 대해 쿼리를 실행 vector 하려면 vectorSearch 연산자 대신( MongoDB 검색하다 연산자)를 사용해야 knnBeta 합니다.

참고

기존 knnBeta 연산자 쿼리는 vector 유형 인덱스에 대해 계속 실행 수 있습니다. 인덱스 마이그레이션한 후 knnBeta 연산자 쿼리를 즉시 vectorSearch (MongoDB 검색하다 연산자)로 마이그레이션하는 것이 좋습니다.