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

MongoDB 벡터 검색 자동화된 임베딩을 위한 mongot 구성

중요

자동 임베딩은 자체 관리형 mongot의 미리보기에 있습니다. 기능 및 해당 설명서는 미리보기 기간 동안 언제든지 변경될 수 있습니다. 자세한 내용은 미리보기 기능을 참조하세요.

이 튜토리얼에서는 자체 관리형 mongot 배포에서 자동 임베딩을 구성하는 방법을 설명합니다. 자동 임베딩을 사용하면 mongot 은 인덱스 시점에 텍스트 데이터에 대한 벡터 임베딩을 생성하고 쿼리 시점에 쿼리 텍스트에 대한 벡터 임베딩을 생성합니다. 애플리케이션에서 별도의 임베딩 파이프라인을 유지할 필요가 없습니다.

이 튜토리얼은 시맨틱 검색 또는 RAG 기능을 구축하고 임베딩을 관리하려는 mongot 를 원하는 개발자를 위한 것입니다. Kubernetes 연산자 배포용 MongoDB Controllers에 대한 자세한 내용은 자동 임베딩을 참조하세요.

자동 임베딩이 없으면 애플리케이션이 수행해야 할 작업은 다음과 같습니다.

  1. 삽입 또는 업데이트하는 각 문서에 대한 임베딩을 생성합니다.

  2. 컬렉션의 문서와 함께 임베딩을 저장합니다.

  3. 동일한 모델을 사용하여 쿼리 시점에 모든 쿼리에 대한 임베딩을 생성합니다.

  4. 쿼리 임베딩을 $vectorSearch에 제출합니다.

자동 임베딩을 사용하면 mongot 이 1, 2, 3 단계를 처리합니다. 애플리케이션:

  1. 텍스트 필드에 autoEmbed 필드 유형을 사용하여 MongoDB 벡터 검색 인덱스를 구성합니다.

  2. 문서를 일반적으로 삽입하고 업데이트합니다.

    mongot 텍스트 필드를 읽고 구성된 임베딩 모델을 통해 임베딩을 생성하며 저장합니다.

  3. 미리 계산된 임베딩이 아닌 쿼리 텍스트로 $vectorSearch 쿼리를 실행합니다.

    mongot 쿼리 텍스트에 대한 임베딩을 생성합니다.

자체 관리형 mongot 자동 임베딩은 Voyage AI 임베딩 모델과 통합됩니다.

모델
설명

voyage-4

권장하는 옵션입니다. 일반 텍스트 검색을 위한 균형 잡힌 성능.

voyage-4-lite

비용에 민감한 대용량 애플리케이션.

voyage-4-large

복잡한 시맨틱 관계에 대한 정확도를 극대화합니다.

voyage-code-3

코드 검색 및 기술 문서화에 전문화되어 있습니다.

임베딩 생성에 대한 비용이 발생합니다. 자세한 학습 은 자동 임베딩에 대한 청구 관리를 참조하세요.

자동 임베딩을 사용하려면 다음 사전 요건이 있어야 합니다.

  • mongot 자체 관리형 배포서버(Community tarball 또는 컨테이너, 지역 개발, Kubernetes Operator를 통한 엔터프라이즈 에디션)에서 1.70.1 이상을 사용합니다.

  • 독립형 배포서버의 경우 MongoDB 8.2 이상, Kubernetes 연산자 managed 배포서버의 경우 MongoDB 8.3 이상입니다. 자세한 내용은 mongot의 호환성 및 요구 사항을 참조하세요.

  • 두 개의 Voyage AI API 키.

    인덱싱 시간 임베딩 생성용 키 하나와 쿼리 시간용 키 하나를 사용하세요. 별도 키는 인덱싱 워크로드에서 쿼리 워크로드를 분리하고 동리적인 요금 한도 계산을 허용합니다. 자세한 학습은 요금 한도를 참조하세요.

  • mongot 에서 임베딩 엔드포인트로의 외부 네트워크 액세스

    기본 엔드포인트는 https://ai.mongodb.com/v1/embeddings입니다. 이 엔드포인트는 Atlas UI를 사용하여 생성된 키에 대해 MongoDB managed 청구를 사용하여 Voyage AI를 프록시합니다. Voyage AI에서 API 키를 직접 생성한 경우 https://api.voyageai.com/v1/embeddings 을 사용하여 Voyage AI에 직접 액세스할 수도 있습니다.

1

다음 두 가지 방법 중 하나를 통해 Voyage AI API 키를 생성할 수 있습니다.

  • (권장) Atlas 계정을 통해서 사용합니다. Atlas는 내장된 제한 속도 구성을 포함하여 API 키 관리를 제공합니다. 키는 Atlas 클러스터에 연결되지 않습니다. 자세한 내용은 API 키 관리를 참조하십시오.

  • voyageai.com에서 Voyage AI를 직접 사용합니다.

두 개의 키를 생성하고 이름을 명확히 지정합니다. 예시: mongot-prod-index, mongot-prod-query 키를 보안이 강화된 비밀 저장소에 저장합니다.

2

구성은 배포 경로에 따라 다릅니다. 배포에 해당하는 탭을 선택하세요.

자동 임베딩에는 preview 지역 개발 이미지(mongodb/mongodb-atlas-local:preview)가 필요합니다. preview 이미지에는 자동 임베딩 통합이 포함된 mongot의 Community 빌드가 포함되어 있습니다.

docker run로 컨테이너를 직접 실행하는 경우 VOYAGE_API_KEY 환경 변수로 Voyage AI API 키를 전달하고 :preview 태그를 사용합니다.

docker run \
-e VOYAGE_API_KEY=<your-voyage-api-key> \
-p 27017:27017 \
mongodb/mongodb-atlas-local:preview

Atlas를 통하지 않고 Voyage AI를 통해 직접 Voyage AI 키를 발급한 경우 기본 엔드포인트를 재정의합니다.

docker run \
-e VOYAGE_API_KEY=<your-voyage-api-key> \
-e EMBEDDING_PROVIDER_ENDPOINT=https://api.voyageai.com/v1/embeddings \
-p 27017:27017 \
mongodb/mongodb-atlas-local:preview

참고

지역 개발은 단 하나의 Voyage AI API 키를 허용하며 인덱스 시간 및 쿼리 시간 임베딩 생성에 모두 사용합니다. 개발에는 단일 키를 사용할 수 있습니다. 인덱스 시간 및 쿼리 시간 키가 별도로 필요한 생산 배포에는 Community Edition 또는 Kubernetes 연산자 배포 경로를 사용하세요.

embedding 블록을 mongot 설정 파일에 추가합니다.

embedding:
queryKeyFile: /etc/mongot/secrets/voyage-api-query-key
indexingKeyFile: /etc/mongot/secrets/voyage-api-indexing-key
providerEndpoint: https://ai.mongodb.com/v1/embeddings

각 키 파일에는 API 키만 포함됩니다. 파일 권한을 0600 로 설정하고 파일 소유자를 mongot 프로세스를 실행하는 사용자로 설정합니다.

3

Voyage AI API 키로 mongot 을 구성한 후 autoEmbed 필드 유형을 사용하는 MongoDB 벡터 검색 인덱스를 정의합니다. 인덱스 정의에는 mongot 가 임벡딩하는 텍스트 필드와 사용하는 모델이 지정됩니다. 인덱싱 방법, 양자화 및 기타 매개변수도 지정됩니다.

db.movies.createSearchIndex(
"movie-semantic-index",
"vectorSearch",
{
"fields": [
{
"type": "autoEmbed",
"modality": "text",
"path": "plot",
"model": "voyage-4",
"numDimensions": 1024,
"similarity": "cosine",
"indexingMethod": "hnsw",
"hnswOptions": {
"maxEdges": 16,
"numEdgeCandidates": 50
},
"quantization": "scalar"
},
{
"type": "filter",
"path": "genre"
}
]
}
)

다음 표에서는 autoEmbed 인덱스 정의 필드에 대해 설명합니다.

필드
목적

type: "autoEmbed"

자동 임베딩을 위한 필드를 표시합니다.

modality: "text"

데이터 모달리티. text 만이 지원되는 모달리티입니다.

path

컬렉션에 임베딩할 필드입니다.

model

Voyage AI 모델 이름입니다. 모델은 API 키가 액세스할 수 있는 모델이어야 합니다.

numDimensions

임베딩 벡터의 차원 수입니다. 지원되는 차원은 모델에 따라 결정됩니다.

similarity

벡터 검색에 사용할 유사성 함수입니다. 지원되는 함수는 cosine, dotProduct, euclidean입니다.

indexingMethod

사용할 인덱싱 방법입니다. 지원되는 방법은 flathnsw입니다.

hnswOptions

(선택 사항) HNSW 인덱스 옵션입니다. indexingMethodhnsw인 경우 필수입니다.

quantization

(선택 사항) 사용할 양자화 유형. 지원되는 유형은 float, scalar, binary, binaryNoRescore입니다.

동일한 인덱스에 autoEmbed 필드와 filter 필드를 혼합할 수 있습니다. 동일한 경로에서 autoEmbed 와 원시 벡터 필드를 혼합할 수 없습니다. 필드당 하나의 접근 방식을 선택합니다.

4

미리 계산된 임베딩이 아닌 쿼리 텍스트를 제출합니다. mongot 가 사용자를 위해 쿼리 임베딩을 생성합니다.

db.movies.aggregate([
{
"$vectorSearch": {
"index": "movie-semantic-index",
"path": "plot",
"query": "a heist gone wrong in a rainy city",
"model": "voyage-4",
"numCandidates": 100,
"limit": 10
}
},
{
"$project": {
"_id": 0,
"title": 1,
"score": { $meta: "vectorSearchScore" }
}
}
])

To learn more, see Run Vector Search ANN and ENN Queries.

mongot 클러스터의 전용 내부 데이터베이스에 임베딩을 유지합니다. mongot 은 소스 컬렉션에 임베딩을 저장하지 않습니다. mongot 은 소스 텍스트에서 임베딩을 다시 생성할 수 있으며, 임베딩 생성에 대한 요금이 부과됩니다.

임베딩 모델, 출력 차원 또는 양자화에 대한 변경은 영향을 받는 인덱스의 전체 재임베딩을 trigger하며, 이로 인해 임베딩 생성에 대한 요금이 발생합니다. mongot 이 임베딩을 다시 생성하는 경우를 참조하세요.

자세한 내용은 생성된 임베딩 컬렉션을 참조하십시오.

mongot 다음 중 하나라도 발생하면 autoEmbed 필드에 대한 임베딩을 다시 생성합니다.

  • 문서를 삽입합니다.

  • 문서에서 임베딩된 필드를 변경합니다. mongot 은 change streams를 통해 변경 사항을 감지합니다.

  • 인덱스 정의에서 임베딩 모델을 변경합니다.

  • 임베딩 출력 차원 또는 데이터 유형을 변경합니다.

  • 텍스트 필드 경로를 변경합니다.

마지막 세 항목 중 하나라도 변경하면 mongot 은(는) 전체 인덱스를 처음부터 다시 빌드합니다. 대규모 컬렉션의 경우 재구축 비용이 많이 발생할 수 있습니다. 모델 변경을 신중하게 계획하십시오.

MongoDB는 모델 특정 요금으로 백만 토큰당 부과합니다. 인덱싱 비용은 컬렉션의 인덱스 필드의 총 텍스트 볼륨에 비례합니다. 쿼리 비용은 쿼리 텍스트 볼륨에 비례합니다.

Atlas 계정을 사용하여 생성한 Voyage AI API 키를 사용하는 경우 Atlas UI 에서 API 키 사용량 및 요금 제한을 확인할 수 있습니다. 자세한 학습은 Embedding and Reranking API 에 대한 청구 관리를 참조하세요. Voyage AI에서 직접 생성한 키를 사용하는 경우 Voyage AI 대시보드에서 사용량 및 요금 제한을 모니터링해야 합니다.

Voyage AI 측 제한 서비스 오류는 mongot 로그에 나타나며 해당 인덱스에 실패한 문서 지표기로 표시됩니다. 이러한 오류로 인덱스가 비활성화되지는 않지만 새 문서 인덱싱이 지연될 수 있습니다.

증상
가능한 원인
작업

인덱스가 수분 동안 PENDING 상태로 유지됩니다.

mongot 임베딩 엔드포인트에 연결할 수 없거나 API 키가 유효하지 않습니다.

임베딩 엔드포인트에 대한 HTTP 오류를 확인하려면 mongot 로그를 확인합니다.

인덱싱 지연이 간호적으로 나타납니다.

Voyage AI 측 속도 제한.

요금 한도를 늘리거나 인덱싱 시간 임베딩 부하를 줄이세요.

인덱스에 대한 쿼리는 임베딩을 언급하는 오류를 반환합니다.

쿼리 API 키가 유효하지 않거나 만료되었습니다.

queryKeyFile의 내용을 확인합니다.

인덱스에 대한 모든 쿼리는 빈 결과를 반환합니다.

인덱스가 다시 빌드되어 있고 여전히 코퍼스를 다시 임벡딩하고 있을 수 있습니다.

db.collection.getSearchIndexes()으로 인덱스 상태를 확인합니다.

자동 임베딩에는 다음과 같은 제한 사항이 적용됩니다.

  • 미리 보기 상태. 자동 임베딩이 일반적으로 사용가능해지기 전에 설정 형상, 지원되는 모델 및 기본 엔드포인트가 변경될 수 있습니다.

  • 필드당 하나의 임베딩 모델. 혼합 모델 인덱스는 지원되지 않습니다.

  • 임베딩 모델 페일오버가 없습니다. Voyage AI 엔드포인트에 액세스할 수 없는 경우, 새 문서의 인덱싱이 중단됩니다.