MongoDB의 다른 데이터와 함께 벡터 임베딩을 저장할 수 있습니다. 이러한 임베딩은 데이터 내의 의미 있는 관계를 포착하여 시맨틱 검색 및 RAG 구현을 지원합니다.
시작하기
아래 튜토리얼을 참고하여 벡터 임베딩을 생성하고 벡터 검색으로 쿼리하는 방법을 알아보세요. 구체적으로 다음과 같은 작업을 수행합니다.
Define a function that uses an embedding model to generate vector embeddings.
독점 모델을 사용할지 오픈 소스 모델을 사용할지 선택합니다. 최신 임베딩 모델이 필요한 경우 Voyage AI를 사용합니다.
데이터에서 임베딩을 생성하고 이를 MongoDB에 저장합니다.
새 데이터에서 임베딩을 생성할지, 아니면 MongoDB 컬렉션 에 이미 있는 기존 데이터에서 임베딩을 생성할지 선택합니다.
검색어에서 임베딩을 생성하고 벡터 검색 쿼리를 실행합니다.
프로덕션 애플리케이션의 경우 일반적으로 벡터 임베딩을 생성하는 스크립트 를 쓰기 (write) 합니다. 이 페이지의 샘플 코드로 시작하여 사용 사례 에 맞게 사용자 지정할 수 있습니다.
참고
MongoDB Vector Search 자동 임베딩 서비스는 클릭 한 번으로 컬렉션 의 텍스트 데이터에 대한 시맨틱 검색 활성화 수 있는 방법입니다. 자동 임베딩을 사용하면 벡터 임베딩을 직접 생성, 저장 또는 관리 필요가 없습니다. 대신 MongoDB Vector Search는 벡터 임베딩을 자동으로 생성하고 관리합니다. 자세한 학습 은 자동 임베딩 개요를 참조하세요.
고려 사항
벡터 임베딩을 생성할 때 다음 요소를 고려하세요.
임베딩 생성 방법 선택
벡터 임베딩을 생성하려면 임베딩 모델을 사용해야 합니다. 임베딩 모델은 데이터를 수치적 표현으로 변환하는 데 사용하는 알고리즘입니다. 다음 방법 중 하나를 선택하여 임베딩 모델에 액세스할 수 있습니다.
메서드 | 설명 |
|---|---|
오픈소스 모델 로드 | If you don't have an API key for a proprietary embedding model, load an open-source embedding model locally from your application. |
독점 모델 사용 | 대부분의 AI 제공자는 벡터 임베딩을 생성하는 데 사용할 수 있는 독점 임베딩 모델용 API를 제공합니다. 최신 임베딩을 위해 Voyage AI를 사용하세요. |
통합 활용 | You can integrate MongoDB Vector Search with open-source frameworks and AI services to quickly connect to both open-source and proprietary embedding models and generate vector embeddings for MongoDB Vector Search. To learn more, see MongoDB AI Integrations and Partners. |
임베딩 모델 선택
선택한 임베딩 모델은 쿼리 결과에 영향을 미치고 MongoDB Vector Search 인덱스 에 지정하는 차원 수를 결정합니다. 각 모델은 데이터와 사용 사례 에 따라 다양한 이점을 제공합니다. 멀티모달 및 도메인별 임베딩 모델을 포함한 최신 임베딩 모델의 경우, Voyage AI사용하세요.
MongoDB Vector Search에 대한 임베딩 모델을 선택할 때 다음 지표 고려하세요.
임베딩 차원: 벡터 임베딩의 길이입니다.
임베딩 크기가 작을수록 저장 효율이 높고, 임베딩 크기가 클수록 데이터의 미묘한 관계를 더 잘 포착할 수 있습니다. 선택하는 모델은 효율성과 복잡성 사이의 균형을 유지해야 합니다.
Max Tokens: 단일 임베딩으로 압축할 수 있는 토큰 의 수입니다.
모델 크기: 모델의 크기(기가바이트)입니다.
모델이 클수록 성능이 향상되지만, MongoDB Vector Search를 프로덕션 환경으로 확장하다 따라 더 많은 계산 리소스가 필요합니다.
조회 평균: 조회 시스템의 성능을 측정하는 점수입니다.
점수가 높을수록 모델이 검색된 결과 목록에서 관련 문서의 순위를 더 높게 매기는 데 더 적합하다는 것을 나타냅니다. 이 점수는 RAG 애플리케이션에 대한 모델을 선택할 때 중요합니다.
벡터 압축
If you have a large number of float vectors and want to reduce the storage and WiredTiger footprint (such as disk and memory usage) in mongod, compress your embeddings by converting them to binData vectors.
BinData는 바이너리 데이터를 저장하는 BSON 데이터 유형 입니다. 벡터 임베딩의 기본값 유형은 32비트 부동 소수점(float32)의 배열 입니다. 바이너리 데이터는 기본값 배열 형식보다 저장 효율적이므로 디스크 공간이 3배 적습니다.
binData 벡터를 저장하면 문서를 작업 세트에 로드하는 데 필요한 리소스가 줄어들어 쿼리 성능이 향상됩니다. 20개 이상의 문서를 반환하는 벡터 쿼리의 속도를 크게 향상시킬 수 있습니다. float32 임베딩을 압축하면 float32 또는 binData 벡터로 쿼리할 수 있습니다.
The tutorial on this page includes an example function that you can use to convert your float32 vectors to binData vectors.
지원되는 드라이버
BSON BinData vectors are supported by the following drivers:
C++ Driver v4.1.0 or later
C#/.NET Driver v3.2.0 or later
Go Driver v2.1.0 or later
PyMongo Driver v4.10 or later
Node.js Driver v6.11 or later
Java Driver v5.3.1 or later
Ruby Driver with
bsongem v5.1 or later
배경
float 벡터는 일반적으로 압축하기 어려운데, 배열의 각 요소가 고유한 유형을 가지고 있기 때문입니다. (대부분의 벡터는 균일한 유형을 가집니다.) 따라서 임베딩 모델의 float 벡터 출력을 하위 유형 float32의 binData 벡터로 변환하는 것이 더 효율적인 직렬화 방식입니다. binData 벡터는 전체 벡터에 대해 단일 유형의 디스크립터를 저장하여 저장소 오버헤드를 줄입니다.
임베딩 유효성 검사
임베딩이 올바르고 최적화된지 확인하려면 다음 전략을 고려하세요.
다음 단계
MongoDB Vector Search로 임베딩을 생성하고 쿼리 방법을 학습한 후에는 RAG(검색 강화 생성)를 구현하여 제너레이티브 AI 애플리케이션 구축을 시작하세요.
또한 32비트 float vector embeddings를 더 적은 비트로 양자화하여 리소스 소비를 더욱 줄이고 쿼리 속도를 개선할 수도 있습니다. 자세한 학습 은 About Quantization.를 참조하세요.