ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • vectorDB와 GraphDB
    CS/DataBase 2025. 9. 16. 14:57

    자동목차

     

     

    데이터베이스에는 다양한 종류가 있습니다.

    흔히 아는 데이터베이스 종류로는 RDBMS가 있습니다.

    RDBMS는 오랫동안 사용되어왔지만 최근 데이터 양, 데이터 형식, 데이터 관계가 많아지고 ai가 등장하면서 데이터 관리에 대해 더 많은 요구사항이 생겼습니다. 그래서 등장한 데이터베이스가 vectorDB와 graphDB입니다

     

    Vector Database

    벡터 데이터베이스는 텍스트, 이미지, 오디오 등 비정형 데이터를 수치적인 '벡터' 형태로 저장하고 검색하는 데 특화된 데이터베이스입니다.

    기존 관계형 데이터베이스가 정확히 일치하는 데이터를 검색하는 것과 달리, 벡터 데이터베이스는 '벡터 임베딩'을 활용해 데이터 간의 의미적 유사성을 측정하여 가장 유사한 항목을 찾아내는 '유사성 검색'을 수행합니다. 

     

    예를 들어, 사용자가 “동물 관련된 데이터를 알려줘”라고 검색한다고 가정해 보겠습니다.
    관계형 데이터베이스에서는 데이터 안에 정확히 “동물”이라는 키워드가 포함되어 있어야 하거나, 아니면 매우 복잡한 쿼리 연산을 통해서만 검색이 가능합니다.

    반면 벡터 데이터베이스에서는 유사도 검색을 활용하기 때문에, “동물”이라는 단어가 없어도 맥락상 의미가 가까운 데이터를 찾아낼 수 있습니다.
    예를 들어, “고양이”, “강아지”, “반려동물 사료 시장”, “동물병원 예약 데이터”와 같은 결과들이 함께 반환될 수 있습니다.

    이처럼 벡터 데이터베이스는 의미 기반 검색이 가능하다는 점에서 차별화되며, 인공지능, 검색 증강 생성(RAG), 추천 시스템, 이미지·음성 검색 등 다양한 분야에서 활발하게 활용되고 있습니다.

    출처 : https://www.mongodb.com/ko-kr/resources/basics/databases/vector-databases

     

    또한 벡터 임베딩을 활용한 "벡터 사용 데이터베이스"도 늘어나고 있습니다.

    벡터 사용 데이터베이스란, 기존의 정형 데이터뿐만 아니라 데이터를 벡터 임베딩해 저장하여 유사성 검색을 지원하는 데이터베이스를 말합니다. 즉, 단순히 벡터 전용 DB를 따로 쓰지 않고도 기존 데이터베이스 안에서 벡터 기반 검색 기능을 함께 활용할 수 있는 데이터베이스입니다.

    관계형 데이터베이스 중에서는 대표적으로 PostgreSQL이 있는데, 여기에 pgvector라는 확장 지원합니다. 이를 이용하면 임베딩 벡터를 Postgres 테이블에 저장하고, SQL 문법을 그대로 활용하면서 유사성 검색까지 수행할 수 있습니다.

    이외에도 Elasticsearch, MongoDB 등 다양한 데이터베이스 및 검색엔진에서 벡터 인덱스를 지원하거나 전용 기능을 제공하고 있습니다.

     

     

    Graph Database

    관계형 데이터베이스는 테이블과 속성으로 구성되어있으며 테이블간의 관계 역시 또 다른 테이블로 표현됩니다.

    반면, 그래프 데이터베이스는 데이터를 노드, 속성, 간선으로 표현합니다. 따라서 데이터간의 "관계"를 직관적으로 나타내고 탐색하는 데 강력한 장점을 가집니다.

     

    관계형 데이터베이스에서 다음과 같은 테이블 구조가 있다고 가정하겠습니다.

    • 교수 테이블: 교수 id
    • 학생 테이블: 학생 id
    • 강의 테이블: 강의 id
    • 수강 테이블: 학생 id, 강의 id

    만약 이 상황에서 교수도 강의를 수강할 수 있게된다면 어떻게 설계할 수 있을까요?

    • 방법 1 : 학생과 동일하게 수강 테이블에 교수를 추가한다. -> 이 경우, 수강 테이블에 교수id라는 컬럼을 추가해야합니다.
    • 방법 2 : 교수가 강의를 수강하는 테이블을 추가한다. -> 이 경우, 유사한 구조의 테이블이 2개가 생겨버립니다.

    또한, '학생이 수강하는 강의의 교수 이름'과 같은 복잡한 관계를 찾으려면 4개의 테이블 조인이 필요합니다 .

     

    반면 그래프 데이터베이스에서는 단순히 관계선을 추가하는 것만으로도 표현이 가능하며, 데이터 간의 연결을 훨씬 직관적이고 유연하게 탐색할 수 있습니다.

    Knowledge Graph

    또한, 그래프 데이터베이스는 관계형 데이터베이스보다 사람의 생각의 흐름과 더 유사한 방식으로 데이터를 연결하고 탐색할 수 있습니다.

    이로 인해 데이터는 단순한 값의 모음이 아니라, 의미를 가진 지식으로 확장되어 활용될 수 있습니다.

    “서울시장 A 씨, B 기업 C 대표와 만나 스마트시티 프로젝트 협약 체결”

    기사 요약:
    • 서울시장 A는 B 기업의 C 대표자와 만나 “스마트시티 프로젝트”에 대해 협약을 맺었다.
    • 이번 협약에는 D 기관(정부 기관)이 참여했다.

     

    다음과 같은 기사 내용이 있을때 이 기사 내용을 데이터로 표현하고자한다면, 관계형 데이터베이스에서는 표현하기가 어렵습니다.

    하지만 이 기사를 그래프로 표현한다면 다음과 같이 표현할 수 있습니다.

    이렇게 현실 세계의 개체와 이들 간의 관계를 그래프 구조로 표현한 것을 Knowledge Graph(지식 그래프) 라고 합니다.

    구글 검색에서도 사용되는 Knowledge Graph는 단순히 데이터를 저장하는 것을 넘어, “누가 누구와 어떤 관계에 있는가”라는 의미적 연결을 강조합니다.

    그리고 이러한 지식 그래프그래프 데이터베이스를 통해 표현할 수 있습니다.

     

     

    Knowledge Graph와 Vector database

    벡터DB만으로는 사람의 포괄적인 질문에 정확한 대답을 하기 어려울 수 있습니다.
    반대로 지식그래프만으로도 한계가 있습니다. 지식그래프는 개체간의 관계를 구조적으로 잘 표현하지만, 새로운 표현이나 맥락을 이해해내는 데에는 약할 수 있습니다.

     

    그래서 보통 지식그래프와 벡터 DB는 상호보완적으로 활용됩니다.

    • 1단계: 벡터 DB를 통해 질문과 의미적으로 가까운 데이터(텍스트·이미지·오디오)를 빠르게 검색
    • 2단계: 지식그래프를 통해 검색된 데이터를 토대로 관련 개체와 관계를 확장

    이 과정을 거치면, 사용자의 포괄적이고 맥락적인 질문에도 훨씬 더 정확하고 풍부한 답변을 제공할 수 있습니다.

    'CS > DataBase' 카테고리의 다른 글

    CTAS란?  (1) 2025.03.28
    트랜잭션 격리 수준  (0) 2025.02.23
    SQL의 윈도우 함수 (with PARTITION BY)  (2) 2025.02.17
    CTE(Common Table Expression)  (2) 2025.02.17
    [DataBase] 트랜젝션  (2) 2024.12.02
Designed by Tistory.