Search

Vector DB 개요

대분류
인공지능/데이터
소분류
LangChain/RAG
유형
Vector DB
부유형
Introduction Vector DB
최종 편집 일시
2024/11/01 03:29
생성 일시
2024/10/31 08:19
14 more properties

Vector Database

개요

정보(데이터)는 다양한 형태로 제공된다.
텍스트 문서, 리치 미디어, 오디오와 같이 비정형 정보도 있고 애플리케이션 로그, 테이블, 그래프와 같이 정형화된 정보도 있다.
인공 지능과 기계 학습(AI/ML)의 혁신을 통해 일종의 ML 모델인 임베딩 모델을 만들 수 있었다.
임베딩은 모든 유형의 데이터를 자산의 의미와 컨텍스트를 캡처하는 벡터로 인코딩한다.
이를 통해 인접 데이터 포인트를 검색하여 유사한 자산을 찾을 수 있다.
벡터 검색 방법을 사용하면 스마트폰으로 사진을 찍고 비슷한 이미지를 검색하는 등 고유한 경험을 할 수 있다.

벡터 데이터베이스

벡터를 고차원 포인트로 저장하고 검색하는 기능을 제공
N차원 공간에서 가장 가까운 이웃을 효율적이고 빠르게 조회할 수 있는 추가적인 기능을 추가
일반적으로 k-NN(k-Nearest Neighbor) 인덱스로 구동되며 계층적 탐색 가능한 소규모 세계(HNSW) 및 반전된 파일 인덱스(IVF) 알고리즘과 같은 알고리즘으로 구축된다.
벡터 데이터베이스는 데이터 관리, 내결함성, 인증 및 액세스 제어, 쿼리 엔진과 같은 추가 기능을 제공한다.

Database 종류

Vector Embedding

벡터 임베딩은 텍스트, 이미지, 영상, 오디오 등 다양한 유형의 데이터를 컴퓨터가 이해하고 처리할 수 있도록 수치 형태로 변환하는 방법
이 변환 과정은 사람이 직접 정의하는 것이 아니라, 데이터를 AI 모델에 입력하여 모델 스스로가 해당 데이터를 의미 있는 벡터로 변환한다.
그리고 벡터 임베딩을 통해 데이터는 고차원 공간에서 저차원의 벡터로 변환된다.
이 과정에서 차원은 축소되면서도, 데이터의 중요한 정보와 패턴은 보존된다.
이를 통해 컴퓨터는 데이터를 효과적으로 분석하여, 벡터 간의 유사성 또는 패턴을 파악이 가능해진다.

데이터 유형별 임베딩 과정

1.
텍스트 데이터 (Document):
텍스트 임베딩 모델을 사용하여 텍스트 데이터를 벡터 형태로 변환한다.
이 과정에서 텍스트는 단어 또는 문장 간의 의미를 수치로 표현한 텍스트 벡터 임베딩으로 변환된다.
2.
이미지 데이터 (Image):
이미지 임베딩 모델을 사용하여 이미지 데이터를 벡터로 변환한다.
이 벡터는 이미지의 특징을 수치로 표현하여, 이미지 간 유사도를 측정하거나 분류하는 데 사용된다.
3.
오디오 데이터 (Audio):
오디오 임베딩 모델을 사용하여 오디오 데이터를 벡터로 변환한다.
이 벡터는 오디오의 특징 (예: 음색, 주파수 패턴 등)을 나타내며, 이를 통해 오디오 파일 간의 유사도를 비교할 수 있다.
관계형 데이터베이스는 쿼리와 정확히 일치하는 행을 찾아 반환한다.
반면, 벡터 데이터베이스에서는 유사도 메트릭(Similarity Metrics)을 적용하여 가장 유사한 벡터를 찾는다.
벡터 데이터베이스의 일반적인 파이프라인은 다음과 같다.
elastic
1.
색인(Indexing)
PQ, LSH, HNSW와 같은 알고리즘을 사용하여 벡터를 색인한다.
이 단계에서는 더 빠른 검색을 가능하게 하는 데이터 구조에 벡터를 매핑한다.
2.
쿼리(Querying)
유사도 메트릭(코사인 유사도, 유클리디안 거리, 내적 등)을 적용하여 가장 가까운 벡터를 찾는다.
코사인 유사도(Cosine Similarity)
두 벡터 간의 각도를 측정하여 유사성을 판단
두 벡터가 얼마나 같은 방향으로 향하고 있는지를 나타낸다.
값은 -1 ~ 1 사이에 있으며, 값이 1에 가까울수록 두 벡터는 유사하고, -1에 가까울수록 반대 방향에 있는 것을 나타낸다.
유클리디안 거리(Euclidean Distance)
두 벡터 간의 직선 거리를 측정
값은 항상 0 이상이며, 두 벡터 간의 거리가 짧을수록 유사성이 높다고 판단
내적(Dot Product)
두 벡터 간의 곱셈 연산을 통해 유사성을 측정
두 벡터가 얼마나 유사한 방향을 가지고 있는지를 나타낸다.
두 벡터가 유사한 방향을 가지면 양수이고, 반대 방향을 가지면 음수이며, 두 벡터가 직교하면 0
3.
후처리(Post Processing)
데이터셋에서 최종 최근접 이웃을 검색하고 이를 후처리하여 최종 결과를 반환
일부 벡터 데이터베이스는 벡터 검색을 하기 전에 필터를 적용할 수 있다.
필터링 과정
1.
사전 필터링
벡터를 검색하기 전에 메타데이터 필터링이 수행
이 방식은 검색량을 줄이는 데 도움이 될 수 있다.
그러나 메타데이터 필터링 기준에 부합하지 않지만 실제 연관이 있는 결과를 놓칠 수 있으며, 광범위한 메타데이터 필터링으로 인해 추가 오버헤드가 발생하여 쿼리 수행이 느려질 수 있다.
2.
사후 필터링
벡터를 검색한 후에 메타데이터 필터링이 수행된다.
이 방식은 연관된 모든 결과를 추출하는 데 도움이 되지만, 검색이 완료된 후 관련 없는 결과를 필터링해야 하므로 추가 오버헤드가 발생하고 쿼리 프로세스가 느려질 수 있다.
벡터 인덱스 생성에서 사용하는 알고리즘

Random Projection

무작위 투영의 기본 아이디어는 무작위 투영 행렬을 사용하여 고차원 벡터를 저차원 공간에 투영하는 것
1.
난수 행렬을 만든다.
2.
행렬의 크기는 우리가 원하는 목표 저차원 값이 될 것이다.
3.
그런 다음 입력 벡터와 행렬의 내적을 계산하여 원래 벡터보다 차원이 적지만 유사성을 유지하는 투영 행렬을 생성한다.

Product Quantization

벡터 임베딩과 같은 고차원 벡터에 대한 손실 압축 기술인 제품 양자화(PQ)
원본 벡터를 가져와서 더 작은 청크로 나누고 각 청크에 대한 대표 "코드"를 생성하여 각 청크의 표현을 단순화한 다음 유사성 작업에 중요한 정보를 잃지 않고 모든 청크를 다시 결합하는 것

Loclity-sensitive hashing

LSH(Locality-Sensitive Hashing)는 근사 최근접 이웃 검색 컨텍스트에서 인덱싱하는 기술
속도에 최적화되어 있으면서도 대략적이고 포괄적이지 않은 결과를 제공한다.

Hierarchical Navigable Small World (HSNW)

HSNW는 트리의 각 노드가 벡터 세트를 나타내는 계층적 트리와 같은 구조를 생성
노드 사이의 모서리는 벡터 간의 유사성을 나타낸다.

메타데이터를 통한 필터링

Post-filtering

벡터 검색 후에 메타데이터 필터링이 수행된다.
이렇게 하면 모든 관련 결과를 고려하는 데 도움이 될 수 있지만 검색이 완료된 후 관련 없는 결과를 필터링해야 하므로 추가 오버헤드가 발생하고 쿼리 프로세스 속도가 느려질 수도 있다.

Pre-filtering

벡터 검색 전에 메타데이터 필터링이 수행된다.
이렇게 하면 검색 공간을 줄이는 데 도움이 되지만 시스템에서 메타데이터 필터 기준과 일치하지 않는 관련 결과를 간과할 수도 있다.
또한 광범위한 메타데이터 필터링으로 인해 계산 오버헤드가 추가되어 쿼리 프로세스가 느려질 수 있다.

Chroma

LLM(대규모 언어 모델) 애플리케이션 개발을 간소화하도록 설계된 오픈 소스 임베딩 데이터베이스
이 솔루션의 핵심은 LLM을 위한 지식, 사실, 기술을 쉽게 통합할 수 있도록 하는 데 있다.
Chroma DB에 대해 자세히 살펴보면 텍스트 문서를 손쉽게 처리하고, 텍스트를 임베딩으로 변환하고, 유사도 검색을 수행할 수 있는 기능을 확인할 수 있다.
오픈소스X
간단한 API를 통해 사용자가 관리하는 클라우드 기반 벡터 데이터베이스로, 인프라 설정이 필요하지 않다.
Pinecone을 사용하면 인프라 유지 관리, 서비스 모니터링, 알고리즘 문제 해결 등의 번거로운 작업 없이도 AI 솔루션을 시작, 관리, 개선할 수 있다.
데이터를 신속하게 처리하고 사용자가 메타데이터 필터와 희소 밀도 인덱스를 지원하여 다양한 검색 요구사항에 걸쳐 정확하고 신속한 결과를 보장한다.

Weaviate

오픈 소스 벡터 데이터베이스
선호하는 ML 모델의 데이터 오브젝트와 벡터 임베딩을 간편하게 저장할 수 있다.
이 다용도 도구는 수십억 개의 데이터 개체를 번거로움 없이 관리할 수 있도록 원활하게 확장
수백만 개의 항목에 대해 밀리초 이내에 10-NN(10개의 가장 가까운 이웃) 검색을 신속하게 수행한다.

FAISS (Facebook AI Similarity Search)

유사점을 신속하게 검색하고 밀집된 벡터의 클러스터링을 위한 오픈 소스 라이브러리
주요 개발은 Meta의 Fundamental AI Research 그룹에서 수행
여기에는 RAM 용량을 초과할 수 있는 벡터 세트까지 다양한 크기의 벡터 세트 내에서 검색할 수 있는 알고리즘이 포함되어 있다.
또한 Faiss는 평가 및 매개변수 조정을 위한 보조 코드를 제공
주로 C++로 코딩되었지만 Python/NumPy 통합을 완벽하게 지원
주요 알고리즘 중 일부는 GPU 실행에도 사용할 수 있다.

Qdrant

가장 최신에 나온 벡터 DB
벡터 데이터베이스 역할을 하며, 벡터 유사성 검색을 쉽게 수행할 수 있도록 도와줌.
API 서비스를 통해 운영되며, 가장 밀접하게 관련된 고차원 벡터를 쉽게 검색할 수 있다.
주요 특징
다목적 API: OpenAPI v3 사양과 다양한 언어에 대한 기성 클라이언트를 제공
속도와 정확성: 빠르고 정확한 검색을 위해 맞춤형 HNSW 알고리즘을 사용
고급 필터링: 관련 벡터 페이로드를 기반으로 결과 필터링을 허용
다양한 데이터 유형: 문자열 일치, 숫자 범위, 지리적 위치 등을 지원
확장성: 수평적 확장 기능을 갖춘 클라우드 네이티브 디자인
효율성: Rust가 내장되어 있어 동적 쿼리 계획을 통해 리소스 사용 최적화