티스토리 뷰

Development/Database

[DB]Vector DB

Vagabund.Gni 2023. 9. 19. 10:47
728x90
반응형

목차

     

    벡터 데이터베이스는 벡터 검색 기반 환경을 만들고자 하는 개발자를 위한 것이다.

     

    개발자는 임베딩으로 생성된 벡터를 벡터 데이터베이스에 인덱싱 할 수 있으며, 이를 통해

     

    인접 벡터를 쿼리 하여 유사한 데이터를 찾을 수 있다.

     

    위 설명은 AWS 공식문서에 쓰인 번역문이다.

     

    https://aws.amazon.com/ko/what-is/vector-databases/

     

    벡터 데이터베이스란? 벡터 데이터베이스 설명 - AWS

    정보는 다양한 형태로 제공됩니다. 텍스트 문서, 리치 미디어, 오디오와 같이 비정형 정보도 있고 애플리케이션 로그, 테이블, 그래프와 같이 정형화된 정보도 있습니다. 인공 지능과 기계 학습(

    aws.amazon.com

    그러니까 한 마디로 말하자면 고차원 데이터를 벡터 형태로 임베딩 하여 보관하고 연산하고 쿼리 하기 위한 DB라는 뜻이다.

     

    그렇군.. 하고 넘어가기엔 마음에 걸리는 단어가 두 개 있다. 먼저 간단하게 정리하고 이어가자.

     

    Vector

     

    벡터는 수학이나 물리학에서 사용되는 것과 비슷한 맥락에서 사용된다.

     

    비슷한 맥락이라는 말은 다른 성질을 가지고 있다는 것을 내포하는데, 가장 유사한 부분은

     

    DB와 물리학에서 쓰이는 벡터는 둘 다 데이터의 배열이나 리스트를 나타낸다는 점이다.

     

    차이점은 여러가지가 있지만, 다 알아볼 필요는 없고

     

    이 글에서 사용되는 벡터란 하나로 묶인 데이터의 배열, 혹은 리스트라고만 생각하면 된다.

     

    예를 들자면 내적, 외적과 같은 연산이 정의되지 않을 수 있다는 뜻이다.

     

    Embedding

     

    임베딩이란 한 마디로 말하면 고차원 데이터를 기계가 이해할 수 있는 벡터로 바꾸는 과정을 가리킨다.

     

    이 과정에서 중요한 것은 당연하게도 데이터의 의미나 맥락이 변하지 않는 것이며

     

    자연어 처리를 비롯한 인공신경망 기술에서 필수적인 부분으로 자리 잡고 있다.

     

    Vector Database

     

    그러니까 정리하자면 벡터 DB란, 위와 같이 벡터로 임베딩 된 데이터를 다루기 위한 DB라고 볼 수 있다.

     

    또한 위 그림에서 보듯이 쿼리에 대한 결과로 앱에게 특정 벡터를 돌려주는 것을 볼 수 있는데,

     

    이 과정에서 벡터 사이의 유사도를 재는 방법은 크게 다음의 세 가지가 있다고 한다.

     

    1. 코사인 유사도: 두 벡터 사이의 각도를 측정해서 -1부터 1까지 범위로 나타낸다
    2. 맨해튼 거리: 두 벡터의 좌표 차이의 절댓값을 계산(L1)
    3. 유클리드 거리: 말 그대로 유클리드 공간에서 두 벡터 사이의 직선거리, 0부터 무한대까지의 범위를 갖는다.(L2)

    기존의 DB와 비교했을 때 벡터 DB의 장점은, 당연한 듯이 설명되어 있지만 의미를 기반으로 하는 쿼리가 가능하다는 점이다.

     

    단순히 아스키코드와 단어를 매칭시키는 것이 아닌, 수백-수천 차원으로 이루어진 벡터를 저장함으로써

     

    데이터의 의미와 데이터간의 관계를 측정하는 것이 가능하다.

     

    이는 쿼리 자체도 벡터로 변환한 뒤 유사성을 측정하기 때문이라는데, 써보기 전까진 잘 와닿지 않을 것 같다.

     

    어쨌거나 이런 특성 덕분에 자연어 처리와 같은 머신러닝, 딥러닝에서 자주 쓰일 수밖에 없는 것이다.

     

    추가로 어떤 임베딩을 사용하느냐에 따라 담기는 의미가 달라진다고 하는데,

     

    세세한 알고리즘은 천천히 알아보도록 하자.

     

    일단 벡터 DB 초급반, 끝!

    반응형

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

    [Database]postgreSQL  (1) 2023.10.18
    [Database]NoSQL(mongoDB)에서 1:N, N:M 구현  (0) 2023.07.09
    [Database]mongoDB의 '_id', 또는 auto-increment ID  (0) 2023.07.03
    [Database]MariaDB  (0) 2023.05.10
    [Database]WebFlux에서 R2DBC 기본설정  (0) 2023.05.06
    [Database]SQLite  (0) 2023.04.07
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/05   »
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    글 보관함