벡터 데이터베이스-개요
벡터 데이터베이스
데이터
- 비정형 데이터
- 설계된 모델이나 구조로 구성되지 않은 데이터
- 실세계에 존재하는 가장 많은 데이터
- 예시: 오디오, 비디오, 텍스트 데이터 등
- 정형 데이터
- MySQL, PostgreSQL, mariaDB 등과 같은 관계형 데이터베이스에 저장
- 혹은, 엑셀과 같은 스프레드시트에 저장
- 사전에 정의된 구조로 매핑
- 일관된 내부 구조
벡터 데이터베이스
- AI/ML에 사용되는 벡터, 혹은 임베딩 된 벡터를 빠르게 인덱싱하기 위한 데이터베이스
- 일반적으로 kNN(k-Nearest Neighbors) 인덱스로 구동
- HNSW(Hierarchical Navigable Small World Graphs) 및 IVF(Inverted File Index) 알고리즘으로 구축
- 벡터 데이터베이스는 데이터 관리, 내결함성, 인증 및 액세스 제어, 쿼리 엔진과 같은 추가 기능을 제공
벡터 데이터베이스의 작동원리
- 색인: 해싱, 양자화 또는 그래프 기반 기술을 사용하는 벡터 데이터베이스는 벡터를 주어진 데이터 구조에 매핑하여 벡터를 색인
- 해싱: 지역성 기반 해싱(Locality-Sensitive Hashing, LSH)과 같은 해싱 알고리즘은 빠른 결과를 제공하고 대략적인 결과를 생성하므로 근사 최근접 유사 항목 검색에 가장 적합
- 양자화: 곱 양자화(Product Quantization, PQ)와 같은 양자화 기술은 벡터를 더 작은 부분으로 나누고 해당 부분을 코드로 표현한 다음 해당 부분을 다시 합침. 결과는 벡터와 해당 구성 요소의 코드 표현. 생성된 코드북을 통해 쿼리를 코드로 나눈 다음 기존 코드북과 비교하여 결과 생성
- 그래프 기반: HNSW 알고리즘과 같은 그래프 알고리즘은 노드를 사용하여 벡터를 표현. 노드를 클러스터링 한 후에 유사한 노드 사이에 엣지를 생성하여 계층적 그래프 생성. 생성된 그래프를 통해 쿼리 벡터와 가장 유사한 벡터 탐색
- 탐색: 벡터 데이터베이스는 쿼리를 받으면 인덱스 벡터와 쿼리 벡터를 비교하여 최근접 벡터 항목을 결정. 최근접 항목을 설정하기 위한 유사성 측정에는 아래와 같은 방법이 존재.
- 코사인 유사도(Cosine Similarity)
- 유클리드 거리(Euclidean Distance)
- 내적(Dot Product)
벡터 데이터베이스가 사용되는 필드
- 멀티모달 검색엔진
- Image Search, Voice Search
- LLM (Large Language Model)
- Embedding Model Solution
- 메타데이터 추출 자동화
- 생성형 AI 외부 Knowledge Base 제공
벡터 데이터베이스를 사용하는 개발 필드
- 기본적으로 벡터 검색 기반 환경 구축을 위한 데이터베이스
- ML 등 모델 서비스를 사용하여 임베딩을 생성하고 벡터 데이터베이스를 하이드레이션
- 최소한의 ML 전문 지식 필요
- 데이터 사이언티스트 및 엔지니어
- 임베딩 구축, 벡터 데이터베이스 운영, AI 솔루션 제공
- 방대한 양의 벡터 데이터를 익숙한 데이터베이스 워크로드로 관리 가능
벡터 데이터베이스의 추가적 기능
- 리소스 관리, 보안 제어, 확장성, 내결함성, 정교한 쿼리 언어
벡터 데이터베이스의 한계점
- 기존 데이터베이스와 마찬가지로 확장성, 근사치 정확도, 지연 성능, 경제성 개선 필요
- 보안, 안정성, 운영 지원, 워크로드 지원도 병행되어야함
2024년 기준 사용되고 있는 벡터 데이터베이스
- Pinecone
- Chroma
- Weaviate
- Qdrant
- Faiss
참고문헌
- AWS. “벡터 데이터베이스란 무엇인가요?”. https://aws.amazon.com/ko/what-is/vector-databases/.
- elastic. “벡터 데이터베이스란 무엇인가?”. https://www.elastic.co/kr/what-is/vector-database.
- elastic. “비정형 데이터란 무엇인가?”. https://www.elastic.co/kr/what-is/unstructured-data.
- Pinecone. “Product”. https://www.pinecone.io/product/.
- Chroma. “Chroma”. https://www.trychroma.com/.
- Weaviate. “The easiest way to build and scale AI applications”. https://weaviate.io/.
- Qdrant. “Vector Database”. https://qdrant.tech/.
- Langchain. “Faiss”. https://python.langchain.com/docs/integrations/vectorstores/faiss.
댓글남기기