Thanks for improving VisoRAG. This repository is intentionally strict about source-of-truth and runtime contracts.
VisoRAG_v8_Final (1).ipynb is the authoritative implementation. The package in src/visorag/ is a maintainable extraction of that behavior. Behavior changes must update both the notebook contract and package tests unless the pull request is docs-only.
Do not reintroduce stale derived files at the repository root, including api_app.py, streamlit_app.py, visorag_core.py, README_STREAMLIT.md, old duplicate notebooks, or stale requirements.txt.
python -m pip install -e ".[dev]"
python scripts/check_notebook_contract.py
python scripts/smoke_import.py
python -m ruff format --check .
python -m ruff check .
python -m pytestThese checks do not download or run GPU models. Real ColQwen2 and Qwen2.5-VL verification should be done separately on a CUDA machine and marked clearly in the pull request.
- Edit the notebook when changing the authoritative workflow.
- Edit
src/visorag/when changing the maintainable package surface. - Update tests whenever public request validation, response contracts, supported file types, query types, or lazy-loading behavior changes.
- If the package intentionally diverges from the notebook, document the migration in
docs/source-of-truth.mdand the pull request.
- Notebook JSON parses and code cells AST-parse without executing GPU models.
- No stored notebook error outputs.
- Package import does not load ColQwen2 or Qwen2.5-VL.
process_request()signature and response contracts remain compatible.- Extraction mode still returns flat JSON.
top_kremains limited to1..20.- The 25 MB default upload limit remains documented if changed.
- No real secrets, private documents, model weights, uploads, or cache artifacts are committed.
- Security-sensitive behavior is documented in
SECURITY.mdordocs/security-model.md.