초당 51페이지 인코딩, 260M·800M 규모의 NeoMME 공개
NeoMME-Retriever-260M 모델은 NVIDIA L40S GPU에서 2048×2048 해상도의 이미지를 초당 약 51페이지 인코딩한다. 이는 기존 ColModernVBERT가 기록한 초당 26페이지보다 약 2배 높은 처리량(Throughput)이다. 수만 장의 문서 페이지를 벡터 데이터베이스에 저장해야 하는 기업용 검색 시스템에서 인코딩 속도의 2배 향상은 전체 인덱싱 시간을 절반으로 줄여 인프라 비용과 운영 시간을 낮춘다.
이러한 성능은 기존 시각 언어 모델(VLM)의 무거운 구조를 제거한 설계에서 나온다. NeoMME는 별도의 비전 타워(Vision Tower)나 인과적 언어 모델(Causal LM)을 사용하지 않고, 단일 양방향 트랜스포머(Bidirectional Transformer) 하나로 텍스트 토큰과 이미지 패치를 통합 처리한다. 이미지와 텍스트가 동일한 계산 경로를 공유하므로 모델 크기를 줄이면서 사전 학습, 미세 조정, 병렬 처리 및 서빙 과정의 연산 오버헤드를 최소화했다.
또한 NeoMME는 PDF 파일에서 글자를 읽어내는 광학 문자 인식(OCR) 전처리 단계를 완전히 생략하고 페이지 전체를 하나의 이미지로 인식해 랭킹을 매긴다. 이를 통해 텍스트 내용뿐만 아니라 문서의 레이아웃, 차트, 표, 폰트의 종류와 크기 등 시각적 단서를 그대로 보존한다. 이는 표의 구조나 서식이 중요한 전문 기술 문서나 금융 보고서 검색에서 텍스트 추출 시 발생하는 정보 손실을 방지한다.
모델은 260M(2억 6천만 개)과 800M(8억 개) 파라미터의 두 가지 규모로 제공된다. 두 버전 모두 2048×2048 이상의 고해상도 입력뿐만 아니라 작은 크기의 이미지에서도 빠른 처리 속도를 유지한다. NeoMME는 Apache 2.0 라이선스로 공개되었으며, 모든 체크포인트는 Hugging Face Transformers 라이브러리를 통해 배포되어 즉시 검색 엔진에 통합하거나 미세 조정을 진행할 수 있다.
비전 타워 없는 단일 양방향 트랜스포머와 마스크 확산 학습
모델은 마스크 이산 확산(Masked discrete-diffusion) 목적 함수를 사용하여 처음부터 학습한다. 텍스트 전용 예시의 경우 0과 1 사이에서 부패율(corruption rate)을 균등하게 샘플링해 적격한 텍스트 토큰을 독립적으로 마스킹한다. 모델은 가려진 토큰의 원래 값을 예측하는 디노이징(denoising) 과정을 통해 데이터의 내재적 구조를 학습하며, 이산적인 토큰 값 자체를 복원하는 방식으로 텍스트와 이미지 패치를 통합 학습했다. 사전 학습된 모델을 조정하는 전이 학습 대신 기초부터 학습하는 'Train from scratch' 방식을 택해 모든 가중치를 멀티모달 데이터 특성에 최적화했으며, 이를 통해 이미지 패치와 텍스트 토큰이 동일한 임베딩 공간에서 정밀하게 정렬되도록 했다.
학습에는 총 5,240억 개의 패킹된 입력 토큰이 투입되었으며, 이 중 텍스트 전용 토큰은 2,900억 개다. 다국어 텍스트, 코드, 수학적 표현, 자연 이미지, 문서 이미지를 혼합하여 모델이 텍스트 기반 논리와 시각적 레이아웃을 동시에 이해하도록 설계했다. 특히 코드와 수학 데이터는 문서 내 정형화된 구조와 논리적 관계 파악 능력을 높인다. 학습 효율을 위해 NorMuon 옵티마이저를 사용하여 방대한 혼합 데이터를 처리하면서도 학습 안정성과 수렴 속도를 확보했다.
이러한 효율적 구조와 학습 방식은 모델 크기 대비 압도적인 검색 성능으로 증명되었다.
14배 적은 파라미터로 ColQwen2.5에 근접한 검색 성능
NeoMME-Retriever-260M은 ViDoRe v3 벤치마크의 nDCG@10에서 0.523을 기록했다. 이는 대규모 모델인 ColQwen2.5와 비교해 수치 차이가 0.002에 불과하지만, 파라미터 수는 ColQwen2.5보다 약 14배 적다. 모델 크기를 14분의 1로 압축하고도 최상위권 모델과 대등한 검색 정확도를 달성한 것이다.
NeoMME-Retriever-800M 모델은 동일 벤치마크에서 0.556의 nDCG@10을 달성했다. 이는 비슷한 체급인 Vultron Retriever Flash(0.8B)와 0.009의 근소한 차이를 보이며, ColPali v1.3보다 파라미터 수가 3.6배 적음에도 검색 성능은 오히려 이를 능가했다.
이전 세대 벤치마크인 ViDoRe v1과 v2(nDCG@5 기준)에서도 NeoMME-Retriever-260M은 ColModernVBERT를 넘어섰으며, 파라미터 규모가 두 배 더 큰 ColSmol-500M보다 우수한 성능을 기록했다. 이는 파라미터의 양적 증가가 반드시 검색 품질 향상으로 이어지지 않음을 보여준다.
결과적으로 NeoMME-Retriever-260M과 800M 모델은 모델 크기와 검색 성능 사이의 최적 균형점인 파레토 프런티어(Pareto frontier)에 위치한다. 260M 모델은 극단적인 경량화 상태에서 0.523의 정확도를 확보했고, 800M 모델은 적은 자원으로 대형 모델들을 앞질러 하드웨어 제약이 있는 환경에서도 고성능 검색 엔진 구축을 가능하게 한다.
1.5MB에서 6kB로, 인덱스 저장 용량 255배 절감 기술
Late-interaction 임베딩은 저장 공간이 벡터 수에 따라 선형적으로 증가한다. 2048×2048 이미지 한 장 처리 시 NeoMME-Retriever는 약 4,200개의 벡터를 생성하며, 이를 float32 기준으로 저장하면 페이지당 약 2.1MB가 소요된다. ViDoRe v3 측정 결과 실제 평균 용량은 페이지당 약 1.5MB로, 대규모 문서 인덱싱 시 메모리와 저장 장치에 큰 부담을 준다.
이를 해결하기 위해 계층적 토큰 풀링(Hierarchical token pooling)과 비대칭 양자화(Asymmetric quantization)를 결합했다. 풀링으로 벡터의 절대적 개수를 줄이고, 양자화로 개별 벡터의 메모리 크기를 압축하여 검색 품질 저하를 최소화하며 용량을 낮췄다.
중간 단계인 '설정 A'에서는 풀링 팩터 10과 int8 형식을 적용해 페이지당 용량을 1.5MB에서 39kB로 약 39배 감소시켰으며, nDCG@10은 기준 모델 대비 99% 이상 유지했다. 더 강력한 압축인 '설정 B'에서는 풀링 팩터 8을 적용하고 쿼리는 int8, 문서는 이진(Binary) 형식으로 저장해 용량을 6kB까지 낮췄다. 이는 초기 용량 대비 255배 절감한 수치이며, nDCG@10은 95% 수준을 유지했다. 페이지당 6kB의 용량은 인덱스 전체를 메모리에 상주시키거나 디스크 입출력 비용을 극단적으로 낮출 수 있는 실무적 기준이 된다.
OCR 전처리 제거와 한국어 문서 검색 인프라의 최적화
NeoMME-Retriever는 한 번의 순전파(Forward pass)로 밀집 임베딩(Dense embedding)과 지연 상호작용 임베딩(Late-interaction embedding)을 동시에 반환한다. 밀집 임베딩은 저장 공간이 적고 빠른 검색에 유리하며, 지연 상호작용 임베딩은 더 많은 정보를 보존해 정밀도가 높다. 사용자는 인프라의 GPU 메모리나 저장 용량 제약에 따라 두 방식을 선택하거나 혼합해 사용할 수 있으며, NextPlaid나 Sentence Transformers v6 라이브러리를 통해 이를 처리한다.
대규모 말뭉치를 처리하는 실무 환경에서는 밀집 임베딩으로 1차 후보군을 뽑고 지연 상호작용으로 재순위화하는 워크플로우를 권장한다. 먼저 밀집 임베딩을 ANN(근사 최근접 이웃) 인덱스에 저장해 수백만 건의 문서 중 관련성 높은 소수 후보를 빠르게 추출한 뒤, 해당 후보들에 대해서만 지연 상호작용 임베딩을 적용해 재순위화(Rerank)를 수행한다. 모든 문서에 지연 상호작용을 계산하는 연산 비용을 피하고, 2단계 구조를 통해 인프라 비용을 낮추면서 검색 품질을 확보하는 방식이다.
대규모 한국어 문서 검색 인프라를 구축할 때, 저장 비용을 낮추기 위해 밀집 임베딩으로 1차 후보를 추출하고 검색 정밀도를 확보하기 위해 지연 상호작용으로 재순위화하는 2단계 파이프라인을 적용한다.



