Docs Menu
Docs Home
/
Atlas
/

벡터 임베딩을 만드는 방법

벡터 임베딩을 다른 MongoDB 데이터와 함께 저장할 수 있습니다. 이러한 임베딩은 데이터 내의 의미 있는 관계를 포착하여 시맨틱 검색을 수행하고 RAG를 구현할 수 있도록 합니다.

아래 튜토리얼을 참고하여 벡터 임베딩을 생성하고 벡터 검색으로 쿼리하는 방법을 알아보세요. 구체적으로 다음과 같은 작업을 수행합니다.

  1. 임베딩 모델을 사용하여 벡터 임베딩을 생성하는 함수를 정의합니다.

    독점 모델을 사용할지 오픈 소스 모델을 사용할지 선택합니다. 최신 임베딩 모델이 필요한 경우 Voyage AI를 사용합니다.

  2. 데이터에서 임베딩을 생성하고 이를 MongoDB에 저장합니다.

    새 데이터에서 임베딩을 생성할지, 아니면 MongoDB 컬렉션 에 이미 있는 기존 데이터에서 임베딩을 생성할지 선택합니다.

  3. 검색어에서 임베딩을 생성하고 벡터 검색 쿼리를 실행합니다.

프로덕션 애플리케이션의 경우 일반적으로 벡터 임베딩을 생성하는 스크립트 를 쓰기 (write) 합니다. 이 페이지의 샘플 코드로 시작하여 사용 사례 에 맞게 사용자 지정할 수 있습니다.

이 튜토리얼을 완료하려면 다음 조건을 충족해야 합니다.

이 섹션에서는 정의한 함수를 사용하여 데이터에서 벡터 임베딩을 생성하고 이러한 임베딩을 MongoDB 컬렉션에 저장합니다.

이 섹션에서는 컬렉션의 벡터 임베딩을 인덱싱하고 샘플 벡터 검색 쿼리를 실행하는 데 사용하는 임베딩을 만듭니다.

벡터 검색은 쿼리에서 생성된 임베딩과 거리가 가장 가까운 임베딩을 가진 문서를 반환합니다. 이는 해당 문서들이 의미적으로 유사함을 나타냅니다.

벡터 임베딩을 생성할 때 다음 요소를 고려하세요.

벡터 임베딩을 생성하려면 임베딩 모델을 사용해야 합니다. 임베딩 모델은 데이터를 수치적 표현으로 변환하는 데 사용하는 알고리즘입니다. 다음 방법 중 하나를 선택하여 임베딩 모델에 액세스할 수 있습니다.

메서드
설명

오픈소스 모델 로드

상용 임베딩 모델의 API 키가 없는 경우 오픈 소스 임베딩 모델을 애플리케이션에 로컬로 로드합니다.

독점 모델 사용

대부분의 AI 제공자는 벡터 임베딩을 생성하는 데 사용할 수 있는 독점 임베딩 모델에 대한 API를 제공합니다. 최신 임베딩을 사용하려면 Voyage AI사용하세요.

통합 활용

MongoDB Vector Search 를 오픈 소스 프레임워크 및 AI 서비스와 통합하여 오픈 소스 및 독점 임베딩 모델에 빠르게 연결하고 MongoDB Vector Search를 위한 벡터 임베딩을 생성할 수 있습니다.

자세한 학습 은 MongoDB 와 AI 기술 통합을 참조하세요.

선택한 임베딩 모델은 쿼리 결과에 영향을 미치고 MongoDB Vector Search 인덱스 에 지정하는 차원 수를 결정합니다. 각 모델은 데이터와 사용 사례 에 따라 다양한 이점을 제공합니다. 멀티모달 및 도메인별 임베딩 모델을 포함한 최신 임베딩 모델의 경우, Voyage AI사용하세요.

MongoDB Vector Search에 대한 임베딩 모델을 선택할 때 다음 지표 고려하세요.

  • 임베딩 차원: 벡터 임베딩의 길이입니다.

    임베딩 크기가 작을수록 저장 효율이 높고, 임베딩 크기가 클수록 데이터의 미묘한 관계를 더 잘 포착할 수 있습니다. 선택하는 모델은 효율성과 복잡성 사이의 균형을 유지해야 합니다.

  • Max Tokens: 단일 임베딩으로 압축할 수 있는 토큰 의 수입니다.

  • 모델 크기: 모델의 크기(기가바이트)입니다.

    모델이 클수록 성능이 향상되지만, MongoDB Vector Search를 프로덕션 환경으로 확장하다 따라 더 많은 계산 리소스가 필요합니다.

  • 조회 평균: 조회 시스템의 성능을 측정하는 점수입니다.

    점수가 높을수록 모델이 검색된 결과 목록에서 관련 문서의 순위를 더 높게 매기는 데 더 적합하다는 것을 나타냅니다. 이 점수는 RAG 애플리케이션에 대한 모델을 선택할 때 중요합니다.

많은 양의 부동 소수점 벡터를 사용하면서 mongod의 저장 공간과 WiredTiger(디스크 및 메모리 사용량 등) 자원 사용을 줄이려면 임베딩을 binData 벡터로 변환하여 압축합니다.

BinData 는 바이너리 데이터를 저장하는 BSON 데이터 유형 입니다. 벡터 임베딩의 기본값 유형은 32비트 부동 소수점(float32) 배열 입니다. 바이너리 데이터는 기본값 배열 형식보다 저장 효율적이므로 디스크 공간이 3배 적습니다.

binData 벡터를 저장하면 문서를 작업 세트에 로드하는 데 필요한 리소스가 줄어들어 쿼리 성능이 향상됩니다. 20개 이상의 문서를 반환하는 벡터 쿼리의 속도를 크게 향상시킬 수 있습니다. float32 임베딩을 압축하면 float32 또는 binData 벡터로 쿼리할 수 있습니다.

이 페이지의 튜토리얼에는 float32 벡터를 binData 벡터로 변환하는 데 사용할 수 있는 예시 함수가 포함되어 있습니다.

BSON BinData 벡터는 다음 드라이버에서 지원됩니다.

float 벡터는 일반적으로 압축하기 어려운데, 배열의 각 요소가 고유한 유형을 가지고 있기 때문입니다. (대부분의 벡터는 균일한 유형을 가집니다.) 따라서 임베딩 모델의 float 벡터 출력을 하위 유형 float32binData 벡터로 변환하는 것이 더 효율적인 직렬화 방식입니다. binData 벡터는 전체 벡터에 대해 단일 유형의 디스크립터를 저장하여 저장소 오버헤드를 줄입니다.

임베딩이 올바르고 최적화된지 확인하려면 다음 전략을 고려하세요.

MongoDB Vector Search로 임베딩을 생성하고 쿼리 방법을 학습한 후에는 RAG(검색 강화 생성)를 구현하여 제너레이티브 AI 애플리케이션 구축을 시작하세요.

32비트 플로트 벡터 임베딩을 더 적은 비트로 양자화하여 리소스 소비를 줄이고 쿼리 속도를 개선할 수 있습니다. 자세한 내용은 벡터 양자화를 참조하세요.

돌아가기

호환성 및 제한 사항

스킬 배지 획득

무료로 'MongoDB를 사용한 RAG'를 마스터하세요!

자세한 내용을 알아보세요.

이 페이지의 내용