본문 바로가기
Embedding Vector/VertorDB

[VectorDB] VectorDB란?

by 연습장이 2023. 9. 18.
728x90
반응형

목적

  트렌드에 뒤쳐지지 않고 적극적이고 진취적으로 기술 스택을 개선하여 확장성 있고 안정적인 서비스를 제공하기 위함

목표

  • VectorDB가 왜 도입되었는지를 소개한다.
  • VectorDB에는 어떤 종류가 있는지 소개한다.
  • VectorDB가 가진 장점과 한계점에 대해 소개한다.

선행 용어 및 개념 학습

VectorDB를 학습하기 전에 기본적으로 알아두어야 할 용어를 정리함

Vector란?

벡터 : 크기와 방향을 함께 가진 양

스칼라 : 크기만 가진 양

1번은 벡터의 합

2번은 벡터의 곱

인데 벡의 정의와 화살모양이라는 것만 우선 인지하면 됨.

벡터 DB에서는 이러한 화살모양으로 의미 유사성(x,y,z)을 측정함. ex) [0.1, 0.5 1]

Embedding Vector

Embedding Vector란?

  • Embedding vector는 단어나 문장을 고차원의 수치 벡터로 나타내는 것을 의미함
  • 이러한 벡터는 텍스트 데이터의 의미와 구조를 포착하기 위해 훈련된 모델(주로 신경망 기반)에 의해 생성
  • 또한 벡터는 단어나 문장 간의 의미 유사성을 측정하는 데 사용됨

Embedding Vector가 필요한 이유

  • 컴퓨터는 텍스트 데이터를 이해하기 위해 숫자로 변환해야 함(이진수로) 이러한 벡터는 자연어를 수학적으로 표현하여 기계 학습 알고리즘에 입력으로 제공함
  • Embedding vector를 사용하면 단어나 문장 간의 유사성을 측정하고, 이를 기반으로 자연어 이해 및 처리 작업을 수행할 수 있음
  • 예를 들어 Word Embeddings를 사용하면 기계 번역, 감정 분석, 문서 분류 등 다양한 자연어 처리 작업에서 성능을 향상시킬  수 있음

어떻게 Embedding Vector를 만들 수 있는가?

  • 가장 일반적인 방법 중 하나는 Word2Vec, GloVe, FastText와 같은 사전 훈련된 임베딩 모델을 사용하는 것
  • 이러한 모델은 대규모 텍스트 코퍼스에서 단어의 분산 표현을 학습하며, 이 분산 표현을 사용하여 단어를 벡터로 나타냄

언제 Embedding Vector를 활용할 수 있는가?

  • 문서 분류: 단어의 임베딩을 사용하여 텍스트 문서를 벡터로 표현하고, 분류 작업에 활용
  • 기계 번역: 단어 수준 또는 문장 수준의 임베딩을 사용하여 번역 모델을 개선
  • 감정 분석: 텍스트의 감정 분석을 위해 텍스트의 임베딩을 활용
  • 정보 검색: 문서와 쿼리 간의 유사성을 측정하기 위해 임베딩을 사용

즉, Embedding Vector는 고차원의 인간 언어를 저 차원으로 추상화 및 숫자로 변경하여 컴퓨터가 알아 들을 수 있게 변형한 것이고, 이 수치화된 숫자를 통해 두 글자 사이의 의미 유사성을 파악하는 것

 

이다. 우리가 코딩한 파이썬 언어를 컴파일러를 통해 컴파일 하면 중간 언어인 어셈블리 언어로 변형되고 이 것이 컴퓨터에게 익숙한 자연어로 다시 변경되는 것. 직접적으로 비교하자면

  • 어셈블리 코드 : 프로그래밍 로직을 중심으로 작성된 추상화된 표현(문자)
  • Embedding Vector : 둘 사이의 유사성을 중심으로 작성된 추상화된 표현(숫자)

이라고 볼 수 있다.

 

  예를 들어 "사과"가 어떤 문장이나 문단에 자주 등장한다면, 그것을 "0.2, 0.8, 0.4"과 같이 수치화한다. 그리고 "바나나"가 어떤 문장에 자주 등장한다면 이것 또한 "0.9, 0.8, 0.5" 등으로 수치화하여 공간에 표시한다.

 

  이 둘 사이의 거리를 통해 의미 유사성을 파악할 수 있다. 물론 여러 단어가 서로 밀집하게 모여있다면(거리가 가깝다면) 그들은 서로 의미 유사성이 더 크다고 판단할 수 있을 것이다.

LLM(Large Language Model, 대형 언어 모델)

LLM이란?

  • 자연어 처리 분야에서 중요한 역할을 하는 모델로 텍스트 데이터를 이해하고 생성하는 데 사용됨
  • Embedding Vector는 LLM의 핵심 구성 요소 중 하나로, 텍스트를 수치화하여 모델에 입력하기 위해 사용됨
  • LLM은 다양한 응용 분야에서 활용되며, 텍스트 데이터의 이해와 생성을 향상시키는 데 중요한 역할을 함

LLM과 Embedding Vector, Vectordb와의 관계

  대규모 텍스트 데이터가 있고 이 것을 LLM이란 녀석이 학습함. 그리고 결과값으로 Embedding Vector라는 데이터를 뱉어냄. 이 것을 VectorDB에 저장하고 여기서 검색 등의 활용을 할 수 있음. 물론 VectorDB에서만 활용할 수 있는 건 아님

정적인 LLM의 경우를 예로 들어보자. ChatGPT를 한번 쯤 써봤다면 환각 증상을 겪어봤을 것이다.

 

  여기서 말하는 환각 증상은, LLM이 자존심이 쌔서 모르겠다고 대답을 안하고 어떻게든 자연어를 생성해서 대답을(정확히는 구라를) 하는 것이다.

이 때, Vector DB를 한번 경유한다면 이 부분을 교정할 수(신뢰성을 늘릴 수) 있다.

LLM과 Embedding Vector, Vectordb, 알고리즘과의 관계

대규모 텍스트 데이터를 LLM에 밀어넣어 학습시킴. 학습 결과로 Embedding Vector라는 결과물이 나오고 이것을 VectorDB에 저장함.

특정 알고리즘(k-NN, HNSW, IVF)을 가지고 VectorDB에 있는 데이터를 활용할 수 있는 일종의 방법론 혹은 논리적 라이브러리라 볼 수 있음

K-NN(k-Nearest Neighbors) 알고리즘

  • "k-최근접 이웃"이라고도 불리며, 패턴 인식과 기계 학습 분야에서 사용되는 지도 학습 알고리즘 중 하나
  • 데이터 간의 유사성을 측정하여 분류 또는 회귀 작업을 수행하는 데 사용됨

ANN (Approximate Nearest Neighbors) 알고리즘

  • k-NN 알고리즘의 변형 중 하나
  • 가장 가까운 이웃을 정확하게 찾지 않고 근사적으로 찾는 것을 목표로 함
  • 대규모 데이터 집합에서 빠르게 이웃을 검색하는 데 사용되며 정확한 k-NN 검색은 계산적으로 매우 비용이 들 수 있지만, ANN은 이런 비용을 줄이면서도 유용한 근사치를 제공함

HNSW(Hierarchical Navigable Small World) 알고리즘

  • ANN 알고리즘의 변형 중 하나
  • 벡터 데이터의 검색을 위해 고안된 특별한 그래프 구조를 사용하는 근사적인 최근접 이웃 검색 알고리즘
  • 이 알고리즘은 "작은 세상" 네트워크 구조를 사용하여 대규모 벡터 데이터셋에서 빠른 검색을 가능하게 함

K-NN, ANN, HNSW 한줄 비교

  • K-NN : 소규모에 적합. 실시간보다는 오프라인에 적합
  • ANN : 대규모에 적합. 정확도가 아주 중요할 경우에 사용
  • HNSW : 대규모에 적합. 약간의 정확도를 포기하고 빠른 속도가 요구될 때 사용

VectorDB란?

  벡터화된 데이터를 저장 및 검색, 활용할 수 있는 데이터베이스이다. DBMS가 아니다. 다시 말하지만 데이터베이스이다. 벡터화된 데이터를 담는다는 건(저장한다는 건) 어떤 느낌일까? 아래 그림을 보면 이해가 좀더 빠를 것으로 생각한다.

벡터를 공간이라고 바꿔 표현한다면 어느정도 이해가 될 것이다. 서로 겹치는 부분이 많을수록 의미 유사성이 증가(비슷하다)하다고 볼 수 있다.

벡터DB는 비정형 데이터를 다룬다.

VectorDB 종류 및 비교표

VectorDB명 회사 Cloud 가능여부 오픈 소스여부(지원 언어) 사용알고리즘 비고
Weaviate SeMI O O
(Python, Go, Java, JS)
Custom HNSW 쿼리를 유연하게 가져가고 싶다면 고려할 수 있는 VectorDB 라고 함
Milvus Ziliz X O
(Python, Go, C++)
ANN, HNSW, ANNOY 규모가 큰 경우  상당히 좋다고 알려져있음. document도 깔끔한 편이라고 함
Vespa Yahoo! O O (Java, C++) HNSW (graph) 기능이 풍부하다고 알려져있고 검증이 충분히 되어있다고 함
Vald Yahoo! X O (Go) NGT  
Chroma Chroma O O (Python, JS) HNSW faiss 와 마찬가지로 설치가 편함(local에 구성) AI 쪽에 특화(Chroma 에서 주장하고 있음)되었다고 함
Qdrant Qdrant N O (Rust) HNSW (graph)  
Pinecone Pinecone O X 복합으로 사용하며, 독점 상태 자료가 상당히 많은 편이고, 빠르게 Prototype으로 실험, 시작, 검증하기 좋다고 함
GSI APU
 for ES(Elasticsearch)/ Opensearch
GSI X X Neural hashing / Hamming distance  

VectorDB의 한계점

  • embedding 하려는 dimension 크기가 높은 경우, ANN 알고리즘들이 품질 저해
  • Vector Database가 차지하는 메모리가 큰 편이기에 인프라 설계 시 사전 요구 사항 검토가 필요
  • 실제로 임베딩을 해서 indexing 하는 데에도 시간이 오래 걸리는 이슈 존재. 계산 복잡도가 높고, Cost가 엄청남
    • Vector Database는 빠른 계산을 위해서 similarity(의미 유사성)를 미리 계산하지만, 이 부분은 모든 데이터들에 대한 similarity를 계산해야 한다는 의미함
    • 배치로 처리할지, 실시간으로 처리할지에 따라 고민이 필요함

참고

728x90
반응형