오픈 소스 벡터 데이터베이스
적용 대상: MongoDB vCore
개발자가 벡터 데이터베이스를 선택할 때 오픈 소스 옵션은 다양한 이점을 제공합니다. “오픈 소스”는 소프트웨어의 소스 코드를 자유롭게 사용할 수 있으므로 사용자가 특정 요구 사항에 따라 데이터베이스를 사용자 지정할 수 있음을 의미합니다. 이러한 유연성은 금융 서비스 산업의 기업과 같이 데이터에 대한 고유한 규제 요구 사항이 적용되는 조직에 유용합니다.
오픈 소스 벡터 데이터베이스의 또 다른 이점은 강력한 커뮤니티 지원입니다. 활발한 사용자 커뮤니티는 종종 이러한 데이터베이스 개발에 기여하고, 지원을 제공하고, 모범 사례를 공유하여 혁신을 촉진합니다.
일부 개인은 "무료"이기 때문에 오픈 소스 벡터 데이터베이스를 선택합니다. 즉, 소프트웨어를 구입하거나 사용하는 데 비용이 들지 않습니다. 다른 대안은 관리형 벡터 데이터베이스 서비스에서 제공하는 무료 계층을 사용하는 것입니다. 이러한 관리형 서비스는 특정 사용량 한도까지 액세스 권한을 비용 없이 제공할 뿐만 아니라 유지 관리, 업데이트, 스케일링 성능을 처리하여 운영 부담을 간소화합니다. 따라서 사용자는 관리형 벡터 데이터베이스 서비스의 무료 계층을 사용하여 관리 오버헤드를 줄이면서 비용을 절감할 수 있습니다. 이 방법을 사용하면 사용자가 데이터베이스 관리보다는 핵심 활동에 더 집중할 수 있습니다.
벡터 데이터베이스의 작업 메커니즘
벡터 데이터베이스는 고차원 공간에서 데이터의 수학 표현인 벡터 포함을 저장하고 관리하도록 설계되었습니다. 이 공간에서 각 차원은 데이터의 기능에 해당하며, 정교한 데이터를 나타내기 위해 수만 개의 차원이 사용될 수 있습니다. 이 공간에서 벡터의 위치는 해당 특성을 나타냅니다. 단어, 구 또는 전체 문서, 이미지, 오디오 및 기타 유형의 데이터를 모두 벡터화할 수 있습니다. 이러한 벡터 포함은 유사성 검색, 다중 모달 검색, 권장 사항 엔진, LLM(대규모 언어 모델) 등에 사용됩니다.
이러한 데이터베이스의 아키텍처에는 일반적으로 스토리지 엔진과 인덱싱 메커니즘이 포함됩니다. 스토리지 엔진은 효율적인 검색과 조작을 위해 벡터 데이터의 스토리지를 최적화하고, 인덱싱 메커니즘은 빠른 검색 및 검색 작업을 위해 데이터를 구성합니다.
벡터 데이터베이스에서 임베딩은 벡터 거리 또는 유사성에 따라 벡터 검색 알고리즘을 통해 인덱싱되고 쿼리됩니다. 가장 관련성이 높은 데이터를 식별하려면 강력한 메커니즘이 필요합니다. 잘 알려진 벡터 검색 알고리즘에는 HNSW(Hierarchical Navigable Small World)와 IVF(Inverted File) 등이 포함되어 있습니다.
벡터 데이터베이스는 자연어 처리, 비디오 및 이미지 인식, 추천 시스템, 검색 등을 비롯한 분석 및 생성 AI 전반의 다양한 도메인 및 상황에서 사용됩니다. 예를 들어, 벡터 데이터베이스를 사용하여 다음을 수행할 수 있습니다.
- 콘텐츠, 테마, 감정, 스타일을 기반으로 유사한 이미지, 문서 및 노래 식별
- 특성, 기능, 사용자 그룹에 따라 유사한 제품 식별
- 개인의 선호도에 따라 콘텐츠, 제품, 서비스 추천
- 사용자 그룹의 유사성에 따라 콘텐츠, 제품, 서비스 추천
- 복잡한 요구 사항을 충족하기 위해 다양한 선택지에서 가장 적합한 잠재적 옵션 식별
- 주요 패턴 또는 일반 패턴과 다른 데이터 변칙 또는 사기성 활동 식별
- AI 에이전트에 대한 영구 메모리 구현
- RAG(검색 증강 생성) 사용
통합 벡터 데이터베이스와 순수 벡터 데이터베이스
벡터 데이터베이스 구현에는 순수 벡터 데이터베이스와 NoSQL 또는 관계형 데이터베이스의 통합 벡터 데이터베이스라는 두 가지 일반적인 형식이 있습니다.
순수 벡터 데이터베이스는 소량의 메타데이터와 함께 벡터 포함을 효율적으로 저장하고 관리하도록 설계되었습니다. 이는 포함이 파생되는 데이터 원본과 별개입니다.
고성능 NoSQL 또는 관계형 데이터베이스에 통합된 벡터 데이터베이스는 추가 기능을 제공합니다. NoSQL 또는 관계형 데이터베이스의 통합 벡터 데이터베이스는 해당 원본 데이터와 함께 포함을 저장, 인덱싱 및 쿼리할 수 있습니다. 이 방식은 별도의 순수 벡터 데이터베이스에 데이터를 복제하는 데 드는 추가 비용을 제거합니다. 또한 벡터 포함과 원본 데이터를 함께 유지하면 다중 모드 데이터 작업이 더욱 용이해지고 데이터 일관성, 규모 및 성능이 향상됩니다.
최상의 오픈 소스 벡터 데이터베이스 선택
최상의 오픈 소스 벡터 데이터베이스를 선택하려면 몇 가지 요소를 고려해야 합니다. 데이터베이스가 특정 워크로드 요구 사항을 처리할 수 있는지 여부에 영향을 주므로 데이터베이스의 성능과 스케일링 성능은 매우 중요합니다. 효율적인 인덱싱 및 쿼리 기능이 있는 데이터베이스는 일반적으로 최적의 성능을 제공합니다. 또 다른 요인은 데이터베이스에 사용할 수 있는 커뮤니티 지원 및 설명서입니다. 강력한 커뮤니티와 풍부한 설명서는 귀중한 지원을 제공할 수 있습니다. 다음은 자주 사용되는 오픈 소스 벡터 데이터베이스입니다.
- Chroma
- Milvus
- Qdrant
- Weaviate
그러나 가장 인기 있는 옵션이 최상의 옵션이 아닐 수도 있습니다. 따라서 기능과 지원되는 데이터 형식, 사용하는 기존 도구, 프레임워크와의 호환성에 따라 다양한 옵션을 비교해야 합니다. 오픈 소스 벡터 데이터베이스의 문제(아래)도 염두에 두어야 합니다.
오픈 소스 벡터 데이터베이스의 문제점
위에 나열된 데이터베이스를 비롯하여 대부분 오픈 소스 벡터 데이터베이스는 순수 벡터 데이터베이스입니다. 즉, 소량의 메타데이터와 함께 벡터 포함만 저장하고 관리하도록 설계되었습니다. 포함이 파생되는 데이터 원본과 독립적이라 이를 사용하려면 서비스 통합 간에 데이터를 전송해야 하는데, 이 경우 프로덕션 워크로드에 추가 비용과 복잡성, 병목 현상이 발생합니다.
또한 오픈 소스 데이터베이스의 일반적인 문제도 야기합니다.
- 설치: 사용자는 특히 복잡한 배포의 경우 설치, 구성과 작동에 대한 심층적인 지식이 필요합니다. 작업을 스케일링 업하는 동안 리소스와 구성을 최적화하려면 면밀한 모니터링 및 조정이 필요합니다.
- 유지 관리: 사용자가 업데이트, 패치, 유지 관리를 직접 관리해야 합니다. 따라서 ML 전문 지식만으로는 충분하지 않습니다. 사용자는 또한 데이터베이스 관리에 대한 광범위한 환경이 있어야 합니다.
- 지원: 공식 지원은 관리되는 서비스에 비해 제한될 수 있으며 커뮤니티 지원에 더 많이 의존할 수 있습니다.
따라서 처음에는 무료이지만 오픈 소스 벡터 데이터베이스는 스케일링 업할 때 상당한 비용이 발생합니다. 운영을 확장하려면 하드웨어, 숙련된 IT 직원, 고급 인프라 관리가 필요하므로 하드웨어, 인건비, 운영 비용이 더 많이 듭니다. 오픈 소스 벡터 데이터베이스의 스케일링은 라이선스 요금이 들지 않아도 재정적으로 부담이 될 수 있습니다.
오픈 소스 벡터 데이터베이스의 문제 해결
성능이 뛰어난 NoSQL 또는 관계형 데이터베이스에 통합된 완전 관리형 벡터 데이터베이스는 오픈 소스 벡터 데이터베이스의 추가 비용과 복잡성을 방지합니다. 이러한 데이터베이스는 해당 원본 데이터와 함께 임베딩을 저장, 인덱싱 및 쿼리합니다. 이 방식은 별도의 순수 벡터 데이터베이스에 데이터를 복제하는 데 드는 추가 비용을 제거합니다. 또한 벡터 포함과 원본 데이터를 함께 유지하면 다중 모드 데이터 작업이 더욱 용이해지고 데이터 일관성, 규모 및 성능이 향상됩니다. 한편, 완전 관리형 서비스를 사용하면 개발자가 오픈 소스 벡터 데이터베이스에 대한 커뮤니티 지원을 설정, 유지 관리 및 사용하는 번거로움을 방지할 수 있습니다. 또한 일부 관리되는 벡터 데이터베이스 서비스는 평생 무료 계층을 제공합니다.
예를 들어 Azure Cosmos DB for MongoDB의 통합 벡터 데이터베이스가 있습니다. 이를 통해 개발자는 오픈 소스 벡터 데이터베이스와 관련된 동일한 재정적 이점을 누릴 수 있으며 서비스 공급자는 유지 관리, 업데이트, 스케일링 성능을 처리합니다. 작업을 스케일링 업할 때는 TCO(총 소유 비용)를 낮게 유지하면서 빠르고 쉽게 업그레이드할 수 있습니다. 이 서비스를 사용하여 이미 프로덕션 상태인 MongoDB 애플리케이션의 크기를 편리하게 조정할 수 있습니다.