ColPali: Efficient Document Retrieval with Vision Language Models

OCR·레이아웃·청킹 적재 파이프라인을 건너뛰고 페이지 이미지를 다중 벡터로 임베딩해 늦은 상호작용으로 검색하는 ColPali를 검토한다. 사다리 절제에서 이득의 주인이 VLM 교체(+0.2)가 아니라 늦은 상호작용(+22.5)임을 확인하고, 저장 30배와 벤치마크–질의 생성기 얽힘을 분리해 읽는다.

Jiphyeonjeon Team2026-08-3128 min read
colpalividorelate-interactionvisual-document-retrievalvision-language-modelspaligemmamulti-vector-retrievalocr-free

Paper: Faysse, M., Sibille, H., Wu, T., Omrani, B., Viaud, G., Hudelot, C., & Colombo, P. (2025). ColPali: Efficient document retrieval with vision language models (arXiv:2407.01449v6). arXiv. https://arxiv.org/abs/2407.01449

Abstract: 이 글은 ICLR 2025에 채택된 ColPali 논문을 읽고 정리한 것이다. 논문은 두 가지를 내놓는다. 시각적으로 복잡한 문서의 페이지 단위 검색을 재는 벤치마크 ViDoRe와, 페이지 이미지를 그대로 임베딩해 늦은 상호작용으로 점수를 매기는 모델 ColPali다. OCR·레이아웃 탐지·청킹으로 이어지는 기존 적재 파이프라인을 통째로 건너뛴다는 것이 요지다. 아래에서는 문제 설정, 벤치마크 구성, 모델 구조, 결과와 비용을 차례로 보고, 마지막에 확인 과정에서 드러난 것들을 정리한다. 원문은 PDF를 정본으로 삼아 표를 좌표로 복원해 대조했다.


Executive Summary

항목 설명
연구 질문 시각적으로 복잡한 문서의 페이지 검색에서 병목이 임베딩 모델이 아니라 OCR·레이아웃 탐지·청킹으로 이어지는 적재 파이프라인에 있다면, 페이지 이미지를 그대로 임베딩해 그 파이프라인을 통째로 건너뛸 수 있는가?
핵심 기여 페이지 단위 시각 문서 검색 벤치마크 ViDoRe(10개 하위과제, nDCG@5), PaliGemma-3B의 출력 토큰 임베딩을 128차원 다중 벡터로 투영해 늦은 상호작용으로 점수를 매기는 ColPali, 그리고 SigLIP→BiSigLIP→BiPali→ColPali로 한 번에 하나씩 바꾸는 사다리 절제를 한 논문에 담는다.
방법적 결과 형식 정리는 없다. 설계 결과는 질의 벡터마다 문서 벡터와의 최대 유사도를 더하는 MaxSim 점수, 배치에서 가장 어려운 음성 하나만 쓰는 손실, 그리고 페이지당 (1,024 패치+6 토큰)×128차원×2바이트 = 257.5KB라는 저장 구조다.
실험 결과 (저자 보고) ViDoRe 평균 nDCG@5 81.3으로 최강 기준선(Unstructured+Captioning+BGE-M3) 67.0 대비 +14.3. 사다리에서 VLM 교체의 몫은 +0.2, 늦은 상호작용의 몫은 +22.5다. 색인은 쪽당 0.39초로 기준선 7.22초의 18.5배지만, 질의는 30ms로 BGE-M3의 22ms보다 느리고 저장은 BGE-M3의 약 30배다.
핵심 한계 한계 절이 없다. 벤치마크와 모델이 같은 논문에서 나오고 시험 질의와 학습 질의의 37%를 같은 생성기(Claude-3 Sonnet)가 만들었으며, 헤드라인 비교는 미세조정을 받은 쪽과 받지 않은 쪽 사이에서 이루어진다. 질의 지연 세 수치에는 뒷받침 측정이 없고, 학습 집합 총계와 비율은 표와 본문이 서로 맞지 않는다.

목차

  1. 논문이 겨냥한 문제
  2. ViDoRe — 벤치마크
  3. ColPali — 구조
  4. 학습
  5. 결과
  6. 절제
  7. 한계와 비판
  8. 결론

1. 논문이 겨냥한 문제

문서 검색 시스템은 대체로 텍스트를 먼저 뽑아낸다. PDF를 열어 레이아웃을 탐지하고, 이미지 영역은 OCR을 돌리고, 표와 그림은 따로 처리하고, 남은 텍스트를 청크로 잘라 임베딩한다. 이 과정이 길고 잘 깨진다는 것이 논문의 출발점이다.

논문의 진단은 여기서 한 걸음 더 간다. 병목이 임베딩 모델이 아니라 그 앞의 적재 파이프라인에 있다는 것이다. 그리고 이 진단은 논문 자신의 실험으로 뒷받침된다. 같은 파이프라인 위에서 BM25와 BGE-M3를 갈아 끼워도 평균 점수가 65.5와 66.1로 거의 움직이지 않는 반면, 파이프라인에 OCR이나 캡셔닝을 더하면 처리할 수 있는 과제 자체가 늘어난다.

그래서 제안은 단순하다. 페이지를 텍스트로 바꾸지 말고 이미지 그대로 임베딩하자. 시각 언어 모델이 이미 페이지를 읽을 수 있으니, 그 모델의 출력 임베딩을 검색에 쓰면 된다.

ColPali 개요

그림 1. Faysse et al. (2025), Figure 1. 위는 표준 검색으로, 오프라인에서 OCR과 레이아웃 탐지를 거쳐 청크를 만든다(쪽당 7.22초). 아래가 ColPali로, 페이지 이미지를 시각 인코더와 LLM에 한 번 통과시켜 다중 벡터를 얻는다(쪽당 0.39초). 온라인은 양쪽 다 MaxSim 계열 점수 계산이다. 해설을 위해 인용. arXiv:2407.01449.


2. ViDoRe — 벤치마크

기여의 절반이 벤치마크다. 페이지 단위 검색을 재고, 텍스트·그림·인포그래픽·표를 고루 담고, 도메인과 언어를 나눈다.

데이터셋 언어 질의 수 문서 수 성격
DocVQA English 500 500 UCSF Industry 스캔 문서
InfoVQA English 500 500 웹 인포그래픽
TAT-DQA English 1,600 1,600 고품질 재무 보고서
arXiVQA English 500 500 arXiv 과학 도판
TabFQuAD French 210 210 웹 수집 표
Energy English 100 1,000 에너지 문서
Government English 100 1,000 행정 문서
Healthcare English 100 1,000 의료 문서
AI English 100 1,000 AI 관련 과학 문서
Shift Project French 100 1,000 환경 보고서

두 갈래로 만들어졌다. 학술 과제 다섯은 기존 시각 질의응답 벤치마크를 재활용한 것으로, "각 page-question-answer 삼항에서 질문을 질의로, 해당 페이지를 정답 문서로" 쓴다. 실무 과제 다섯은 새로 만들었다. 주제별로 공개 PDF 1,000쪽을 모으고, Claude-3 Sonnet으로 페이지에 대한 질의를 생성한 뒤, 사람 주석자가 품질과 관련성을 걸러 100개를 남겼다.

주 지표는 nDCG@5다. 그리고 논문은 "학습 가능한 검색 시스템을 위해 참조 학습 집합을 함께 제공한다"고 밝힌다. 벤치마크가 학습 집합을 같이 배포한다는 뜻이고, 뒤에서 이 점이 문제가 된다.

2.1 기존 시스템을 재어 보기

기준선은 산업에서 실제로 쓰이는 구성이다. Unstructured로 PDF를 파싱하고 텍스트만 쓰거나, 여기에 표·차트·이미지를 OCR에 통과시켜 더하거나(+OCR), 시각 요소를 Claude-3 Sonnet에 넘겨 캡션을 만들어 더한다(+Captioning). 임베딩은 BM25와 BGE-M3 둘을 쓴다. 대조 학습된 시각 언어 모델(Jina-CLIP, Nomic Embed Vision, SigLIP)도 함께 잰다.

결과는 두 가지를 말한다. 하나는 앞서 본 것으로, 임베딩 모델을 바꾸는 것보다 파이프라인을 손보는 것이 낫다는 것이다. 다른 하나는 대조 학습 VLM들이 크게 뒤처진다는 것이다(Jina-CLIP 17.7, Nomic 12.9, SigLIP 51.4).


3. ColPali — 구조

기반 모델은 PaliGemma-3B다. 논문이 드는 이유는 작은 크기, 해상도와 과제별로 공개된 여러 체크포인트, 그리고 문서 이해 벤치마크에서의 성능이다. 이유는 앞 절에 하나 더 있다. PaliGemma의 텍스트 모델이 접두(지시문과 이미지 토큰)에 전체 블록 어텐션으로 미세조정되어 있다는 점이다.

페이지 이미지가 벡터가 되는 경로는 이렇다. 이미지가 시각 인코더를 지나 LLM에 들어가고, LLM의 출력 토큰 임베딩(이미지 토큰이든 텍스트 토큰이든)이 투영층을 거쳐 D=128차원으로 줄어든다. 128은 ColBERT를 따른 것이다. 논문이 내세우는 핵심 전제는 "다중 모달 미세조정 과정에서 얻어진 텍스트 토큰과 이미지 토큰 출력 임베딩 사이의 정렬을 활용한다"는 것이다.

점수는 늦은 상호작용이다. 질의 q와 문서 d의 다중 벡터 표현을 E_q\in\mathbb{R}^{N_q\times D}, E_d\in\mathbb{R}^{N_d\times D}라 할 때, 질의 벡터마다 문서 벡터들과의 최대 유사도를 구해 더한다. 문서 쪽은 오프라인에서 한 번 계산해 저장하고, 질의 쪽만 온라인에서 계산한다.

학습 손실은 배치 안에서 가장 어려운 음성 하나만 쓴다. 배치의 k번째 쌍에 대해 정답 점수를 s_k^+=\mathrm{LI}(q_k,d_k), 최대 음성 점수를 s_k^-=\max_{l\neq k}\mathrm{LI}(q_k,d_l)라 하면

\mathcal{L}=\frac{1}{b}\sum_{k=1}^{b}\log\big(1+\exp(s_k^--s_k^+)\big)

온도도 마진도 없고, 배치 안의 모든 음성에 대한 소프트맥스도 아니다. 여기에 용어가 하나 꼬이는 지점이 있다. §4.1은 이 식을 "우리의 in-batch contrastive loss"라 부르는데, 절제를 다루는 §6은 같은 식을 "가장 어려운 음성만 보는 pairwise CE loss"라 부르고 그 대안으로 "in-batch negative contrastive loss"를 든다. 같은 어휘가 두 곳에서 서로 반대를 가리키고, 대안 쪽 식은 논문에 적히지 않는다.

무엇이 저장되는지를 세어 보면 이 방식의 대가가 드러난다. 448×448 입력에 /14 패치이므로 페이지당 1,024 패치이고, 여기에 "Describe the image"라는 프롬프트 토큰 6개가 붙어 저장된다. (1024+6)\times128\times2\text{바이트} = 257.5KiB로, 논문이 적은 쪽당 257.5KB와 정확히 맞는다.


4. 학습

학습 집합은 118,695개의 질의–페이지 쌍이다. 공개 학술 데이터셋의 train split이 63%, 웹 크롤링 PDF 페이지에 Claude-3 Sonnet이 생성한 유사 질문을 붙인 합성분이 37%라고 적는다. 전부 영어인데, 이는 비영어 제로샷 일반화를 보기 위한 의도적 설계라고 밝힌다. 표본의 2%를 검증 집합으로 떼어 하이퍼파라미터를 맞춘다.

내역은 이렇다. DocVQA 39,463 · InfoVQA 10,074 · TATDQA 13,251 · arXivQA 10,000 · 크롤링 PDF 45,940이다. 여기서 두 가지가 걸린다. 다섯을 더하면 118,728이 되어 표에 적힌 총계 118,695와 33 차이가 난다. 그리고 학술 네 개의 합 72,788을 118,695로 나누면 **61.3%**이고 합성분은 **38.7%**다. 본문의 63%/37%가 어느 쪽 총계로도 나오지 않는다.

그리고 "학술 대 합성"이라는 구분 자체가 생각보다 무르다. 부록이 밝히듯 arXivQA의 질문은 GPT-4 Vision으로 합성된 것이다. 그것까지 합성으로 세면 비율이 52.9% 대 47.1%가 된다.

오염 방지에 대해 논문은 이렇게 적는다. "어떤 다중 페이지 PDF 문서도 ViDoRe와 학습 집합에 동시에 쓰이지 않음을 명시적으로 검증한다."


5. 결과

주 결과표를 좌표로 복원하면 이렇다(nDCG@5).

계열 시스템 ArxivQ DocQ InfoQ TabF TATQ Shift AI Energy Gov. Health. 평균
Unstructured (텍스트만) BM25 34.1 44.0 59.6 90.4 78.3 78.8 82.6
BGE-M3 28.4 36.1 68.5 88.4 76.8 77.7 84.6
+ OCR BM25 31.6 36.8 62.9 46.5 62.7 64.3 92.8 85.9 83.9 87.2 65.5
BGE-M3 31.4 25.7 60.1 70.8 50.5 73.2 90.2 83.6 84.9 91.1 66.1
+ Captioning BM25 40.1 38.4 70.0 35.4 61.5 60.9 88.0 84.7 82.7 89.2 65.1
BGE-M3 35.7 32.9 71.9 69.1 43.8 73.1 88.8 83.3 80.4 91.3 67.0
대조 VLM Jina-CLIP 25.4 11.9 35.5 20.2 3.3 3.8 15.2 19.7 21.4 20.8 17.7
Nomic-vision 17.1 10.7 30.1 16.3 2.7 1.1 12.9 10.9 11.4 15.7 12.9
SigLIP 43.2 30.3 64.1 58.1 26.2 18.7 62.5 65.7 66.1 79.1 51.4
논문의 사다리 BiSigLIP (+미세조정) 58.5 32.9 70.5 62.7 30.5 26.5 74.3 73.7 74.2 82.3 58.6
BiPali (+LLM) 56.5 30.0 67.4 76.9 33.4 43.7 71.2 61.9 73.8 73.6 58.8
ColPali (+늦은 상호작용) 79.1 54.4 81.8 83.9 65.8 73.2 96.2 91.0 92.7 94.4 81.3

평균 열은 열 개 하위과제의 단순 평균이다. 텍스트만 쓰는 두 행은 도판·인포그래픽·표 과제를 처리할 수 없어 세 칸이 비고, 그래서 평균이 계산되지 않는다.

5.1 사다리가 말해 주는 것

이 표에서 가장 값어치 있는 부분은 헤드라인이 아니라 아래 네 행의 사다리다. 논문은 SigLIP에서 출발해 한 번에 하나씩 바꾼다.

단계 무엇을 바꿨나 평균 증분
SigLIP 51.4
BiSigLIP 문서 검색 데이터로 미세조정 58.6 +7.2
BiPali SigLIP을 VLM으로 교체 58.8 +0.2
ColPali 늦은 상호작용 추가 81.3 +22.5

VLM으로 갈아탄 것이 버는 것은 0.2점이다. 이득의 거의 전부가 늦은 상호작용에서 온다. 그리고 BiPali는 BiSigLIP에 열 개 하위과제 중 일곱에서 진다(Energy −11.7, Health −8.8, InfoQ −3.1, AI −3.1, DocQ −2.9, ArxivQ −2.0, Gov −0.4). 이기는 곳은 셋이고 그중 큰 것은 표(TabF +14.2)와 프랑스어 환경 보고서(Shift +17.2) 둘이다.

논문 자신도 이 진단에 도달한다. 각주 11이 이유를 적는다. SigLIP과 달리 원본 PaliGemma는 대조 정합이 아니라 다음 토큰 예측으로 학습되었고, 여기에 얹은 대조 미세조정은 이미지 11만 9천 장 규모로 "SigLIP의 원래 대조 학습보다 다섯 자릿수 작다". 다만 표의 화살표를 읽을 때 주의할 것이 있다. ColPali 옆의 ↑22.5는 바로 위 BiPali 대비이지 최강 기준선 대비가 아니다. 최강 기준선(Unstructured+Captioning+BGE-M3, 67.0)과 견주면 +14.3점이다.

5.2 비용

색인 지연 비교

그림 2. Faysse et al. (2025), Figure 2. 오프라인 색인의 쪽당 지연. 막대에 인쇄된 값은 합계 7.22초·0.12초·0.39초이고, 구성요소 값(레이아웃 탐지 0.81초, OCR 2.67초, 캡셔닝 3.71초, 페이지 인코딩 0.03초)은 부록 Table 5 출처다. 해설을 위해 인용. arXiv:2407.01449.

색인은 확실히 빠르다. 쪽당 0.39초로 Unstructured의 7.22초 대비 18.5배다. 다만 SigLIP의 0.12초보다는 3.25배 느리다.

다만 이 18.5배는 어떤 구성과 견준 값인지에 달려 있다. 기준선 7.22초 중 캡셔닝이 3.71초로 절반이 넘고, 그것은 Claude-3 Sonnet API 호출이다. 캡셔닝을 빼면 3.51초 대 0.39초로 9.0배가 되고, OCR까지 빼 텍스트만 쓰는 구성(0.84초)과 견주면 2.2배다. 논문은 가장 무거운 구성 하나만 비교 대상으로 싣고, Table 5에는 BM25 행도 텍스트 전용 구성 행도 없다.

질의 지연은 반대다. BGE-M3가 15토큰 질의를 약 22ms에 인코딩하는 데 비해 ColPali의 언어 모델은 약 30ms가 걸린다. 늦은 상호작용 계산 자체는 코퍼스 1,000쪽당 약 1ms로 작다. 다만 이 세 수치에는 뒷받침하는 측정이 없다. 각주는 부록 B.4를 가리키는데 B.4에는 색인 지연만 있다. 질의 지연을 잰 표나 도판은 논문 어디에도 없다.

저장은 이 접근의 진짜 대가다.

모델 페이지당 임베딩 크기
BM25 (희소) 1.56 ± 0.51 KB
BM25 (밀집) 3.00 KB
BGE-M3 8.60 KB
ColPali (float16) 257.5 KB

BGE-M3의 약 30배, BM25 희소 임베딩의 약 165배다. 부록 B.3은 ColPali 임베딩이 "BM25보다 한 자릿수, BGE-M3보다 두 자릿수 크다"고 적는데, 자기 표 4가 이를 뒤집는다. BGE-M3 대비가 30배(≈1.5자릿수), BM25 대비가 85~165배(≈2자릿수)이므로 두 비교 대상이 서로 바뀌어 있다. 같은 절이 중심점 군집화와 이진 양자화로 "두 자릿수" 줄일 수 있다고 인용하지만 그 감축은 이 논문에서 적용하거나 평가하지 않는다. 실제로 평가하는 압축은 뒤에서 볼 토큰 풀링 하나이고, 감축폭은 3배에 그친다.

어디에 놓였는지도 눈에 띈다. §5.2의 저장 용량 문단은 ColPali의 257.5KB만 적고 비율도 기준선도 대지 않는다. 위 표는 부록에 있다. ColPali가 30배로 지는 축은 이것뿐인데, 본문에서 비교 없이 자기 값만 제시되는 수치도 이것뿐이다.


6. 절제

절제 결과

그림 3. Faysse et al. (2025), Figure 3. 왼쪽은 토큰 풀링으로 벡터 수를 줄일 때의 상대 성능 저하, 오른쪽은 질의 토큰에 대한 패치별 유사도 지도다. 해설을 위해 인용. arXiv:2407.01449.

토큰 풀링. 논문은 "풀 인자 3이면 벡터 수가 66.7% 줄어드는데 원래 성능의 97.8%가 유지된다"고 적는다. 그런데 도판을 600dpi로 확대해 평균선(검은 점선)을 읽으면 풀 인자 3의 값은 약 98.8이고 97.8은 풀 인자 4의 값이다. 66.7%라는 감축률은 풀 인자 3에 대응하므로(1-1/3), 문장이 한 지점의 압축률과 다른 지점의 성능 유지율을 짝지은 셈이다. 둘 중 하나가 맞다면 (3, 66.7%, 98.8%)이거나 (4, 75%, 97.8%)여야 한다. 공교롭게도 논문이 적은 조합은 자기 결과를 1점 낮춰 말한다.

이 백분율을 절대 nDCG로 환산할 수는 없다. 도판 범례의 계열은 여섯뿐이고(Shift·InfoVQA·Energy·TabFQuad·DocVQA·ArxivQA) TATQ·AI·Government·Healthcare는 그려져 있지 않다. 검은 점선이 이 여섯의 평균이므로, 열 과제 평균 81.3에 곱해 얻는 값은 성립하지 않는다. 도판이 여섯 과제만 그린다는 사실을 본문이 밝히지 않는 것도 그 자체로 문제다. 다만 논문이 정직하게 적듯 Shift가 뚜렷한 이상치다. 풀 인자 2에서 100.4로 오히려 오르다가 3에서 96.0, 4에서 90.5, 5에서 86.3으로 무너지고 6에서 88.3으로 되돌아온다. 가장 텍스트가 빽빽한 문서 집합이라 잉여 패치가 적다는 것이 논문의 설명인데, 패치 잉여도를 잰 수치는 없다.

이 도판은 잡음 바닥도 함께 보여준다. 여러 곡선이 100%를 넘는다. Energy는 풀 인자 3에서 100.6, TabFQuad는 5에서 100.5, DocVQA는 5에서 100.0이다. 벡터의 3분의 2를 버렸는데 점수가 오른다는 뜻이고, Shift는 아예 비단조다. 이 정도 폭은 뒤에서 볼 절제 효과들(시각 인코더 해제 −0.7, 쌍별 손실 −1.6 등)과 같은 크기다.

해상도. ColPali(448)의 81.3이 ColPali(224)에서 56.5로 무너진다. 24.8점 차이다. 늦은 상호작용을 써도 패치 해상도가 모자라면 안 된다. 다만 §6은 이 변형을 "이미지 패치 수가 절반(512)"이라 적는데, 표 7의 라벨은 224이고 /14 패치 기준으로는 256이다. 본문과 표가 어긋난다.

백본. ColQwen2(768)가 86.6으로 ColPali(81.3)를 5.3점 앞선다. 논문이 자기 결과를 넘어서는 변형을 함께 싣는다.

영역 밖 일반화. 학습을 DocMatix만으로 바꾸면 −2.2점에 그치고, 그래도 최강 기준선을 12점 넘게 앞선다. 뒤에서 볼 벤치마크–모델 얽힘 우려를 상당 부분 덜어 주는 실험이다.

해석 가능성. 질의 토큰별로 어느 패치가 반응하는지 지도를 그린다. 논문의 표현은 조심스럽다("강한 OCR 능력을 보이는 것으로 관찰된다", "세계 지식을 보이는 듯하다").


7. 한계와 비판

7.1 논문이 밝힌 것

먼저 적어둘 것이 있다. 이 논문에는 한계 절이 없다. "limitation"이라는 단어가 26쪽 전체에 한 번도 나오지 않고, 윤리 서술도 없다. §7 결론도 한계를 적지 않는다. 아래 인정들은 본문 곳곳에 흩어져 있는 것을 모은 것이다.

논문은 저장 비용이 크다는 것을 인정하고 압축 기법을 후속으로 지목한다. 질의 지연이 BGE-M3보다 느리다는 것도 §5.2에 적는다. 텍스트 기준선에 동등한 미세조정을 주지 못한 이유도 각주로 밝힌다. 10만 개 넘는 문서에 추출 파이프라인을 돌리는 것이 비용과 시간 면에서 과하다는 것이다. 부정적 결과(ColSigLIP, BiSigLIP-PaliGemma)도 함께 싣는다.

7.2 해설자 관점 (추가 비판)

Figure 1의 캡션이 같은 도판의 수치와 어긋난다. 캡션은 ColPali가 "더 나은 지연으로 더 강한 성능"을 낸다고 적는다. 그런데 같은 도판이 표준 검색을 22ms/query로, ColPali를 30ms/query로 그린다. 색인 지연(0.39 대 7.22)에서는 참이지만 질의 지연에서는 거짓이고, 캡션은 둘을 구분하지 않는다. 이 논문에서 가장 먼저 보게 되는 그림이 자기 수치와 맞지 않는 문장을 달고 있다.

같은 어긋남이 본문에도 있다. §3.2는 "질의 지연은 평가된 모든 시스템에서 매우 좋다(NVIDIA L4에서 ≤22ms)"고 적는데, §5.2는 ColPali를 30ms로 적는다. 변호의 여지는 있다. §3.2의 제목이 "기존 시스템 평가"이고 ColPali는 §4에서야 도입되므로, "평가된 모든 시스템"을 그 절이 다룬 기준선들로 좁게 읽으면 모순이 아니다. 다만 같은 문단이 ColPali가 포함된 표 2와 그림 2를 가리키고 있어 그 좁은 독해가 자연스럽지는 않다. 어느 쪽이든 독자가 22ms를 전체 상한으로 읽기 쉬운 자리에 놓여 있다.

요구사항 라벨이 한 문단에서 뒤바뀐다. §2는 R2를 온라인 질의, R3를 색인 처리량으로 정의하고 §3.1 끝과 §5.2는 그렇게 쓴다. 그런데 §3.2 결과 문단만 "색인 지연 (R2)"과 "질의 지연 (R3)"으로 둘 다 뒤집혀 있다.

제목의 "Efficient"가 효율 축 셋 중 하나에서만 성립한다. §6은 절충을 네 축으로 세운다. 검색 성능(R1), 온라인 질의 지연(R2), 오프라인 색인 지연(R3), 그리고 색인 메모리 크기다. 검색 성능은 ColPali가 이기지만 그것은 효율 축이 아니다. 효율 쪽 셋 가운데 색인만 18.5배 빠르고 질의는 1.36배 느리며 저장은 30배 크다. 제목과 초록은 색인 축의 이점을 대표로 삼고 나머지 둘의 대가를 뒤로 미룬다.

시각 문서 검색기와는 비교하지 않는다. 표 2에서 이미지를 입력으로 받는 기준선은 Jina-CLIP·Nomic Embed Vision·SigLIP 셋인데, 셋 다 범용 대조 학습 VLM이지 문서 검색 시스템이 아니다. 논문이 §2.2에서 훑는 레이아웃 인지 문서 이해 모델들(DocFormer·Donut·LayoutLMv3·UDOP)은 하나도 평가되지 않는다.

특히 FILIP이 걸린다. 논문 자신이 §2.2에서 FILIP을 "늦은 상호작용 기제를 교차 모달 시각 언어 모델로 확장한 것으로, 텍스트 토큰과 이미지 패치 사이의 최대 유사도 연산에 기댄다"고 소개한다. 이것은 ColPali의 점수 규칙과 사실상 같은 서술이다. 그런데 FILIP은 평가되지도 않고, ColPali의 새로움이 FILIP과 어디서 갈리는지도 논문은 적지 않는다.

벤치마크와 모델이 같은 논문에서 나오고, 질의 생성기가 같다. 이것이 구조적으로 가장 무거운 지점이다. ViDoRe 실무 과제의 시험 질의는 Claude-3 Sonnet이 페이지를 보고 생성했고, ColPali 학습 데이터의 **37%**도 같은 모델이 같은 절차로 만든 유사 질문이다. 부록도 학습 집합 생성이 벤치마크와 "같은 방법론을 따른다"고 적는다. 논문의 방어는 "어떤 다중 페이지 PDF 문서도 ViDoRe와 학습 집합에 동시에 쓰이지 않음을 명시적으로 검증한다"인데, 이는 문서 수준 분리다. 질의의 어휘·구문·난이도가 같은 생성기의 습관을 공유한다는 문제는 정면으로 논증하지 않는다. 간접적인 답은 DocMatix 절제 하나뿐이고 그마저 절제 절에 있다. 그 분포에 미세조정된 모델은, 그것을 본 적 없는 기준선에 대해 분포상의 이점을 갖는다.

비교가 데이터 측면에서 대등하지 않다. ColPali는 118,695쌍으로 미세조정된 3B VLM이고, 텍스트 기준선은 미세조정 없는 기성 모델이다. 게다가 학술 과제 다섯 중 네 개(DocVQA·InfoVQA·TATDQA·arXivQA)의 train split이 ColPali 학습 집합에 들어 있다. 그러므로 81.3 대 67.0이라는 헤드라인은 "시각 검색 대 텍스트 검색"이 아니라 "과제 특화 미세조정을 받은 시각 모델 대 기성 텍스트 파이프라인"을 잰다. 논문이 이 비대칭을 각주로 인정하고 DocMatix 실험으로 상당 부분 덜어 준다는 점은 공정하게 적어야 한다. 다만 그 실험은 절제 절에 있고 헤드라인 비교는 얽힌 학습 집합 위에서 이루어진다.

가장 깨끗한 비교는 기준선 대비가 아니라 사다리다. SigLIP → BiSigLIP → BiPali → ColPali는 한 번에 하나씩 바꾸는 통제된 비교이고, 여기서 늦은 상호작용의 몫이 +22.5로 분리된다. 헤드라인보다 이쪽이 더 많은 것을 말한다.

이득이 균일하지 않다. DocVQA는 과제별 최강 기준선 대비 16점 차인데 Healthcare는 3.1점이다. 그리고 Shift에서는 동률이다. ColPali 73.2 대 Unstructured+OCR+BGE-M3 73.2로 소수점까지 같다. 열 개 하위과제 중 시각 접근이 우위를 보이지 못하는 유일한 곳인데, 하필 프랑스어이면서 텍스트가 가장 빽빽한 집합이다. 토큰 풀링이 가장 아픈 곳도 여기다. §5.1이 "텍스트 중심 문서 또한 평가된 모든 도메인과 언어에서 ColPali 모델이 더 잘 검색한다"고 적으므로, 이 한 칸이 그 문장을 직접 반증한다.

프랑스어 두 과제가 가장 덜 기록되어 있다. TabFQuAD를 논문은 세 곳에서 다르게 적는다. §3.1은 "프랑스 산업 PDF에서 뽑은 사람 라벨 데이터셋", 표 1은 "웹에서 수집한 표", 부록은 일부가 Claude-3 Sonnet으로 증강됐다고 적는다. Shift Project의 코퍼스 구성 절차는 어디에도 없다. 앞서 본 두 약점이 나온 자리가 공교롭게도 이 둘이다.

"여러 언어"는 둘이다. 초록은 "여러 도메인, 언어"를 말하고 §1은 기여를 "도메인·시각 요소·언어의 폭넓은 포괄"로 적는데, 실제로는 영어 여덟 과제와 프랑스어 두 과제다. §3.1이 "영어, 프랑스어"라고 명시하므로 숨긴 것은 아니고, 앞의 두 문장이 실제보다 넓게 읽힌다는 쪽이다.

해석 가능성 절이 예시를 근거의 자리에 놓는다. 유사도 지도는 흥미롭지만 예시 둘이다. §5.3이 "다른 시각화 예시들"이라고 복수로 넘기는 부록 D에도 도판은 하나뿐이다. 지도가 의미상 관련된 영역을 신뢰할 만하게 짚는지에 대한 체계적 평가도, 실패 사례도, 정량 지표도 없다. 논문의 표현 자체는 조심스럽지만, 결과 절에 "해석 가능성"이라는 제목으로 놓이면 예시 둘이 감당할 수 있는 것보다 큰 무게가 실린다. 부록이 흰 배경 패치가 높은 유사도를 갖는다고 적는 것(ViT 레지스터 탓으로 돌린다)도 지도의 직관적 해석을 약화시킨다.

토큰 풀링 문장이 두 지점을 섞는다. 앞서 본 대로 66.7%는 풀 인자 3의 압축률이고 97.8%는 풀 인자 4의 유지율이다. 방향이 유리한 쪽으로 섞인 것은 아니어서(오히려 자기 결과를 1점 낮춰 말한다) 의도적 과장으로 읽을 이유는 없지만, 논문에서 가장 많이 인용될 만한 한 문장이 자기 도판과 맞지 않는다.

절제 효과 몇 개가 도판의 잡음 폭 안에 있다. 풀링 도판에서 여러 곡선이 100%를 넘고(Energy 100.6, TabFQuad 100.5) Shift는 비단조다. 벡터의 3분의 2를 버렸을 때 점수가 오르내리는 폭이 2점 안팎이다. 절제표의 여러 항목(시각 인코더 해제 −0.7, 쌍별 손실 −1.6, 질의 증강 토큰 −1.7)이 그보다 작거나 같다. 반복 실행도 오차 막대도 없으므로 이 항목들은 실행 간 변동과 분리되지 않는다.

18.5배가 구성에 달려 있다. 기준선 7.22초의 절반 이상(3.71초)이 캡셔닝이고 그것은 외부 API 호출이다. 캡셔닝을 빼면 9.0배, OCR까지 빼면 2.2배다. 논문은 가장 무거운 구성만 비교에 싣는다.

질의 지연 수치에 측정이 없다. 22ms·30ms·1ms 세 수치의 각주가 부록 B.4를 가리키는데 거기에는 색인 지연만 있다. 논문에서 유일하게 ColPali가 지는 속도 축인데 뒷받침하는 표가 없다.

저장 비교가 본문에 없다. §5.2의 저장 문단은 257.5KB만 적고 비율도 기준선도 대지 않는다. 비교표는 부록에 있다.

학습 집합 비율이 재현되지 않고 "합성"의 경계가 무르다. 63%/37%는 표의 어느 총계로도 나오지 않고(61.3%/38.7%), arXivQA의 질문 자체가 GPT-4 Vision 합성이라 그것까지 세면 52.9%/47.1%가 된다. 벤치마크–모델 얽힘을 논할 때 "학술 데이터가 3분의 2"라는 인상은 실제보다 후하다.

손실 용어가 두 절에서 반대를 가리킨다. §4.1이 "in-batch contrastive loss"라 부른 식을 §6은 "pairwise CE loss"라 부르고, 그 대안을 "in-batch negative contrastive loss"라 부른다. 대안 쪽 식은 논문에 적히지 않는다.

Table 3의 산술이 맞지 않는다. 개별 split이 39,463 + 10,074 + 13,251 + 10,000 + 45,940 = 118,728인데 TOTAL은 118,695로 적혀 있다. 33 차이다.

표기 오류 몇 가지. §5.2에 "aims amountto reduce"라는 병합 오류가 있고, §6의 "+9.8 nDCG@G on Shift"는 @5여야 한다. §4.2의 오염 방지 문장도 "used both ViDoRe and in the train set"으로 전치사가 빠져 있다. §6에는 "with respects to to the 1024-patch ColPali model"처럼 겹친 오식이, Table 3 arXivQA 행에는 "Scientific Scientific Figures from arXiv"라는 단어 중복이 있다. §4.1은 식 (1) 앞에서 질의 벡터를 "Eq (j)"로 쓰는데 식 자체는 첨자로 i를 쓴다. 참고문헌에는 PaliGemma 항목이 arXiv 판과 Kaggle 카드 둘로 실려 본문도 (Beyer et al., 2024)와 (Lucas Beyer* et al., 2024)로 갈라 부른다. §7이 후속 방향을 들며 인용하는 "동시대 연구(Ma et al., 2024)"도 성격이 어긋난다. 본문은 그것을 "시각 질의응답에서 VLM의 강한 가능성을 보인" 연구로 소개하는데, 서지 항목의 제목은 "MMLongBench-Doc: Benchmarking long-context document understanding with visualizations"로 벤치마크 논문이다.

표 3에도 "Scrapped PDFs"(scraped)와 "Scientific Scientific Figures from arXiv"처럼 겹쳐 인쇄된 칸이 있다. 그리고 표 2에서 BiPali 행만 하강 화살표를 "↓-2.0"처럼 화살표와 음수 부호를 겹쳐 인쇄한다. 다른 행은 모두 "↓5.7" 형식이다. 하필 논문 자신의 방법이 후퇴하는 유일한 행이다.

7.3 남는 기여

비판만 모아 놓으면 무게가 실제보다 커 보인다. 무엇이 버티는지 따로 적는다.

문제 진단이 이 논문의 가장 좋은 부분이다. 병목이 임베딩 모델이 아니라 적재 파이프라인에 있다는 관찰은 잘 논증되고, 표 2의 BM25 대 BGE-M3 비교가 그것을 직접 뒷받침한다. 임베딩을 바꿔도 65.5와 66.1로 거의 같은데 파이프라인을 바꾸면 처리 가능한 과제 자체가 달라진다.

사다리 절제가 이례적으로 정보량이 많다. 미세조정·LLM 백본·늦은 상호작용의 기여를 한 번에 하나씩 분리하고, 자기 중간 단계(BiPali)가 앞 단계에 지는 것을 그대로 싣는다. 부정적 결과도 함께 낸다.

구조가 단순하다. VLM 위에 투영층 하나를 얹고 대조 손실로 학습한다. 특별한 모듈도, 다단계 파이프라인도 없다.

공개 범위가 넓다. 모델·학습 데이터·벤치마크·코드를 모두 낸다. 다만 세부는 짚어둘 만하다. 공개되는 모델은 전체 가중치가 아니라 LoRA 어댑터이고, 그 사실은 재현성 서술에만 적힌다. 라이선스도 그렇다. "MIT"는 26쪽에서 딱 한 번 재현성 서술에 나오면서 "본문에 상술한 대로"라고 가리키는데, 본문은 어떤 라이선스도 명시하지 않는다(초록은 "open licenses"라고만 한다).

영역 밖 실험이 옳은 실험이다. DocMatix만으로 학습해도 −2.2점에 그친다는 결과는 벤치마크–모델 얽힘 우려에 대한 직접적인 답이고, 이런 실험을 스스로 돌린 것은 신뢰를 준다.

7.4 내부 참조 확인

여기서 확인한 것은 논문 내부의 정합성이다. 표 2의 평균 열은 열 개 하위과제의 단순 평균으로 전 행이 맞고(±0.05), 증분 화살표 62개 가운데 넷만 0.1 어긋난다(반올림으로 설명 가능하다). 저장 용량 257.5KB는 (1,024 패치 + 프롬프트 토큰 6) × 128차원 × 2바이트로 정확히 재현된다. 색인 지연 7.22초도 구성 요소 합(0.81 + 2.67 + 3.71 + 0.03)과 맞는다.

맞지 않는 것은 여럿이다. Table 3의 합계(118,728 대 118,695), §3.2의 R2/R3 라벨, 질의 지연 상한(≤22ms 대 30ms), 그리고 토큰 풀링 문장이 짝지은 두 지점(풀 인자 3의 압축률과 4의 유지율)이다. Figure 1이 한 점에 찍은 두 값도 서로 다른 구성에서 왔다. 7.22초는 부록 B.4가 밝히듯 캡셔닝을 포함한 구성의 색인 시간인데(캡셔닝만 3.71초), 같은 점에 인쇄된 0.66은 캡셔닝을 뺀 구성의 점수다(66.1). 캡셔닝을 포함한 구성의 표 2 평균은 67.0이다.

색인 지연의 표본 크기도 두 곳에서 다르다. 각주는 "100쪽에 대해 평균"이라 적고 부록 B.4는 "무작위로 고른 문서 1,000개"라 적는데, 두 곳이 서로를 가리킨다. 그 각주에는 "Measures a NVIDIA L4 GPU"라는 탈자도 있다.


8. 결론

ColPali가 실제로 한 일은 둘이다. 하나는 문서 검색의 병목을 임베딩 모델에서 적재 파이프라인으로 옮겨 지목하고, 그것을 잴 수 있는 벤치마크를 만든 것이다. 다른 하나는 페이지를 이미지 그대로 임베딩하고 늦은 상호작용으로 점수를 매기면 그 파이프라인을 통째로 건너뛸 수 있음을 보인 것이다. 색인이 18.5배 빨라지고 평균 점수가 67.0에서 81.3으로 오른다.

다만 그 이득의 주인을 정확히 적을 필요가 있다. 논문 자신의 사다리가 보여주듯 시각 언어 모델로 갈아탄 것 자체는 0.2점을 번다. 이득의 거의 전부는 늦은 상호작용, 곧 페이지를 벡터 하나가 아니라 패치마다 하나씩 천 개 남짓의 벡터로 표현하는 데서 온다. 그리고 그 표현이 저장 30배라는 대가를 치른다. 제목의 "Efficient"는 색인 축의 이야기다.

남는 물음은 얽힘이다. 벤치마크와 모델이 같은 논문에서 나왔고, 시험 질의와 학습 질의의 37%를 같은 모델이 같은 절차로 만들었다. 논문은 문서 수준 분리를 검증했고 DocMatix 실험으로 상당 부분 답했지만, 질의 분포의 겹침 자체를 정면으로 논증하지는 않는다. 그리고 헤드라인 비교는 미세조정을 받은 쪽과 받지 않은 쪽 사이에서 이루어진다.

실무 쪽에서 가져갈 것은 분명하다. OCR과 레이아웃 탐지를 걷어낸 파이프라인은 세우기 쉽고 유지하기 쉬우며 품질도 경쟁력이 있다. 대신 저장 예산을 30배로 잡거나 논문이 확인하지 않은 두 자릿수 압축을 직접 검증해야 하고, 문서가 텍스트 위주라면 81.3 대 67.0의 격차를 기대하지 않는 편이 낫다. Shift에서 동률이었다는 사실이 그 경계선이다.


References

Faysse, M., Sibille, H., Wu, T., Omrani, B., Viaud, G., Hudelot, C., & Colombo, P. (2025). ColPali: Efficient document retrieval with vision language models (arXiv:2407.01449v6). arXiv. https://arxiv.org/abs/2407.01449

Beyer, L., Steiner, A., Susano Pinto, A., Kolesnikov, A., Wang, X., Salz, D., Neumann, M., Alabdulmohsin, I., Tschannen, M., Bugliarello, E., Unterthiner, T., Keysers, D., Koppula, S., Liu, F., Grycner, A., Gritsenko, A., Houlsby, N., Kumar, M., Rong, K., … Zhai, X. (2024). PaliGemma: A versatile 3B VLM for transfer (arXiv:2407.07726). arXiv. https://arxiv.org/abs/2407.07726

Chen, J., Xiao, S., Zhang, P., Luo, K., Lian, D., & Liu, Z. (2024). BGE M3-Embedding: Multi-lingual, multi-functionality, multi-granularity text embeddings through self-knowledge distillation (arXiv:2402.03216). arXiv. https://arxiv.org/abs/2402.03216

Clavié, B., Chaffin, A., & Adams, G. (2024). Reducing the footprint of multi-vector retrieval with minimal performance impact via token pooling (arXiv:2409.14683). arXiv. https://arxiv.org/abs/2409.14683

Khattab, O., & Zaharia, M. (2020). ColBERT: Efficient and effective passage search via contextualized late interaction over BERT (arXiv:2004.12832). arXiv. https://doi.org/10.48550/arXiv.2004.12832

Santhanam, K., Khattab, O., Potts, C., & Zaharia, M. (2022). PLAID: An efficient engine for late interaction retrieval (arXiv:2205.09707). arXiv. https://arxiv.org/abs/2205.09707

서지 표기는 ColPali 논문 자신의 참고문헌 목록이 인쇄한 형태를 따랐다. PaliGemma는 논문이 arXiv 판(§2.2)과 Kaggle 모델 카드(부록 E) 두 항목으로 중복 인용하는데, 본문이 백본을 논할 때 부르는 arXiv 판을 실었고 저자가 35명이라 APA 규칙대로 앞 19명과 마지막 저자만 적었다. 늦은 상호작용 엔진으로 논문이 인용하는 것은 ColBERTv2가 아니라 PLAID다.