복잡한 정보를 놓치지 않는 검색, 가능한가?
문서 안에 핵심 정보는 꼭 텍스트로만 존재하지 않습니다. 이미지 속 차트, 인포그래픽, 도표에 숨겨진 데이터는 텍스트 기반 검색 시스템이 놓치는 부분입니다. OCR을 거쳐 텍스트로 변환한다고 해도, 원래 문맥이 손실되기 십상입니다. 이 문제는 기업이 멀티모달 데이터를 검색하려 할 때 더욱 심각해집니다.
이런 배경 속에서 등장한 것이 ‘멀티모달 RAG(Retrieval-Augmented Generation)’입니다. NVIDIA가 새롭게 발표한 Llama 3.2 NeMo Retriever 멀티모달 임베딩 모델은 비전-언어 모델 기반의 강력한 문서 검색 성능을 보여줍니다. 작지만 강한 이 모델은, 이미지와 텍스트가 혼합된 복잡한 문서에서도 정확하게 필요한 정보를 찾아냅니다.
이 블로그에서는 멀티모달 RAG의 배경과 문제의식, Llama 3.2 NeMo Retriever의 구조와 특징, 실제 사용법, 성능 검증 결과까지 상세히 정리합니다.
멀티모달 RAG란 무엇인가?
기존의 RAG 시스템은 문서 내 텍스트만을 분석 대상으로 삼아, 정보 추출 및 응답 생성을 수행합니다. 하지만 현대의 비즈니스 문서는 단순한 텍스트를 넘어 이미지, 도표, 차트, 스캔 파일 등 다양한 형식의 데이터로 구성돼 있습니다. 이때 단순히 텍스트만 임베딩하여 검색하는 방식은 정보의 상당 부분을 놓치게 됩니다.
이를 보완하기 위해 비전-언어 모델(VLM: Vision-Language Model) 기반의 멀티모달 RAG 구조가 등장했습니다. 이 구조는 이미지와 텍스트를 함께 임베딩하여 검색 대상에 포함시킴으로써, 시각 정보와 언어 정보를 동시에 고려할 수 있게 합니다.
기존 텍스트 기반 검색 파이프라인의 한계
OCR(광학 문자 인식), 텍스트 파싱 등 기존의 문서 처리 방식은 여러 단계를 거쳐 정보를 추출해야 합니다. 이 과정에서 다음과 같은 한계가 발생합니다.
- 이미지 내 정보가 제대로 추출되지 않음
- 슬라이드, 표, 차트 등은 의미 맥락이 파괴됨
- PDF 추출 파이프라인이 복잡하고 비효율적임
즉, 시각 정보를 포함한 복잡한 문서를 텍스트만으로 표현하는 데에는 한계가 있으며, 이는 검색 정확도 저하로 이어집니다.
Llama 3.2 NeMo Retriever 모델 소개
NVIDIA는 멀티모달 문서 검색을 위해 Llama 3.2 NeMo Retriever라는 소형 멀티모달 임베딩 모델을 발표했습니다. 이 모델은 다음과 같은 구성 요소로 이루어져 있습니다.
- 비전 인코더: SigLIP2-So400m 기반
- 언어 모델: Llama-3.2-1B
- 프로젝션 레이어: 이미지 임베딩을 LLM 공간에 맞게 변환
이 모델은 이미지 문서와 쿼리 간의 의미적 유사도를 파악하기 위해 대조 학습(contrastive learning) 방식으로 파인튜닝되었으며, 하드 네거티브 샘플링을 통해 학습 성능을 극대화했습니다.
또한 2,048차원의 임베딩 벡터를 생성하며, 텍스트와 이미지 간 의미 정렬이 가능해집니다.
멀티모달 임베딩의 강점
기존 텍스트 기반 임베딩은 OCR 정확도에 의존하며, 문서의 시각적 구조나 맥락은 반영하지 못합니다. 반면 멀티모달 임베딩은 원본 문서의 이미지를 그대로 입력으로 사용해, 다음과 같은 장점을 갖습니다.
- 시각 정보 보존
- 다양한 문서 형식 적용 가능
- 파이프라인 단순화
- 텍스트 의미와 레이아웃 정보 동시 반영
결국, 이미지와 텍스트 양쪽 정보를 동시에 학습한 임베딩은 문서 검색의 정확도와 현실 적용성을 모두 높이는 방향으로 작용합니다.
실제 사용 예시: 텍스트 쿼리와 이미지 임베딩 생성
텍스트 쿼리 임베딩
from openai import OpenAI
client = OpenAI(
api_key="$API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC",
base_url="https://integrate.api.nvidia.com/v1"
)
response = client.embeddings.create(
input=["What is the civil caseload in South Dakota courts?"],
model="nvidia/llama-3.2-nemoretriever-1b-vlm-embed-v1",
encoding_format="float",
extra_body={"modality": ["text"], "input_type": "query", "truncate": "NONE"}
)
print(response.data[0].embedding)
이미지 임베딩 생성
import base64
import requests
from openai import OpenAI
image_source = "https://assets.ngc.nvidia.com/products/api-catalog/nemo-retriever/embedding/court-sizing-metrics.png"
if image_source.startswith(('http://', 'https://')):
response = requests.get(image_source)
image_b64 = base64.b64encode(response.content).decode()
else:
with open(image_source, "rb") as image_file:
image_b64 = base64.b64encode(image_file.read()).decode()
client = OpenAI(
api_key="$API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC",
base_url="https://integrate.api.nvidia.com/v1"
)
response = client.embeddings.create(
input=[f"data:image/jpeg;base64,{image_b64}"],
model="nvidia/llama-3.2-nemoretriever-1b-vlm-embed-v1",
encoding_format="float",
extra_body={"modality": ["image"], "input_type": "passage", "truncate": "NONE"}
)
print(response.data[0].embedding)
성능 검증: 벤치마크 결과
Llama 3.2 NeMo Retriever는 다양한 공개 데이터셋에서 뛰어난 성능을 입증했습니다. 특히 아래 두 가지 멀티모달 데이터셋에서의 Recall@5 수치가 주목할 만합니다.
데이터 셋 | 쿼리 수 | 멀티모달 | 차트 | 텍스트 | 테이블 | 인포그래픽 |
DigitalCorpora | 991 | 84.5% | 88.1% | 86.9% | 75.3% | – |
Earnings | 628 | 66.1% | 89.9% | 96.0% | 44.6% | 55.0% |
- 모든 항목에서 20억 파라미터 이하 모델 중 가장 높은 성능 기록
- 차트와 텍스트 기반 문서 검색에서 특히 우수한 성능
멀티모달 검색의 새로운 기준
지금까지의 검색 시스템은 텍스트만 보는 방식이었습니다. 하지만 현실은 이미지, 표, 차트까지 포함한 복합적인 문서가 많습니다. NVIDIA의 Llama 3.2 NeMo Retriever는 이러한 현실을 정확히 반영한 모델입니다.
- 작지만 강력한 성능
- 이미지와 텍스트를 동시에 이해
- 실제 기업 환경에 적용 가능한 정확도와 효율성
텍스트 기반 검색의 한계를 뛰어넘고 싶은 기업이라면, 지금이 멀티모달 RAG 파이프라인 구축을 고려할 시점입니다. NVIDIA NeMo Retriever는 이러한 전환을 보다 빠르고 실용적으로 이끌 수 있는 핵심 솔루션입니다.
'인공지능' 카테고리의 다른 글
AI 에이전트와 함께 코딩하기: 스펙부터 프로덕션까지 책임지는 IDE, Kiro (0) | 2025.07.21 |
---|---|
“코딩 없이 웹앱을 만든다고?” 누구나 개발자가 되는 시대, v0의 비밀 (0) | 2025.07.21 |
Grafana를 API로 자유자재로 제어하는 방법: MCP Server 완전 정복 (0) | 2025.07.20 |
AI 에이전트 성능, 결국은 ‘Context’가 좌우한다 – Manus 프로젝트에서 배운 7가지 핵심 전략 (0) | 2025.07.20 |
개발자의 시간을 아껴주는 AI 파트너, Gemini Code Assist의 Agent Mode와 IDE 기능 업데이트 (0) | 2025.07.20 |