본문 바로가기
🟣 AI & ML

검색증강생성(RAG): 벡터 DB 기초

by 제리강 2023. 11. 1.

 

TL; DR

우리가 어떤 목적이나 데이터에 특화된 customized LLM 앱을 만들고 싶다고 해 보자.
그러면 사용자가 가진 데이터(예: 책, 대화 기록, 기술 문서 등)을 모델에게 추가로 학습시켜야 하는데, LLM을 학습시키는 것은 상당히 높은 컴퓨팅 자원을 요구한다.
그 뿐 아니라, LLM에 맞게 데이터셋과 코드를 별도로 구축해야 하는 번거로움이 있다.

이 때  하나의 대안이 되는 방법이 검색 증강 생성(RAG)이며, 벡터 DB는 RAG 프레임워크의 주요 구성 요소이다.
이 포스트에서는 먼저 RAG와 벡터 DB의 기초 개념과 그 활용 양상에 대해 간단히 살펴본다.

 

 

벡터

 벡터는 길이와 방향을 가진 수학적 객체를 말한다. 이는 $n$차원 벡터 공간에서의 위치를 나타내며, 이 위치는 길이가 $n$인 1차원의 숫자 배열로 표현된다. 데이터 과학에서의 벡터는, 이러한 정의에서 나아가 데이터의 특성이나 속성을 나타내는 숫자의 배열로 이해된다. 복잡한 데이터일수록 더 높은 차원의 벡터로 표현된다. 기계학습이나 인공지능 모델을 구축하기 위해서는 먼저 데이터를 모델이 이해할 수 있는 동일한 차원의 벡터로 변환해야 한다. 텍스트, 이미지, 음성과 같은 비정현 데이터 또한 임베딩(embedding)을 통해 벡터로 변환될 수 있다.

 

 

 

 

임베딩

 임베딩은 데이터를 모델이 이해할 수 있는 벡터 형태로 변환하는 기법이다. 임베딩은 고차원의 데이터를 저차원의 벡터로 압축하거나, 이미지나 텍스트같은 비정형 데이터를 정형 데이터인 벡터로 변환할 수 있다. 변환된 데이터는 모두 같은 차원의 벡터로 표현되며, 각 벡터는 해당 벡터 공간에서의 위치를 나타낸다.

 

 임베딩의 중요한 특징은 원본 데이터의 의미를 보존하며 변환이 이루어져야 한다는 것인데, 이는 유사한 데이터들이 벡터 공간에서 서로 근접하도록 임베딩된다는 것을 말한다. '유사하다'의 기준은 임베딩의 목적에 따라 설정된다.

 예를 들어, 같은 이미지 데이터라도 이미지의 색감을 기준으로 임베딩할 수도 있으며 이미지에 포함된 오브젝트를 기준으로 임베딩할 수도 있다. 전자로 임베딩한 경우,  붉은 색 이미지를 쿼리하면 붉은 계열의 이미지를 검색할 것이며 후자의 경우 쿼리 이미지 내에 고양이가 있다면 고양이가 포함된 이미지를 검색할 것이다. 이렇게 임베딩 모델은 사용자가 지정한 뱡향으로 데이터를 벡터 공간에 배치한다. 임베딩에는 데이터의 의미를 보존할 수 있는 함수나 알고리즘, 또는 사전 학습된(pre-trained) 임베딩 모델을 사용한다.

 

 

 

벡터 DB

 벡터 데이터베이스(이하 벡터 DB)는 데이터를 벡터 형태로 저장하는 데이터베이스 유형이다. 일반적인 데이터베이스는 각 데이터마다 특정 값을 할당하여 데이터를 인덱싱하고, 입력 쿼리에 대해 쿼리와 정확히 일치하는 결과를 반환한다. 반면, 벡터 DB는 원본 데이터와 임베딩과 과정을 거쳐 변환된 벡터 데이터를 함께 저장한다. 그리고, 입력 쿼리에 대해서 근사 최근접 항목(Approximate Nearest Neighbor, ANN) 검색 알고리즘에 기반한 벡터 인덱스를 통해 쿼리와 근사하게 일치하는 벡터 검색 결과를 빠르게 반환한다. ANN 및 벡터 인덱스 알고리즘을 통해 벡터 DB는 벡터 데이터의 양이 많아져도 검색 속도를 빠르게 유지할 수 있다. 벡터 DB는 생성 모델의 한계를 보완하기 위한 검색 증강 생성(Retrieval-Augmented Generation, RAG) 프레임워크에 필수적인 요소이다.

 

 

 

 

생성 AI 모델의 한계

 최근 ChatGPT, Bard, LLaMA 등 거대 언어 모델(Large Language Models, LLM) 기반 생성 AI 모델이 주목을 받았지만, 이들의 활용에는 다음과 같은 몇 가지 한계점이 존재한다.

  1. 외부 지식 데이터를 활용하고자 할 때, 프롬프트 입력 양의 제한 및 긴 프롬프트에 대한 비용 문제가 발생한다.
  2. 미세조정(fine-tuning) 과정에서 복잡한 데이터 처리와 높은 컴퓨팅 파워가 필요하다.
  3. 생성된 결과의 데이터 출처를 알 수 없기 때문에, 정확하지 않은 정보로 결과가 생성되는 환각(hallucination) 현상을 구분하기 어렵다.

LLaMA 2 모델 훈련에 사용된 컴퓨팅 자원(Touvron et al., 2023). 외부 데이터를 이용한 미세조정이나 추가 학습의 어려움을 알 수 있다.

 

 

 

검색 증강 생성

 검색 증강 생성(Retrieval-Augmented Generation, RAG)은 정보 검색 모델과 생성 모델을 결합한 기법으로, 외부 지식 데이터를 기반으로 모델의 생성 품질을 향상시킨다. 이 기법에서는 사전에 외부 지식 데이터를 임베딩하여 벡터화한 후 저장한다. 이후, 쿼리(질문)에 대해 벡터 검색을 통해 쿼리와 유사한 문서를 저장소에서 추출하여 결과 생성에 이용한다. RAG 프레임워크는 다음과 같이 생성 AI의 한계점을 개선할 수 있다.

 

  1.  RAG 프레임워크에서는 외부 지식 데이터가 별도의 검색 시스템에 저장되기 때문에 프롬프트에 모든 지식 데이터를 입력할 필요가 없으므로, 프롬프트 비용을 절약할 수 있다.
  2. 또한, 미세 조정과 달리 모델의 매개변수(parameter)를 변화시키는 추가 학습 과정 없이 생성 모델에 외부 지식 데이터를 반영할 수 있다.
  3. 변환된 벡터 데이터는 일반적으로 변환 전의 원 데이터와 함께 저장되므로, 생성된 결과의 출처가 되는 문서를 알 수 있다. 이는 답변의 정확도를 판단하고, 환각 현상을 구분하는 데에 유용하게 사용될 수 있다.

 

RAG 프레임워크(Lewis et al., 2020)

 

 

 

검색 증강 생성과 벡터 DB

 벡터 DB는 RAG에 필요한 벡터 저장소와 벡터 검색 알고리즘을 지원하는 데이터베이스 시스템이다. 일반 데이터베이스와 달리, 벡터 DB는 대용량의 벡터 데이터도 빠르게 검색할 수 있는 특수한 벡터 저장 및 검색 알고리즘을 탑재하고 있다. 이러한 기능은 RAG 기반 AI 어플리케이션을 만드는 데 필수적인 요소이다.

 

 벡터 DB는 생성 모델의 장기 기억 저장소(long-term memory) 역할을 하여 일관되고 정확한 결과를 생성할 수 있게 한다. 또한, 자연어뿐만 아니라 정형 데이터, 이미지, 영상, 음성과 같은 다양한 데이터도 벡터화하여 검색 증강 생성 시스템을 구축할 수 있다. 이러한 벡터 DB의 특징들은 생성 AI의 한계를 개선하여, AI 어플리케이션의 범용성과 효율성을 크게 향상시킬 수 있다.

 

 

 

 

벡터 DB 활용 영역

 벡터 DB 기반의 RAG 시스템 뿐 아니라, 검색 시스템이 필요한 다양한 영역에서 유용하게 사용될 수 있는데, 구체적인 활용 양상은 다음과 같다.

 

활용 영역 활용 양상
의료 및 생명 과학
  • 유전체학과 분자생물학에서, 벡터 DB는 유전자 서열, 단백질 구조 및 기타 분자 데이터를 저장하고 분석하는 데 사용
  • 이는 약물 발견, 질병 진단 및 개인 맞춤 의학에 도움을 줌
데이터 통합
  • 텍스트, 이미지, 수치 데이터 등 다양한 소스와 유형의 데이터를 벡터 DB로 통합해 활용할 수 있어 보다 포괄적인 분석과 통찰이 가능
다국어 검색
  • 벡터 DB는 다양한 언어로 이루어진 텍스트 문서를 공통 공간에 벡터로 표현함으로써 다국어 검색 엔진을 만드는 데 사용될 수 있으며, 언어 간 유사성 검색을 가능하게 함
그래프 데이터
  • 벡터 DB는 그래프 데이터를 효율적으로 표현하고 처리할 수 있으며, 이는 소셜 네트워크 분석, 추천 시스템 및 사기 탐지에서 중요한 역할을 함
고차원 데이터 관리
  • 벡터 DB는 고차원 데이터를 보다 효율적으로 처리할 수 있도록 설계되어 자연어 처리, 컴퓨터 비전, 유전체학 등의 응용 분야에 적합
기계 학습 및 인공지능
  • 벡터 DB는 ML 모델에 의해 생성된 임베딩을 저장하는 데 사용
  • 임베딩은 데이터의 본질적인 특징을 포착하며 클러스터링, 분류, 이상 탐지와 같은 다양한 작업에 사용됨
실시간 어플리케이션
  • 벡터 DB는 실시간 질의에 최적화되어 있어 전자상거래의 추천 시스템, 부정행위 탐지, IoT 센서 데이터 모니터링 등 빠른 응답이 필요한 애플리케이션에 적합
개인화 및 사용자 프로파일링
  • 벡터 DB는 시스템이 사용자 선호를 이해하고 예측하도록 함으로써 개인화된 경험을 가능하게 함
  • 이는 스트리밍 서비스, 소셜 미디어 및 전자상거래 플랫폼에서 활용될 수 있음
공간 및 지리 데이터
  • 벡터 DB를 통해 점, 선 및 다각형과 같은 지리적 데이터를 효율적으로 처리할 수 있음
  • 이는 지리 정보 시스템(GIS), 위치 기반 서비스 및 내비게이션 애플리케이션과 같은 애플리케이션에서 필수적

 

 

벡터 DB 시장 현황

 벡터 DB는 벡터 DB 전문 제품과 벡터 검색 기능을 부가적으로 지원하는 멀티 모델 형태의 벡터 DB 제품이 함께 분포한다. 전문 벡터 DB 시장에서는 Pinecone과 Chroma, Milvus가 잘 알려져 있는 편이며 멀티 모델 DB 중에서는 PostgreSQL의 pgvector와 Elasticsearch의 벡터 검색 기능이 널리 쓰이고 있는 것으로 보인다.

 

 

 

마치며

이 포스트에서는 RAG의 등장 배경과 RAG의 핵심 요소 중 하나인 벡터 DB에 대한 기본 개념을 알아보았다.
벡터 DB의 핵심은 단순히 벡터를 저장하는 것이 아닌, 벡터 인덱스와 벡터 검색 알고리즘이라고 할 수 있다.
이러한 벡터 DB의 알고리즘이나 관련 프레임워크에 대해서는 다음 포스트에서 계속 다루어 볼 계획이다.

 

 

댓글