NeoMME: 효율적인 멀티모달 네이티브 및 다국어 인코더
요약
NeoMME는 별도의 비전 타워나 인과적 언어 모델 없이 단일 양방향 트랜스포머로 텍스트와 이미지 패치를 모두 처리하는 다국어 멀티모달 인코더입니다. 이 모델은 마스크드 이산 확산 목적 함수로 학습되었으며, 시각 문서 검색에 최적화되어 높은 효율성과 성능을 보여줍니다.
핵심 포인트
- 단일 양방향 트랜스포머를 사용하여 텍스트와 이미지를 통합 처리합니다.
- 별도의 비전 타워나 인과 디코더가 필요 없어 오버헤드가 적습니다.
- 계층적 토큰 풀링 및 비대칭 양자화로 저장 공간을 대폭 줄였습니다.
- NVIDIA L40S에서 초당 51페이지를 인코딩하는 높은 처리량을 달성했습니다.

저희는 260M 및 800M 규모의 다국어 멀티모달 인코더인 NeoMME를 소개합니다. 많은 생성형 비전 언어 모델과 달리, NeoMME는 별도의 사전 학습된 비전 타워나 인과적(causal) 언어 모델을 사용하지 않습니다. 단일 양방향 트랜스포머(Transformer)가 텍스트 토큰과 원본 이미지 패치 모두를 처리하며, 우리는 마스크드 이산 확산 목적 함수(masked discrete-diffusion objective)로 전체 모델을 처음부터 학습시킵니다.
저희는 ColPali의 페이지-이미지 접근 방식을 사용하여 시각적 문서 검색을 위해 NeoMME를 미세 조정했습니다. NeoMME-Retriever는 단일 순방향(forward pass)에서 밀집되고 후기 상호작용 임베딩(dense and late-interaction embeddings)을 반환합니다. 두 모델 크기는 nDCG@10과 모델 크기에 대한 ViDoRe v3 파레토 프론티어에 위치합니다. NVIDIA L40S GPU에서 2048×2048 이미지 입력 크기를 매칭했을 때, 260M 모델은 초당 약 51페이지를 인코딩하며, 이는 ColModernVBERT의 처리량(throughput)보다 약 두 배 높은 수치입니다. 계층적 토큰 풀링(Hierarchical token pooling)과 비대칭 양자화(asymmetric quantization)는 후기 상호작용 인덱스 저장 공간을 페이지당 약 1.5 MB에서 6 kB로 줄였으며 (255배 작음), 기준선 nDCG@10의 95% 이상을 유지했습니다.
NeoMME는 Hugging Face Transformers에서 사용할 수 있습니다. 저희는 모든 모델 체크포인트를 Apache 2.0 라이선스 하에 공개합니다.
최근 많은 시각적 문서 검색기는 사전 학습된 생성형 비전 언어 모델을 기반으로 각색되었습니다. 별도로 사전 학습된 비전 인코더가 시각적 특징(visual features)을 생성하고, 이를 프로젝터(projector)가 언어 모델의 입력 공간으로 매핑합니다. 이후 인과 디코더(causal decoder)가 결합된 이미지 및 텍스트 표현을 처리합니다. 검색, 분류, 토큰 레이블링은 텍스트를 자기회귀적으로(autoregressively) 생성하지 않으므로, 이러한 아키텍처의 인과 디코더나 파라미터 및 계산 오버헤드가 필요하지 않습니다.
ModernBERT는 양방향 인코더에 효율적인 아키텍처와 학습 개선을 가져왔습니다. 시각 문서 검색(visual document retrieval)의 경우, ModernVBERT는 별도의 사전 학습된 SigLIP2 비전 타워를 유지하면서 양방향 ModernBERT 스타일 텍스트 인코더를 적용했습니다. 우리는 VLM(Vision-Language Model)의 파라미터 및 계산 오버헤드를 가져올 필요 없이 이를 더욱 발전시키고자 했습니다.
NeoMME (발음:
네이티브 멀티모달 입력: 텍스트 입력은 분해된(factorized) 토큰 임베딩을 사용하고, 이미지는 겹치지 않는 32×32 패치 격자로 나눈 다음 작은 MLP로 투영합니다. 둘 다 동일한 Transformer 인코더에 들어갑니다.동적 이미지 해상도: 이미지는 종횡비와 크기를 유지합니다. 이를 통해 모델은 내용이 적은 작은 이미지보다 고해상도의 정보 밀도가 높은 문서 페이지에서 더 많은 토큰을 사용할 수 있습니다.긴 양방향 컨텍스트: 두 모델 모두 16,384개의 토큰 길이의 컨텍스트를 가집니다(최대 표준 3840×2160 4K UHD 이미지까지 충분). 대부분의 레이어는 대칭 슬라이딩-윈도우 어텐션을 사용하며, 여섯 번째 레이어와 최종 레이어에서는 전역 어텐션(global attention)을 사용합니다.현대적인 인코더 스택: NeoMME는 그룹화된 쿼리 어텐션(grouped-query attention), 쿼리-키 정규화(query-key normalization), 게이티드 어텐션(gated attention), 2D 회전 위치 임베딩(2D rotary position embeddings), 제곱 ReLU MLP 등 최신 인코더 개선 사항들을 사용합니다.다국어 텍스트: 우리는 다국어 텍스트, 코드, 수학, 기계 생성 이미지 전사본을 사용하여 처음부터 BPE 토크나이저를 131k 토큰 어휘 크기로 학습시켰습니다.

NeoMME 인코더 스택.
우리는 NeoMME를 이산 마스크 확산(discrete masked-diffusion) 텍스트 디노이저로 처음부터 사전 학습합니다. 각 텍스트 전용 예제에 대해, 우리는 0과 1 사이에서 균일하게 교란률을 샘플링합니다. 그런 다음 적격한 모든 텍스트 토큰은 해당 비율로 독립적으로 마스크됩니다.
멀티모달 예제는 0.3에서 1 사이의 교란률을 사용합니다. 이미지 패치는 보이는 상태를 유지하는 동안 NeoMME가 마스크된 텍스트를 재구성합니다. 가벼운 마스킹만으로도 모델은 주변 텍스트만으로 누락된 단어를 종종 복구할 수 있습니다. 예를 들어,
사전 학습(Pretraining)은 다국어 텍스트, 코드, 수학적 내용, 자연 이미지, 그리고 문서 이미지를 혼합하여 사용합니다. 각 모델은 텍스트 전용 예제에서 나온 2,900억 개의 토큰을 포함하여 약 5,240억 개의 패킹된 입력 토큰(packed input tokens)을 처리합니다. 이 텍스트 예산은 ModernBERT의 2조 개 트레이닝 토큰 예산에 비해 상대적으로 적습니다. 따라서 우리는 학습 중 데이터 효율성을 개선하기 위해 NorMuon 옵티마이저를 선택했습니다.
백본(backbone)에 대한 의미 있는 다운스트림 평가를 얻기 위해, 우리는 ColPali가 소개한 페이지 이미지 방법론을 사용하여 NeoMME를 시각적 문서 검색(visual document retrieval)을 위해 파인튜닝(fine-tune)합니다. 전통적인 텍스트 기반 검색이 텍스트 청크(text chunks)를 검색하는 것과 달리, NeoMME-Retriever는 문서 페이지 스크린샷을 순위화하며 PDF에서 텍스트를 추출하는 데 필요한 모든 전처리 OCR 단계를 우회합니다. 페이지를 이미지로 처리하면 레이아웃, 차트, 표, 글꼴 유형 및 크기 등 완벽한 OCR 모델조차 포착할 수 없는 시각적 단서들을 보존할 수 있습니다.
NeoMME-Retriever는 NeoMME 백본을 재사용하지만, 검색을 위해 그 위에 두 개의 공동 학습된 헤드(jointly trained heads)를 추가합니다:
- 밀집 헤드(dense head): 백본의 은닉 상태 벡터들을 정규화된 벡터로 평균화합니다(mean pooling). 밀집 임베딩(Dense embeddings)은 오늘날 가장 일반적이며, 작고 근사 최근접 이웃(approximate nearest-neighbor, ANN) 기법과 자연스럽게 작동하여 빠른 검색을 가능하게 합니다.
- 후기 상호작용 헤드(late-interaction head): 백본의 출력 은닉 상태에서 나온 각 텍스트 토큰 또는 이미지 패치(image patch)를 128차원의 정규화된 벡터로 투영합니다. 밀집 임베딩과 비교했을 때, 더 미세한 세분성(finer granularity)은 개별 쿼리 토큰과 이미지 영역 간의 국소적 일치(local matches)를 보존합니다.

NeoMME 모델 크기입니다.
ColBERT에서 후기 상호작용을 도입한 Omar Khattab은 이 용어가
하나의 NeoMME-Retriever 순방향(forward) 계산은 두 가지 표현(representations)을 모두 반환하므로, 사용 사례와 인프라에 관계없이 유연성을 제공합니다. 일반적으로 후기 상호작용 임베딩(late-interaction embeddings)을 사용하는 것을 권장하는데, 이는 더 강력하며 NextPlaid 같은 오픈소스 라이브러리와 쉽게 사용할 수 있기 때문입니다. 하지만 만약 매우 큰 코퍼스(corpora)를 가지고 있다면, NeoMME-Retriever로 단일 순방향 계산을 실행하여 밀집 임베딩(dense embedding)을 얻고, ANN 인덱스를 통해 소수의 문서를 검색한 다음, 후기 상호작용을 사용하여 검색된 후보들을 재순위화(rerank)할 수 있습니다.
우리는 ViDoRe v3에서 nDCG@10 점수를 보고합니다. NeoMME-Retriever-260M은 0.523점을 기록하며, 800M 파라미터 미만으로 평가된 모델 중 가장 높은 점수입니다. 이는 약 14배 적은 파라미터를 사용하면서도 ColQwen2.5의 nDCG@10 점수와 0.002에 근접합니다. NeoMME-Retriever-800M은 0.556점을 기록하며, 비슷한 크기의 Vultron Retriever Flash (0.8B)와 0.009의 nDCG@10 점수 차이를 보입니다. 두 NeoMME-Retriever 모델 모두 모델 크기 파레토 프론티어(model-size Pareto frontier) 위에 위치합니다.

ViDoRe v1과 v2는 nDCG@5를 사용합니다. 두 벤치마크에서 NeoMME-Retriever-260M은 ColModernVBERT와 두 배 더 큰 ColSmol-500M보다 성능이 우수합니다. NeoMME-Retriever-800M은 3.6배 적은 파라미터를 사용하면서도 ColPali v1.3보다 성능이 우수합니다.
| 모델 상세 정보 | ViDoRe (nDCG@k) | |||
|---|---|---|---|---|
| ... | 0.407‡ | 0.806‡ | ||
| ColSmol-256M† | 256M | 0.207 | 0.348 | 0.797 |
| NeoMME-260M‡ | 260M | 0.523 | 0.522 | 0.860 |
| 300M ~ 1B | ||||
| ColSmol-500M | 500M | 0.340‡ | 0.455† | 0.825† |
| Vultron Flash† | 850M | 0.565 | 0.604 | 0.882 |
| NeoMME-800M‡ | 800M | 0.556 | 0.559 | 0.874 |
| >1B | ||||
| ColQwen2.5-v0.2† | 3.75B | 0.524 | 0.601 | 0.895 |
| ColPali v1.3† | 2.92B | 0.430 | 0.547 | 0.848 |
† MTEB의 점수. ‡ 자체 평가 결과.
후기 상호작용(late-interaction) 저장 공간은 출력 임베딩 벡터의 개수에 선형적으로 비례합니다. 해상도가 높은 이미지는 더 많은 패치(patches)를 포함하므로, 더 큰 임베딩을 생성합니다. 예를 들어, 2048×2048 크기의 사각형 페이지는 NeoMME-Retriever를 사용했을 때 4,200개의 벡터를 포함하는 임베딩을 생성하며, 이는 float32 기준으로 약 2.1 MB입니다. ViDoRe v3 벤치마크 전반에 걸쳐 측정된 평균값은 문서당 약 1.5 MB입니다.
후기 상호작용 인덱스의 저장 공간 크기를 줄이기 위해, 우리는 두 가지 보완적인 압축 방법을 결합했습니다:
- 계층적 토큰 풀링(Hierarchical token pooling)을 사용하여 주어진 멀티벡터 임베딩 내에서 유사한 문서 벡터들을 클러스터링하고, 각 클러스터를 그 평균값으로 대체하여 페이지당 저장되는 벡터의 수를 줄입니다.
- 비대칭 양자화(Asymmetric quantization)를 통해 문서 임베딩을 int8 또는 바이너리(binary)로 양자화합니다. 쿼리 임베딩은 저장되지 않고 온디바이스(on-the-fly)에서만 생성되므로, 더 높은 정밀도로 유지할 수 있습니다.
우리는 이 설정을 ViDoRe v3에 테스트했습니다. 풀링 계수 10과 int8 쿼리 및 문서를 사용했을 때, 저장 공간은 페이지당 약 1.5 MB에서 39 kB로 감소하여 39배의 감소를 이루었으며, 기준선(baseline) nDCG@10의 99% 이상을 유지했습니다. 더 공격적인 구성으로는 풀링 계수 8, int8 쿼리 및 바이너리 문서를 사용합니다. 이 버전은 페이지당 6 kB (255배 작음)를 사용하며 원래 검색 품질의 95% 이상을 유지합니다.

NeoMME-260M late-interaction index on ViDoRe v3. 라벨은 풀링 계수, 유지된 품질, 압축률, 저장 공간을 보여줍니다.
사용자는 저장 예산과 요구되는 검색 품질에 따라 해당 프론티어(frontier)에서 압축 설정을 선택할 수 있습니다.
코퍼스(corpus)를 검색하려면, 리트리버 모델이 문서를 임베딩으로 변환해야 하며, 이 임베딩은 Qdrant, Weaviate 또는 Milvus와 같은 벡터 스토어에 저장됩니다. 인코딩 속도가 빠를수록 인덱스를 구축하고 새 문서를 추가하는 것이 빨라져, 필요한 GPU 가동 시간과 컴퓨팅 비용을 줄일 수 있습니다.
따라서 우리는 다른 멀티모달 문서 검색기(multimodal document retrievers)와 비교하여 NeoMME-Retriever의 이미지 인코딩 속도를 측정했습니다. 우리는 전처리된 이미지 텐서(image tensors)를 사용했으며, 각 모델과 이미지 크기에 대해 배치 크기(batch size)를 별도로 보정했습니다. 하나의 NVIDIA L40S에서 일치하는 2048×2048 입력 크기로 NeoMME-Retriever-260M은 초당 약 51페이지를 인코딩하며, 이는 ColModernVBERT의 초당 26페이지보다 거의 두 배 빠른 수치입니다. 260M 및 800M NeoMME-Retriever 모델 모두 작은 입력 이미지에 대해서도 우리가 비교한 다른 모델들보다 더 빠릅니다.

NeoMME-Retriever (260M 및 800M)는 밀집 벡터(dense)와 다중 벡터(multi-vector) 임베딩을 함께 반환합니다. 아래 예시는 MeanMaxSim 후기 상호작용(late interaction)과 밀집 코사인 유사도(dense cosine similarity)를 사용하여 두 개의 문서 페이지 이미지에 대해 두 가지 텍스트 쿼리 점수를 매기는 것을 보여줍니다.
전체 🤗 transformers 보기
예시 코드 스니펫
AI 자동 생성 콘텐츠
본 콘텐츠는 HuggingFace Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기