그때그때 CS 정리

벡터 데이터베이스

필만이 2024. 6. 18. 15:32

배경 : pdf-rag 제작에 chromadb를 사용했는데, 이유가 궁금하다. 알고보니 chromadb는 벡터데이터베이스.
그렇다면 벡터 db는 뭐고 어디에 쓸까?

 

벡터 데이터베이스(Vector Database)

  • 일반적인 데이터베이스는 텍스트, 숫자, 날짜 등의 형태의 데이터를 저장하고 검색하는 데에 사용됨
  • 벡터DB는 말그대로 벡터를 저장하는 데 사용되는 데이터베이스로서 여기에는 텍스트나, 이미지와 같은 비정형 데이터를 벡터로 바꾸어서 저장하게 된다.
  • 한편 이렇게 다양한 데이터를 저장하는 건 좋으나 정작 데이터를 찾으려 할 때 새로운 해결책이 필요하게 되었다. 대용량의 문서, 이미지, 심지어는 동영상과 같은 데이터는 어떻게 검색할 것인가하는 문제를 해결하기 위해 벡터DB가 등장하였다. 결과적으로 현재까지 비정형 데이터의 정보 검색에는 벡터DB가 많이 활용되고 있다.
  • 추천 시스템, 자동 완성, 이미지 검색 등에서 매우 유용하다.

벡터 임베딩

  • 벡터를 이용해 정보를 찾으려면 우선 데이터를 벡터로 바꿔야한다. 이를 벡터 임베딩이라함
  •  텍스트 데이터를 가지고 벡터 임베딩을 수행하는 예시. 사전 학습된 AI 모델이 각 단어를 7차원의 벡터로 표현
  • 이를 보기 쉽게 2차원으로 줄인 것이 우측의 결과이다. men과 women 그리고 king과 queen은 각각의 벡터가 서로 비슷한 방향을 가리키며 위치 역시 비슷
  • 이를 통해 우리는 각 데이터 간의 유사도를 측정할 수 있다. 즉 검색이 가능하게 된다. 대표적인 사례가 ChatGPT나 구글 이미지검색

 

벡터 DB의 중요성

  •  RAG 시스템의 검색 기능과 직접적으로 연결되어 있으며, 전체 시스템의 응답 시간과 정확성에 큰 영향을 미칩니다. 이 단계를 통해 데이터가 잘 관리되고, 필요할 때 즉시 접근할 수 있도록 함으로써, 사용자에게 신속하고 정확한 정보를 제공

 

적정 사용처
벡터 데이터베이스는 다음과 같은 애플리케이션에서 유용하게 사용됩니다:

  1. 추천 시스템: 사용자의 과거 행동이나 선호도를 벡터로 표현하고, 이를 바탕으로 유사한 아이템을 추천할 수 있습니다.
  2. 이미지 및 비디오 검색: 이미지나 비디오의 특성을 벡터로 변환하여 유사한 이미지나 비디오를 빠르게 검색
  3. 자연어 처리: 문서, 문장, 단어의 의미를 벡터로 표현하고 이를 기반으로 유사한 텍스트를 찾거나 의미적 관계를 분석
  4. 생물정보학 및 화학: 분자 구조나 유전 정보를 벡터로 표현하고, 이를 통해 유사한 구조나 패턴을 가진 분자를 검색

벡터 데이터베이스는 특히 대규모 데이터셋에서 벡터 기반의 고차원 데이터를 효율적으로 관리하고 검색할 필요가 있는 경우에 매우 유용하며, 현대 AI 및 데이터 과학 기반 애플리케이션에 적합합니다.

서비스 이름 주요 특징 과금 정책
Milvus 고성능, 오픈소스, 확장 가능한 벡터 검색 엔진 오픈소스(무료 사용 가능), 상업적 지원 옵션 있음
Pinecone 관리형 서비스, 쉬운 통합, 실시간 벡터 검색 가능 사용량 기반 과금, 기본 계획은 무료, 상위 계획은 과금
Weaviate GraphQL API 지원, 오픈소스, 자연어 이해에 최적화 오픈소스(무료 사용 가능), 클라우드 호스팅은 과금
FaunaDB 서버리스 데이터베이스, 다양한 API 지원 사용량 기반 과금, 무료 계획 제공, 추가 사용량은 과금
Elasticsearch 널리 사용되는 검색 엔진, 복잡한 쿼리 지원, 확장성 좋음 기본 오픈소스 버전 무료, X-Pack 기능은 유료
Vector AI 심플한 API, 머신러닝 모델과 통합 용이 모델별, 사용량별 과금, 상세 정보는 문의 필요
Vespa 야후에서 개발, 대규모 분산 데이터 처리 오픈소스(무료 사용 가능), 상업적 지원 및 서비스는 유료
Qdrant 실시간 데이터 업데이트 지원, 고급 필터링 가능 오픈소스(무료 사용 가능), 상업적 용도는 별도 협의
ChromaDB 특화된 데이터베이스 관리 기능과 성능 최적화, 높은 확장성 오픈소스(무료 사용 가능), 상업적 사용 가능
Aeca 데이터 보안과 개인 정보 보호에 초점을 둔 벡터 데이터베이스 사용량 기반 과금, 상세한 과금 정보는 서비스 제공자에게 문의 필요
서비스 이름 적합한 사용 사례
Milvus 대규모 이미지 검색 시스템, 실시간 추천 시스템, 머신러닝 모델이 필요한 경우에 적합하며, 확장성과 고성능이 필요할 때 유용합니다.
Pinecone 관리가 편리한 벡터 검색 서비스를 원할 때, 특히 관리형 서비스를 통해 쉽게 구축하고 유지하고 싶은 경우에 적합합니다.
Weaviate GraphQL을 통한 API 접근이 필요하고, 자연어 처리에 최적화된 벡터 데이터베이스를 원하는 경우에 사용하기 좋습니다.
FaunaDB 서버리스 아키텍처를 선호하고, 다양한 API 지원을 통해 유연성을 원하는 경우에 적합합니다.
Elasticsearch 복잡한 검색 쿼리와 데이터 분석이 요구되는 대규모 애플리케이션에 사용하기 좋으며, 로그 분석과 같은 실시간 데이터 처리가 필요할 때 유용합니다.
Vector AI 머신러닝 모델과의 통합이 필요하고, 간단한 API를 통해 벡터 데이터베이스 기능을 활용하고 싶은 경우에 적합합니다.
Vespa 대규모 분산 데이터 처리가 필요한 경우, 특히 실시간 쿼리 응답과 대용량 데이터셋을 다루는 어플리케이션에 적합합니다.
Qdrant 실시간 데이터 업데이트와 고급 필터링 기능이 요구되는 시나리오, 예를 들어 사용자 행동에 기반한 동적 추천 시스템에 유용합니다.
ChromaDB 높은 확장성과 성능 최적화가 필요한 대규모 벡터 데이터 처리에 적합하며, 특히 기업 환경에서의 복잡한 데이터 요구 사항에 맞춰 사용하기 좋습니다.
Aeca 데이터 보안과 개인 정보 보호에 초점을 두는 애플리케이션에 적합하며, 금융, 의료 등 개인정보 보호가 중요한 분야에서 사용하기 좋습니다.