Study/Database

[DB] 벡터 데이터베이스(Vector Database)

nam-willow 2025. 4. 17. 15:50

 

 

전통적인 데이터베이스의 한계


  • 기존 데이터베이스는 행(Row)과 열(Column) 로 구성된 정형 데이터 저장에 최적화
  • 하지만 오늘날 다루는 데이터는?
    -> 텍스트, 이미지, 오디오, 영상 등 비정형 데이터
  • 이러한 데이터는 기존 방식으로는 검색과 분석이 어렵고 정확성이 떨어짐

 

 

 

 

벡터 데이터베이스란?


데이터를 숫자 벡터(Vector)로 변환해 의미를 보존한 채 저장하고, AI가 의미 기반으로 검색할 수 있도록 하는 데이터베이스

 

 

벡터란?

벡터는 데이터의 의미를 수치로 표현한 것입니다. 예를 들어, 특정 단어, 이미지, 문서 등의 개념을 숫자 리스트로 변환합니다.

→ 이렇게 변환된 벡터는 단순한 값이 아니라, 해당 데이터의 의미나 문맥까지 담고 있어

유사한 의미를 가진 정보 검색(semantic search)이나 유사도 비교가 가능합니다.

 

 

  • 단어, 이미지, 문장 등 하나의 정보를 수치 리스트로 표현한 것
  • 예: "king" → [4, 5], "banana" → [2.5, -3]
  • 이 벡터는 단순 숫자가 아니라 의미(semantics)를 담고 있음

 

 

실제 사례

“웃고 있는 사람 사진 보여줘”라고 요청

  • 전통 DB는 ‘happy’라는 태그가 있어야 검색 가능
  • 벡터 DB는 ‘행복’이라는 개념 자체를 이해해 유사한 이미지를 찾아줌

 

핵심

  • 벡터 DB는 단순히 문자를 비교하는 것이 아니라, 문장 속 의미와 개념을 이해합니다.
  • 사용자가 명확한 구조 없이 자유롭게 질문해도, AI는 이를 해석하고 의미 기반의 빠른 정보 검색을 수행할 수 있습니다.

이처럼 벡터 DB는 기존 검색 방식보다 훨씬 똑똑하고 직관적인 AI 기반 검색을 가능하게 하며,

특히 비정형 데이터가 많은 업무에서 탁월한 성능을 발휘합니다.

 

 

 

 

Vector database 작동방식


 

 

 

원본 데이터 → 벡터로 변환 (Embedding)

 

  • 텍스트, 이미지, 오디오, 문서, 이메일 등 다양한 형태의 원본 데이터를 벡터로 변환합니다.
  • 이 벡터는 단순한 숫자 배열로, 예를 들어 'king'은 [4, 5], 'woman'은 [5, 3], 'banana'는 [2.5, -3]처럼 표현됩니다.
  • 이 숫자들이 우리에게 어떤 의미인지는 알기 어렵지만, AI는 이 벡터들의 상호 간 의미적 관계를 파악합니다.

 

 

 

임베딩 모델 사용

 

  • OpenAI Embedding API, Hugging Face 모델, 또는 직접 학습한 커스텀 모델을 통해 데이터를 벡터로 임베딩합니다.

 

 

 

벡터 DB에 저장

 

  • 임베딩된 벡터들은 Pinecone, Chroma, FAISS 같은 전용 벡터 데이터베이스에 저장됩니다.
  • 이러한 데이터베이스는 전통적인 행/열 방식이 아닌, 의미 기반 검색이 가능하도록 최적화된 방식으로 데이터를 저장합니다.

 

 

유사도 기반 검색

 

  • 사용자가 질문(쿼리)을 입력하면, 그 질문도 벡터로 변환되어 기존에 저장된 벡터들과 **의미 기반 비교(cosine similarity 등)**를 통해 가장 유사한 결과를 찾아냅니다.
  • 예시로 'king', 'man', 'woman'은 하나의 의미 그룹, 'apple', 'banana', 'orange'는 또 다른 그룹,
  • 'football', 'golf', 'tennis'는 스포츠라는 그룹으로 벡터 공간 상에서 자연스럽게 분리됩니다.

 

 

 

 

 

Vector database 에서 사용되는 검색 방식


유클리드 거리 (Euclidean Distance, L2 Norm)

 

  • 두 벡터 간의 직선 거리를 측정합니다.
  • 공간 상에서 두 점 사이의 최단 경로를 찾는 것과 같다고 생각하면 됩니다.
  • 사용 사례: 이미지 검색, 추천 시스템
  • 예를 들어, 이미지를 업로드했을 때 유사한 이미지를 찾아주는 기능은 이 유클리드 거리를 활용합니다. ChatGPT나 Bing에서도 유사 이미지 검색 시 이 방식이 사용됩니다.

 

 

코사인 유사도 (Cosine Similarity)

  • 거리 대신, 두 벡터 사이의 각도를 측정합니다.
  • 벡터의 크기는 다르더라도 같은 방향을 가리킨다면 유사한 것으로 간주합니다.
  • 사용 사례: 텍스트 및 문서 검색
  • 예를 들어 "비용 최적화"에 대한 문서를 검색할 때, 해당 단어가 명시되지 않더라도 관련된 내용을 찾을 수 있습니다.

 

 

맨해튼 거리 (Manhattan Distance, L1 Norm)

  • 격자(grid) 기반의 블록 거리를 측정합니다.
  • 직선이 아닌, 도시의 블록을 따라 이동하는 방식이라고 생각하면 됩니다.
  • 사용 사례: 경로 최적화, 물류, 배송 추천 시스템
  • 예: Zomato, Swiggy, Amazon 등 배달 최적화 시스템에서 활용 가능

 

 

해밍 거리 (Hamming Distance)

  • 두 이진 벡터 간의 차이 개수를 계산합니다.
  • 사용 사례: 오류 탐지, DNA 서열 비교
  • 예: 유전체 분석에서 유사한 DNA 패턴을 비교하는 데 활용됨

 

 

 

 

 

 

Vector Database가 필요한 이유


 

기업의 80~90%는 비정형 데이터

  • 예: 이메일, 채팅, 콜센터 기록, 영상, 음성

 

 

 

전통적인 키워드 기반 검색의 한계

  • 입력한 정확한 단어만 검색합니다.
  • 예: hello world를 입력하면 정확히 "hello world"만 찾습니다.
  • ‘비용 절감’ 입력 시 ‘운영 효율성’ 같은 관련 문서는 누락

 

 

벡터 데이터베이스가 필요한 이유

  1. 의미 기반 검색 (Semantic Search)
    • 키워드가 아닌 의미를 이해합니다.
  2. 확장성 (Scalability)
    • 수백만~수십억 건의 문서도 효율적으로 처리할 수 있습니다.
  3. 속도 (Speed)
    • 유사도 기반 검색으로 수 밀리초 내에 가장 관련성 높은 결과를 찾아냅니다.

이처럼 벡터 데이터베이스는 단순한 단어 일치가 아닌 의미 기반 검색을 통해

백그라운드에서 빠르고 정확하게 검색을 수행합니다.

 

 

 

 

 

 

 

'Study > Database' 카테고리의 다른 글

[Linux] DB 계정생성 및 db 생성  (0) 2024.12.23
[DB] 데이터베이스의 기초  (0) 2024.12.21
[SQL] SQL 기초  (0) 2024.12.21
[SQL] SQL 함수  (0) 2024.12.21
[SQL] 데이터정의어(DDL)1  (0) 2024.12.21