본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 25. 15:09

RAG의 이미지 문서 검색 기법을 조사하고 사용해 보았다

요약

RAG 시스템에서 이미지 문서를 검색하는 다양한 기법을 조사하고 비교 실험했습니다. 단일 벡터 방식과 ColPali를 활용한 멀티 벡터 방식의 차이점을 분석하고, ViDoRe 벤치마크를 통해 검색 성능을 검증했습니다.

핵심 포인트

  • 단일 벡터 방식은 가볍지만 레이아웃 정보 손실 위험이 있음
  • ColPali는 멀티 벡터 검색을 통해 문서의 국소적 정보를 유지함
  • ViT 기술이 단일 및 멀티 벡터 방식 모두의 기반이 됨
  • OCR 기반 텍text 추출, Cohere 멀티모달, ColPali 모델을 비교 검증함

안녕하세요, 주식회사 NeurestX의 Tanizaki입니다.

RAG (Retrieval-Augmented Generation / 검색 증강 생성)란, 생성 AI가 답변을 생성할 때 외부 지식을 검색·참조하는 기술입니다. 검색 대상은 텍스트 문서뿐만 아니라 Web 페이지, 표 데이터, 이미지 등 다방면에 걸쳐 있습니다. 이번에는 RAG가 어떻게 사용자의 질문에 대응하는 이미지를 검색하고 있는지 궁금하여, 조사하고 사용해 보았습니다. 따라서 여기서는 이미지를 대상으로 한 이야기만 하겠습니다.

'Vision RAG를 이해하자: 단일 벡터형 vs 멀티 벡터형의 차이와 엔터프라이즈 활용'을 많이 참고했습니다.

RAG에서는 사용자의 질문과 관련된 문서나 이미지를 검색하여 그 내용을 생성 AI에게 전달합니다. 이 기사에서는 검색 부분에 초점을 맞춥니다.

이미지 내의 문장을 텍스트화하여 임베딩(Embedding)하는 전통적인 방법입니다. 가볍지만, 표나 레이아웃 정보가 손실됩니다.

2021년에 OpenAI가 CLIP이라는 모델을 발표하며, 이미지와 문장을 동일한 벡터 공간에 임베딩할 수 있게 되었습니다. Vision Embedding의 시대가 시작되었고, OpenAI CLIP, ALIGN, SigLIP, JinaCLIP 등 파생 모델도 많이 탄생했습니다. 하지만 이미지를 하나의 벡터로 변환하기 때문에 정보를 놓치는 경우가 많아, 장문 이해나 문서 이미지 처리에 취약했습니다.

2024년에는 ColPali라는 모델이 등장하여, 문서 이미지를 여러 개의 패치(Patch)로 분할하여 표현하는 멀티 벡터 검색(Multi-vector Search)이 주목받았습니다. 이는 텍스트 검색 분야에서 제안되었던 ColBERT의 Late Interaction을 문서 이미지 검색에 응용한 것입니다. 기존의 단일 벡터 방식에서는 손실되기 쉬웠던 국소적인 정보를 유지할 수 있는 반면, 저장하는 벡터 수나 검색 시의 계산량이 증가한다는 과제도 있습니다.

이는 Late Interaction의 개념으로, 쿼리(Query)와 문서(Document)로부터 스코어를 도출하는 메커니즘입니다.

2020년경부터 Vision Transformer (ViT)가 등장하여, 이미지를 작은 패치로 분할하고 Transformer로 처리하는 수법이 보급되었습니다. 기존의 CNN보다 광범위한 관계성을 포착하기 쉬워, 많은 Vision-Language Model의 기반이 됩니다. 이번 사례로 보면, 단일 벡터형과 멀티 벡터형은 모두 이 기술을 기반으로 하고 있습니다.

Google Colab에서 검증했습니다.

본 검증에서는 ViDoRe 벤치마크에서 공개된 「vidore/docvqa_test_subsampled」의 상위 90건을 사용했습니다. ViDoRe는 문서 이미지 검색 평가를 목적으로 정비된 데이터셋이며, 쿼리와 대응하는 문서 이미지의 정답 쌍이 부여되어 있습니다.

검색 성능 평가에는 Recall@1, Recall@5, MRR (Mean Reciprocal Rank)을 사용했습니다.

Recall@1은 검색 결과 1위에 정답이 포함될 확률, Recall@5는 검색 결과 상위 5건 이내에 정답이 포함될 확률을 나타냅니다. 또한, MRR은 정답이 검색 결과 몇 위로 나타나는지를 고려하는 지표로, 상위에 정답이 표시될수록 높은 값을 가집니다.

본 검증에서는 다음을 이용한 3가지 수법을 시도해 보았습니다.

문서 이미지에 Tesseract OCR을 적용하여 텍스트를 추출하고, 그 텍스트를 BGE-M3로 벡터화하여 검색을 수행했습니다. BGE-M3는 베이징 지위안 인공지능 연구원 (BAAI)이 공개한 다국어 대응 임베딩 모델이며, 일본어를 포함한 100개 이상의 언어에 대응합니다.

Cohere가 제공하는 멀티모달 (Multimodal) 임베딩 모델로, 텍스트뿐만 아니라 이미지도 동일한 벡터 공간에 임베딩할 수 있습니다. 이미지 전체를 단일 벡터로 표현하는 단일 벡터 방식의 대표 사례로 채택했습니다.

ViDoRe를 통해 공개된 문서 이미지 검색용 멀티 벡터 모델입니다. Vision Transformer를 사용하여 문서 이미지를 여러 개의 패치로 분할하고, 각각을 개별 벡터로 유지합니다. 본 검증에서는 멀티 벡터 방식의 대표 사례로 채택했습니다.

Recall@1Recall@5MRR
Tesseract OCR + BGE-M30.410.55
...0.860.74

이번 결과에서는 OCR+BGE-M3, Cohere Embed v4, ColQwen2.5 순으로 성능이 향상되었습니다. ColQwen2.5는 이미지 문서(Image Document)를 여러 개의 패치(Patch)로 분할하여 처리하기 때문에, 문서 내의 세밀한 정보를 유지할 수 있어 높은 검색 성능을 보인 것으로 생각됩니다. 반면, 높은 검색 성능을 실현할 수 있는 반면 계산 자원(Computing Resources)의 소비가 커서, 실행 환경에 따라 충분히 다루지 못하는 경우도 있을 수 있으므로 반드시 최적의 수법이라고는 할 수 없습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0