Skip to content

Contributing

Thanks for your interest in improving RAGMill!

Development setup

git clone https://github.com/Abdullahbinaqeel/RAGMill.git
cd RAGMill
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

Use Python 3.12onnxruntime doesn't publish wheels for the very newest Python releases right away.

Running tests

pytest                    # unit tests (integration tests skipped by default)
pytest -m integration     # tests needing a live Qdrant/Pinecone
pytest tests/test_sync.py -v

Tests that need to download the embedding model skip themselves automatically when there's no network.

Code style

black src tests           # format
mypy src                  # type-check
  • Keep new dependencies optional — add them to the right extra in pyproject.toml, and import them lazily (inside functions), so import ragmill stays zero-dependency.
  • Add or update tests for any behavior change; bug fixes get a regression test.

Adding a vector-store backend

Implement BaseVectorStore (see vector_store.py) and register it in store_from_config(). The existing pinecone_store.py / qdrant_store.py are good templates.

Building the docs

pip install "ragmill[docs]"
mkdocs serve              # preview at http://127.0.0.1:8000
mkdocs build --strict     # verify no broken links before pushing

See Publishing these docs for the deploy pipeline.

Pull requests

  • Branch off main, keep changes focused.
  • Use Conventional Commits for messages (feat:, fix:, docs:, refactor:, test:, chore:).
  • Make sure pytest, black, and mypy pass, and mkdocs build --strict is clean if you touched docs.