Vector Store
- 텍스트 데이터를 수치화한 임베딩된 값을 효율적으로 저장하고 검색할 수 있는 시스템이나 데이터베이스
- 유사한 문장을 찾아내는 것에 도움을 줌.
- 임베딩된 데이터를 인덱싱하여 input으로 받아들이는 query와의 유사도를 빠르게 출력한다.
- 이를 위해 코사인 유사도, 유클리드 거리, 맨해튼 거리등의 다양한 유사도 측정 방법을 사용하고, 방향성 기반으로 측정하는 코사인 유사도를 텍스트 임베딩에 자주 사용한다.
- 임베딩 벡터는 텍스트, 이미지 등의 다양한 데이터를 수치화하여 벡터 공간에 매핑한 것으로 이를 효율적을 저장하기 위해 Vector Store를 사용한다.
벡터스토어의 종류
Pure vector databases
-데이터베이스 안에 벡터 형태만 넣을 수 있는 것
- Chroma(무료) ,Pinecone, QDrant (유료)가 대표적
Chroma
- 임베딩 및 메타데이터 저장 : 대규모의 임베딩 데이터와 관련된 메타데이터를 효율적으로 저장할 수 있다.
- 문서 및 쿼리 임베딩 : 텍스트 데이터를 벡터 공간에 매핑하여 임베딩을 생성하고 이를 검색에 사용한다.
- 임베딩 검색 : 사용자 쿼리에 기반하여 관련성 높은 임베딩을 찾아내는 검색 기능을 제공한다.
MMR
- 최대 한계 관련성(Maximum Marginal Relevance, MMR) 검색 방식
- 유사성과 다양성의 균형을 맞추어 검색 결과의 품질을 향상시키는 알고리즘
- 관련성을 최대화하고 중복성을 최소화한다. -> 다양성 증가
- 파라미터
- query : 사용자가 입력하는 검색 쿼리
- k : 최종적으로 선택할 문서의 수 = 반환할 문서의 갯수
- fetch_k : MMR 알고리즘을 수행할 때 고려할 상위 문서의 수, 초기 후보 문서 크기의 수로 MMR에 의해 k개가 반환된다.
- lambda_mult : 쿼리와의 유사성과 선택된 문서간의 다양성 사이의 균형을 조절하는 것으로 1에 가까울 수록 유사성을 고려하며 0에 가까울 수록 다양성을 최대화한다.
Vector libraries
-faiss는 페이스북에서 만든 것으로 대표적
- 고밀도 벡터의 효율적인 유사성 검색 및 클러스터링에 도움이 되는 라이브러리
- 벡터 유사도를 계산하는데 특화되어있는 툴
- 벡터를 저장
Faiss
- 대규모 벡터 데이터셋에서 유사도검색을 빠르고 효율적으로 수행할 수 있도록 해줌.
- 벡터의 압축된 표현을 사용하여 메모리 사용량을 최소화하면서 검색 속도를 극대화한다.
- 유사도 기준
- l2 : 유클라디안 거리를 기반으로 하는 유사도 측정 방법, 두 벡터 간의 거리가 더 작을 수록 더 유사하다고 평가한다.
- ip(내적) : 내적 기반 유사도 측정 방법, 두 벡터의 방향성이 얼마나 유사한지 평가. 값이 클수록 유사하다고 판단.
- cosine : 두 벡터의 각도가 작을 수록 더 유사하다고 평가, 단 벡터의 크기에 영향을 받지 않음.