이미지와 텍스트 데이터를 저장하는 벡터DB란?
생성형 AI는 이미지와 텍스트 같은 비정형 데이터를 이해하고 활용하며, 이를 숫자와 벡터로 변환해 처리합니다. 이러한 데이터를 효율적으로 저장하고 검색하기 위해 벡터 데이터베이스(Vector DB)가 필요합니다. 벡터 DB는 LLM 파인튜닝과 검색증강생성(RAG) 등에 활용되며, 기존 데이터베이스와 차별화된 특성을 지닙니다. 이번 글에서는 벡터 DB의 개념과 기존 DB와의 차이를 살펴봅니다.

비정형 데이터를 고차원 공간에 저장할 수 있는 벡터DB
생성형 AI는 이미지와 텍스트 등 다양한 형태의 비정형 데이터(Unstructured Data)를 이해하고 사용자의 요청에 따라 생성해 내는데에 탁월한 능력을 보입니다다. GPT나 Gemini와 같은 초거대언어모델(LLM)뿐만 아니라 미드저니와 같은 이미지 생성 AI 역시 정형화된 데이터(Structured Data)가 아닌 비정형 데이터를 다룬다는 점에서 그 원리는 동일합니다. 최근에는 모든 LLM이 데이터 형태의 구분 없이 입출력이 가능한 멀티모달(Multimodal) 형태로 출시되고 있는 것이 트렌드이기도 합니다.
그럼 이미지나 텍스트와 같은 데이터를 생성형 AI 모델은 어떻게 인식하는 것일까요? 컴퓨터는 기본적으로 0(Off)과 1(On)의 이진수로 이루어진 세계에 살고 있기 때문에 이러한 비정형 데이터를 있는 그대로 인식할 수는 없습니다. 컴퓨터가 이미지, 영상, 텍스트 등 다양한 형태의 데이터를 인식하기 위해서는 우선 숫자와 벡터로 변환할 필요가 있습니다. 예를 들어, 이미지는 각 픽셀 값으로, 텍스트는 단어의 임베딩 벡터로, 영상은 프레임의 특징 벡터로 변환되어 데이터의 형태로로. 이렇게 변환된 벡터들은 고차원 공간에서 각 데이터의 의미를 숫자적으로 표현하지요.
생성형 AI 모델을 파인튜닝 하거나 검색증강생성(RAG, Retrieval Augmented Generation) 파이프라인을 구축하는 데에 있어서 이처럼 변환된 방대한 양의 비정형 데이터를 저장할 수 있는 특수한 형태의 데이터베이스가 필요합니다. 이 때 벡터DB 혹은 벡터 스토어(Vector Store)라는 새로운 형태의 데이터베이스가 필요한 것입니다. 벡터 DB의 개념에 대해 살펴보고 벡터 DB가 기존의 DB와 비교해 어떤점이 다른지 소개하도록 하겠습니다.
1. 비정형 데이터를 저장하는 벡터 DB란?
벡터 DB는 그 이름에서도 알 수 있듯이 임베딩된 고차원 벡터들을 저장하고 효율적으로 검색할 수 있게 도와주는 일종의 데이터베이스입니다. IT 업계에 종사하고 계신 분들은 이미 RDB(Relational Database) 즉 관계형 데이터베이스나 NoSQL(Not Only SQL)과 같은 개념에 익숙하실 것입니다.
벡터 DB는 본질적으로는 기존의 데이터베이스와 그 원리나 개념이 크게 다르지 않습니다. 가장 큰 차이점은 기존의 관계형 DB가 행(row)과 열(column)의 2차원 형식으로 데이터를 표현하는 반면, 벡터 DB는 다차원 공간으로 그 개념을 확장시켰다는 것입니다. 물론 기존의 NoSQL이 비정형 및 반정형(semi-structured) 데이터 저장을 위한 기술로써 개발되었지만, 본격적인 고차원 데이터의 저장 기술은 벡터DB의 발전과 함께 시작되었다고 해도 과언이 아닙니다.
2. 관계형 데이터베이스(RDB)
기존의 데이터 베이스는 쉽게 말해 엑셀(Excel)을 생각하면 이해하기 쉽습니다. 행과 열로 구성된 이차원 테이블과 그들의 관계를 나타낸 것이 기존의 데이터베이스라고 생각해볼 수 있습니다. RDB (Relational Database)와 NoSQL 데이터베이스는 전통적인 데이터베이스 관리 시스템(DBMS)의 두 가지 주요한 방식입니다. 이 둘은 비슷하면서도 각각의 데이터 저장 방식과 쿼리 처리 방식에서 매우 다르기도 합니다. 먼저, 각 데이터베이스의 특징을 간단히 살펴보겠습니다.
RDB는 데이터를 테이블 형식으로 저장하고, 각 테이블 간의 관계를 정의합니다. 데이터를 정형화된 형식으로 저장하고, SQL(Structured Query Language)을 사용하여 데이터를 조회, 삽입, 수정, 삭제합니다. RDB는 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 준수하여 데이터의 일관성과 무결성을 2 보장합니다.
관계형 데이터베이스는 데이터의 구조가 명확하고, 관계를 정의하는 데 유리하며, 트랜잭션 처리와 데이터 무결성 보장이 용이하다는 장점이 있는 반면, 데이터 구조가 미리 정의되어 있어 유연성이 떨어지고, 대규모 데이터나 비정형 데이터 처리에 어려움이 있다는 한계점이 있습니다.
3. 비정형 및 반정형 데이터 저장에 특화된 NoSQL(Not Only SQL)
NoSQL은 "Not Only SQL"의 약자로, 전통적인 관계형 데이터베이스 시스템의 제한을 벗어나기 위해 등장한 데이터베이스입니다. NoSQL은 데이터 저장 방식이 기존의 관계형 데이터베이스에 비해 훨씬 더 다양하며, 문서 기반, 키-값 기반, 열 기반, 그래프 기반 등 여러 종류가 존재합니다.
NoSQL 역시 유연한 데이터 모델을 제공하고, 대규모 분산 데이터 처리에 유리하고 다양한 유형의 데이터를 처리할 수 있어 기존의 비정형 데이터(예: 텍스트, 이미지, 로그 등) 저장에 장점을 가지는 반면에 트랜잭션 처리와 데이터 일관성 보장이 상대적으로 약할 수 있으며, 복잡한 쿼리 처리에 여전히 제약이 있습니다.
4. 고차원 데이터의 세계로 : 다양한 형태의 벡터 DB(Vector Database)
RDB와 NoSQL이 텍스트 기반 데이터나 정형화된 데이터(Structured Data) 혹은 반정형 데이터(Semi-structured Data)를 처리하는 데 강점을 가진다면, 벡터 DB는 비정형 데이터 특히 고차원 벡터 데이터를 처리하는 데 최적화된 데이터베이스입니다. 벡터 DB는 주로 유사도 검색(similarity search)을 위해 설계되었으며, 임베딩된 벡터 데이터를 효율적으로 저장하고 빠르게 검색할 수 있는 기능을 제공한다는 점이 기존의 RDB나 NoSQL과 다른 점이라고 할 수 있습니다.
우선 벡터 DB는 관계형 데이터베이스와 구조부터가 다릅니다. RDB는 데이터가 테이블 형식(행과 열)으로 구조화되는 반면, 벡터 DB는 벡터 공간에서 데이터를 다루며, 각 데이터는 고차원 벡터로 표현됩니다. 즉, 벡터 DB는 수학적 특성을 이용해 데이터를 3차원 이상의 다차원 공간에 모델링합니다.
쿼리 방식 또한 다릅니다. RDB는 개발자들에게 친숙한 SQL(Structured Query Language)를 사용하여 데이터를 조회하는 반면에 벡터 DB는 벡터 유사도(Vector Similarity)를 기반으로 검색합니다. 사용자가 입력한 쿼리 벡터와 가장 유사한 벡터를 빠르게 찾는 것이 주요 기능이지요. 예를 들어, 텍스트 쿼리나 이미지에서 생성된 벡터를 검색하여, 가장 관련성이 높은 데이터 항목을 반환하는 방식입니다.
마찬가지로 검색 방식 역시 매우 다른데, RDB는 정해진 관계를 기반으로 데이터를 처리하는 반면에 벡터 DB는 고차원 공간에서의 유사도를 기반으로 데이터를 검색합니다. 따라서 벡터 DB는 자연어 처리(NLP), 이미지 검색 등과 같은 복잡한 검색 작업에 유리하다고 할 수 있습니다.
벡터 DB의 개념과 어떻게 벡터 DB가 고차원 데이터를 저장할 수 있는지 알아보았습니다. RDB에는 MySQL, PostgreSQL, Oracle, SQL Server 등 다양한 종류의 데이터 베이스가 있고, NoSQL에도 MongoDB, Cassandra, Redis, Neo4 j 등 다양한 종류가 있듯이 벡터 DB에도 한 가지 종류만 있는 것은 아닙니다.
벡터 DB의 세계에도 ChromaDB, Elastic Search, Faiss 등 다양한 특징과 기능들을 가진 벡터 DB가 많습니다. 기존의 NoSQL을 지원하던 DB에 벡터 DB 기능이 추가된 것들도 있습니다. 따라서 벡터 DB를 활용할 때에는 개발 목적과 비용 및 성능 등 다양한 요소를 고려하여 가장 적절한 벡터 DB를 선택하는 것이 중요합니다.
문과 출신으로 AI 스타트업에서 데이터 사이언티스트로 일하고 있습니다. |
* 슈퍼브 블로그의 외부 기고 콘텐츠는 외부 전문가가 작성한 글로 운영 가이드라인에 따라 작성됩니다. 슈퍼브 블로그에서는 독자분들이 AI에 대한 소식을 더 쉽고 간편하게 이해하실 수 있도록 유용한 팁과 정보를 제공하고 있습니다.