Feature Extraction
Transformers
Safetensors
English
modernvbert
sparse-retrieval
splade
visual-document-retrieval
multimodal
information-retrieval
inference-free
Instructions to use naver/v-splade-efficient with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use naver/v-splade-efficient with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="naver/v-splade-efficient")# Load model directly from transformers import AutoProcessor, BiModernVBert processor = AutoProcessor.from_pretrained("naver/v-splade-efficient") model = BiModernVBert.from_pretrained("naver/v-splade-efficient") - Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| language: | |
| - en | |
| tags: | |
| - sparse-retrieval | |
| - splade | |
| - visual-document-retrieval | |
| - multimodal | |
| - information-retrieval | |
| - inference-free | |
| pipeline_tag: feature-extraction | |
| library_name: transformers | |
| <p align="center"> | |
| <img src="v-splade-logo.png" alt="V-SPLADE" width="480"/> | |
| </p> | |
| # V-SPLADE: Inference-Free Multimodal Learned Sparse Retrieval for Production-Scale Visual Document Search | |
| **Paper:** [arXiv:2605.30917](https://arxiv.org/abs/2605.30917) · **Code:** [github.com/naver/v-splade](https://github.com/naver/v-splade) | |
| > **This repository hosts the `Efficient` variant** (lower FLOPs). For the higher-quality checkpoint, see [`naver/v-splade-quality`](https://huggingface.co/naver/v-splade-quality). | |
| ## Model Summary | |
| **V-SPLADE** is a **0.25B (250M) inference-free sparse retriever** for visual-document retrieval — retrieving image-based document pages (rendered PDFs, slides, scanned reports) from a text query. | |
| - **Inference-free** — queries are resolved by a learned Bag-of-Words lookup with **no neural query encoding at serving time**, so retrieval runs on a standard inverted index (Pyserini / PISA) without a GPU. | |
| - **Direct visual embedding** — document pages are encoded directly into sparse vectors, building indexes **over 20× faster** than caption- or OCR-based text-extraction pipelines. | |
| ## Benchmark Performance | |
| ### Six visual-document benchmarks (NDCG@5) | |
| | Model | Size | ViDoRe v1 | v2 | v3 | VisRAG | VisDoc OOD | IRPAPERS | Avg | | |
| | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | |
| | BiModernVBERT (dense) | 0.25B | 67.6 | 35.7 | 28.9 | 60.5 | 53.4 | 31.8 | 46.3 | | |
| | BM25 (caption, Qwen3-VL) | — | 67.5 | 44.1 | 38.3 | 76.5 | 58.0 | 38.4 | 53.8 | | |
| | BM25 (unstructured OCR) | — | 68.2 | 41.7 | 38.7 | 61.1 | 51.2 | 65.7 | 54.4 | | |
| | [**V-SPLADE Quality**](https://huggingface.co/naver/v-splade-quality) | 0.25B | **77.4** | **49.9** | **40.9** | 76.4 | **61.7** | 54.0 | **60.1** | | |
| | [**V-SPLADE Efficient**](https://huggingface.co/naver/v-splade-efficient) | 0.25B | 74.6 | 46.6 | 37.6 | 73.0 | 59.5 | 47.1 | 56.4 | | |
| V-SPLADE Quality improves average NDCG@5 by **+13.8pp** over the same-scale dense baseline (BiModernVBERT) and by up to **+6.3pp** over the OCR/caption BM25 baselines. | |
| ### Production-scale retrieval (18.7M-document corpus) | |
| | Model | R@5 | R@100 | Query latency | | |
| | --- | ---: | ---: | --- | | |
| | BiModernVBERT (same-scale dense) | 0.090 | 0.299 | ~HNSW | | |
| | **V-SPLADE** | **0.228** | **0.520** | ~HNSW approx | | |
| V-SPLADE more than **doubles R@5** over the same-backbone dense retriever at production scale, and retains recall more robustly as the corpus grows from 500K to 18.7M pages. | |
| ### Document encoding throughput | |
| | Method | Pages/sec | | |
| | --- | ---: | | |
| | **V-SPLADE (ours)** | **20.19** | | |
| | Qwen3-VL-30B-A3B caption (vLLM, eff. 3B) | 0.83 | | |
| | Unstructured OCR (Tesseract hi_res) | 0.90 | | |
| Measured on a single H100 GPU with 4 CPU cores, using 1,000 sampled documents across the six benchmarks. V-SPLADE is **over 20× faster** than caption- or OCR-based text-extraction pipelines for index building. | |
| ## Quick Start | |
| Install (see the [code repository](https://github.com/naver/v-splade) for full instructions): | |
| ```bash | |
| git clone https://github.com/naver/v-splade.git | |
| cd v-splade | |
| python -m venv .venv && source .venv/bin/activate | |
| pip install --upgrade pip | |
| pip install torch torchvision torchaudio \ | |
| --index-url https://download.pytorch.org/whl/cu128 | |
| grep -v -E '^(torch|flash-attn)==' requirements.txt > requirements_filtered.txt | |
| pip install -r requirements_filtered.txt | |
| pip install flash-attn==2.8.3 --no-build-isolation --no-cache-dir | |
| ``` | |
| ### Single-image inference (minimal example) | |
| The shortest path to seeing V-SPLADE work on your own page image — encode one image into a sparse vocabulary vector, inspect the top-activated tokens, and score a text query against it: | |
| ```bash | |
| python examples/quickstart.py \ | |
| --hf_dir naver/v-splade-efficient \ | |
| --image examples/sample_page.png \ | |
| --queries "send signed forms" "records office" | |
| ``` | |
| Expected output (against the sample page): | |
| ``` | |
| [2/3] Encoding image: examples/sample_page.png | |
| sparse vector shape=(50368,) nnz=552 max=1.836 | |
| Top-10 activated tokens: | |
| 1.836 'dog' | |
| 1.672 'dogs' | |
| 1.586 'puppy' | |
| 1.570 'Records' | |
| 1.523 'Bennett' | |
| ... | |
| [3/3] Query-image similarity scores | |
| score= 0.997 query='send signed forms' | |
| top matches: forms(0.438), send(0.403), signed(0.156) | |
| score= 0.594 query='records office' | |
| top matches: office(0.594) | |
| ``` | |
| ## License | |
| This model and the accompanying code are released under the **Apache License 2.0**. See [`LICENSE`](https://huggingface.co/naver/v-splade-efficient/blob/main/LICENSE) in the repository for the full text. | |
| Base model ([ModernVBERT/modernvbert](https://huggingface.co/ModernVBERT/modernvbert)) and caption generator ([Qwen3-VL-30B-A3B](https://huggingface.co/Qwen/Qwen3-VL-30B-A3B-Instruct)) are subject to their own licenses; please review them before redistribution or commercial use. | |
| **Training data.** This model was trained on [vidore/colpali_train_set](https://huggingface.co/datasets/vidore/colpali_train_set) and [rlhn/rlhn-680K](https://huggingface.co/datasets/rlhn/rlhn-680K). `rlhn/rlhn-680K` is distributed under **CC BY-SA 4.0**. `vidore/colpali_train_set` is a collection of multiple source datasets, each of which remains under its own original license. | |
| ## Citation | |
| ```bibtex | |
| @misc{cho2026vsplade, | |
| title = {Inference-Free Multimodal Learned Sparse Retrieval for Production-Scale Visual Document Search}, | |
| author = {Cho, Gyu-Hwung and Lee, Youngjune and Jeong, Kiyoon and Lee, Siyoung and Han, Sanggyu and Dejean, Herv{\'e} and Clinchant, St{\'e}phane and Hwang, Seung-won}, | |
| year = {2026}, | |
| eprint = {2605.30917}, | |
| archivePrefix = {arXiv}, | |
| primaryClass = {cs.IR} | |
| } | |
| ``` | |
| ## Authors | |
| Gyu-Hwung Cho (NAVER Corp. & Seoul National University), Youngjune Lee, Kiyoon Jeong, Siyoung Lee, Sanggyu Han (NAVER Corp.), Hervé Dejean, Stéphane Clinchant (Naver Labs Europe), Seung-won Hwang (Seoul National University, corresponding). | |
| ## Contact | |
| Issues and pull requests welcome at [github.com/naver/v-splade](https://github.com/naver/v-splade). For research questions, contact the author at `gyuhwung.cho@navercorp.com`. | |