본문 바로가기
Database/Vector

[Vector] Vector Database

by junseokoo 2025. 4. 11.

벡터

  • 단 하나의 숫자로 나타낼 수 없는 양을 벡터라고 한다.
  • 모델 학습을 위해 사용하는 데이터나 가중치 혹은 모델의 결과값으로 나타나는 값들을 모두 벡터의 형태로 취급.
  • 벡터 임베딩을 관리하기 위해 구축

벡터 임베딩

  • 데이터를 벡터로 전환.
  • 주제, 단어, 이미지 또는 기타 데이터를 숫자로 표현
  • 임베딩이라고도 하는 벡터 임베딩은 대규모 언어모델 및 기타 AI모델에 의해 생성된다.
  • 각 벡터 임베딩 사이의 거리는 벡터 데이터베이스 또는 벡터 검색 엔진이 벡터 간의 유사성을 결정할 수 있게 해준다.
  • 복합 비정현 데이터를 임베딩으로 변환.

벡터 데이터베이스

  • 벡터DB를 통해서 AI에 시맨틱 정보 검색, 장기 메모리 등의 고급 기능들을 구현 가능
    • 임베딩 모델을 통해서 인덱싱할 콘텐츠의 벡터 임베딩을 생성
    • 벡터 임베딩들을 벡터DB에 삽입. 임베딩이 어디에서 생성되었는지 오리지널 콘텐츠에 대한 레퍼런스를 포함
    • 어플리케이션이 쿼리를 하면, 같은 임베딩 모델을 이용하여 쿼리에 대한 임베딩을 생성하고, 이 임베딩으로 DB를 검색해서 비슷한 벡터 임베딩을 찾음 - 이 임베딩들은 오리지널 콘텐츠에 연결되어 있음

Similarity Score Computation

  • 코사인 유사도
    • 두 벡터사이의 이루는 각이 작을 수록 두 벡터가 유사하다고 판단하기 위해 벡터 사이의 각을 계산하는데,이 때 벡터의 내적이 코사인 값과 유사하여 쉽게 계산할 수 있다.결과적으로 이 유사도 값이 1에 가까울 수록 유사한 벡터라는 것이고, 유사한 의미의 문장으로 판단하는 것.
  • 맨해튼 거리
    • 각 차원의 차이의 절대값의 합
    • L1
  • 유클리드 거리
    • 유클리드 공간에서 두 벡터 사이의 직선거리
    • L2

생각정리

  • 기존 자연어 모델 Dialogflow, Watson, Brity등 에 존재하는 인텐트(발화의도)에 의존하지 않고, 최근 강세인 ChatGPT를 이용해서 내부 서비스의 자체 인텐트를 이용하여 사용자의 발화를 벡터 임베딩을 이용해 올바른 발화의도를 찾아 정확한 답변을 유도할 수 있는 작업을 진행중이다. 이를 위해서 벡터 임베딩에 대한 이해도가 필요했다. 현재 벡터 임베딩에 대해서 기초적인 공부를 하는중이며, 벡터 데이터베이스의 모델은 여러가지가 존재하지만, 현재 상황에 알맞게 도커라이징이 가능하고, 비용이 발생하지 않는 Milvus로 선택하였다.