Releases: illuin-tech/vidore-benchmark
v5.0.0: Package restructure
Description
This release is an extensive package restructure, making vidore-benchmark faster and easier to use. Among the main new features:
⚡ Faster eval with optimized data loading
💽 Support for BEIR format
🖥️ A cleaner, more intuitive CLI
🐍 Evaluate vision retrieval straight from the Python API
🚨 This releases introduces many breaking changes, thus it is NOT backward-compatible with previous versions.
Features
Added
- Add CLI eval support for ColQwen2, DSEQwen2, Cohere, ColIdefics3 API embedding models
- Add Pydantic models for storing the ViDoRe benchmark results and metadata (includes
vidore-benchmarkversion) - Add option to create an
EvalManagerinstance fromViDoReBenchmarkResults - Add
num_workersargument when using dataloaders - Allow the creation of a
VisionRetrieverinstance using a PyTorch model and a processor that implements aprocess_imagesand aprocess_queriesmethods, similarly to the ColVision processors - Add
dataloader_prebatch_queryanddataloader_prebatch_passagearguments to avoid loading the entire datasets in memory (used to cause RAM spikes when loading large image datasets) - Add QA-to-BEIR dataset format conversion script
- Add support for the BEIR dataset format with
ViDoReEvaluatorBEIR
Changed
- [Breaking] Change the CLI argument names
- Add option to load a specific checkpoint for Hf models with
pretrained_model_name_or_path - Improve soft dependency handling in retriever classes (the
colpali-engineis now optional) - [Breaking] Change the
get_scoressignature - [Breaking] Rename
forward_documentstoforward_passagesto match the literature and reduce confusion - [Breaking] Rename
DSERetrieverintoDSEQwen2Retriever - [Breaking] Rename args in the CLI script
- When available, use
processor.get_scoresinstead of custom scoring snippet - [Breaking] Rename
ColQwenRetrievertoColQwen2Retriever - [Breaking] Rename
BiQwenRetrievertoBiQwen2Retriever - [Breaking] Revamp the
evaluatemodule. Evaluation is now handled by theViDoReEvaluatorQAclass - [Breaking] Rename
ViDoReEvaluatorintoBaseViDoReEvaluator. The newViDoReEvaluatorclass allows to create retrievers using the Python API. - Set default
num_workersto 0 in retrievers - Update default checkpoints for ColPali and ColQwen2 retrievers
Fixed
- Fix
evaluate_datasetwhen used with the BM25 retriever - Fix issue when no
pretrained_model_name_or_path = Noneinload_vision_retriever_from_registry - Fix
DummyRetriever'sget_scoresmethod - Fix processor output not being sent to the correct device in
ColQwen2Retriever - Fix bugs in
BiQwen2Retriever - Fix try-catch block for soft dep check in
SigLIPRetriever
Removed
- Remove experimental quantization module
- Remove the
interpretabilitymodule. The interpretability code has been moved and improved as part of thecolpali-engine==0.3.2release. - [Breaking] Remove support for token pooling. This feature will be re-introduced in
colpali-engine>0.3.9 - Replace
loguruwith built-inloggingmodule - Remove the
retrieve_on_datasetandretrieve_on_pdfsentrypoint scripts - Remove the
pdf_utilsmodule - Remove the
get_top_kmethod from theevaluatemodule - Remove the
plot_utilsandtest_utilsmodules - Remove the
experimentsdirectory
Tests
- Add tests for all built-in vision retrievers
- Add fixtures in retriever tests to speed up testing
- Add tests for
ViDoReBenchmarkResults - Add tests for
EvalManager - Add tests and E2E tests for cli command
evaluate-retriever - Add tests for
ViDoReEvaluatorBEIR
Full Changelog: v4.0.2...v5.0.0
v4.0.2
v4.0.1
Features
Changed
- Rename ColPali model alias to match model name (use
--model-name vidore/colpaliinstead of--model-name vidore/colpali-v1.2with thevidore-benchmark evaluate-retrieverCLI) - Use the ColPali model name to load ColPaliProcessor instead of the PaliGemma one
Fixed
- Add missing
model.eval()to all vision retrievers to make results deterministic
Full Changelog: v4.0.0...v4.0.1
v4.0.0
Description
🚨 This release is breaking as it leverages the restructured colpali-engine package. In particular, the duplicate code logic was removed. Thus, it is NOT backward-compatible with previous versions.
Features
Added
- Add "Ruff" and "Test" CI pipelines
- Add upper bound for
colpali-engineto prevent eventual breaking changes (Follow-up of #30)
Changed
- Remove unused deps from
pyproject - Clean
pyproject - Bump
colpali-enginetov0.3.0and adapt code for the new API - Replace black with ruff linter
- Add better ColPali model loading
Removed
- Remove duplicate code with
colpali-engine(e.g. removeColPaliProcessor,ColPaliScorer...)
Fixed
- Change typing to support Python 3.9
- Fix the
generate_similarity_mapsCLI - Various fixes
Full Changelog: v3.4.2...v4.0.0
v3.4.2
Features
Fixed
- Fix typo when making
model_nameconfigurable in previous release - Fix wrong image processing for ColPali
Full Changelog: v3.4.1...v3.4.2
v3.4.1
Features
Changed
- Make
model_nameconfigurable inColPaliRetrieveras optional arg - Tweak
EvalManager - Tweak
ColPaliProcessor - Improve tests
Full Changelog: v3.4.0...v3.4.1
v3.4.0
Features
Changed
- Add the
colpali-enginedependency - Add
sentence-transformersto compulsory dependencies - Bump ColPali to v1.2 [model card]
- Remove the
baselinesdependency group
Full Changelog: v3.3.0...v3.4.0
v3.3.0
Features
Added
- Add int8 quantization for embeddings (experimental)
- Add tests for int8 quantization
- Add dynamic versioning with
hatch-vcs - Add loggers in modules (with
loguru)
Changed
- Re-organize quantization modules
Fixed
- Fix dtype conversion in
ColPaliScorer - Fix int8 overflow when computing ColBERT score w/ int8 embeddings
- Fix quantization tests
Removed
- Remove unused
ColPaliWithPoolingRetriever
Full Changelog: v3.2.0...v3.3.0
v3.2.0
Features
Added
- Add experiments on token pooling
- Add
from_multiple_jsonmethod inEvalManager
Fixed
- Fix error when using token pooling with bfloat16 tensors
- Add missing L2 normalization in token pooling
Full Changelog: v3.1.0...v3.2.0
v3.1.0
Features
Added
- Add support for token pooling in document embeddings
Fixed
- Fix ruff settings
Full Changelog: v3.0.0...v3.1.0