Skip to main content

Docling → Chroma → Ollama: simple, RAG pipeline

Project description

📄 DocRAG LLM

check out my python library at pypi https://pypi.org/project/docrag-llm/#description

pip install docrag-llm

DocRAG LLM is a simple, Retrieval-Augmented Generation (RAG) pipeline.
It connects Docling (document parsing) → ChromaDB (vector store) → Ollama (local LLMs) into a single workflow, with both a CLI and a Python API.


✨ Features

  • 🔍 Parse documents with Docling (PDF, DOCX, PPTX, HTML, etc.).
  • 📑 Chunk text intelligently for retrieval.
  • 🧠 Store embeddings in ChromaDB.
  • 🤖 Answer questions using Ollama (default: llama3.2:1b).
  • 🛡️ Designed for local execution (no cloud lock-in).
  • 🖥️ Works both as a CLI tool and a Python library.

📦 Installation

pip install docrag-llm

Requirements

  • Python 3.10+
  • Ollama installed and running
  • Models pulled locally:
    ollama pull llama3.2:1b
    ollama pull nomic-embed-text
    

🚀 Quickstart (CLI)

Ingest a document into Chroma

python -m docrag.cli ingest https://arxiv.org/pdf/2508.20755   --persist ./.chroma   --collection demo
  • --persist → directory for Chroma DB (default: ./.chroma)
  • --collection → logical collection name (default: demo)
  • --embed → embedding model (default: nomic-embed-text)

Ask a question (default LLM = llama3.2:1b)

python -m docrag.cli ask "Give a concise bullet summary of the paper's main contributions."   --persist ./.chroma   --collection demo
  • --llm → LLM model to use (default: llama3.2:1b)
  • --top-k → number of chunks retrieved (default: 5)

Export parsed text

python -m docrag.cli export https://arxiv.org/pdf/2508.20755   --out-dir ./exports

Saves parsed text (Markdown/JSON).


CLI Help

python -m docrag.cli --help
python -m docrag.cli ingest --help
python -m docrag.cli ask --help
python -m docrag.cli export --help

🐍 Usage as a Python Library

from docrag import DocragSettings, RAGPipeline

# Configure pipeline
cfg = DocragSettings(
    persist_path="./.chroma",
    collection="demo",
    embed_model="nomic-embed-text",
    llm_model="llama3.2:1b",
)

pipeline = RAGPipeline(cfg)

# Ingest a document
n_chunks = pipeline.ingest("https://arxiv.org/pdf/2508.20755")
print(f"Ingested {n_chunks} chunks")

# Ask a question
answer = pipeline.ask("Give a concise bullet summary of the paper's main contributions.")
print(answer)

⚙️ Configuration

Both the Python API and CLI allow controlling:

  • persist_path → path to Chroma DB
  • collection → collection name
  • embed_model → embedding model (Ollama tag)
  • llm_model → LLM model (default: llama3.2:1b)
  • chunk_chars / chunk_overlap → chunking granularity

📊 Roadmap

  • Add model-check CLI command to list installed Ollama models.
  • Support multiple backends (Weaviate, Milvus).
  • Add streaming output for long answers.
  • Expand test suite with large document regression cases.

🤝 Contributing

PRs and issues welcome! Please run lint and tests before submitting:

ruff check .
pytest

📜 License

MIT License © 2025

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docrag_llm-0.1.18.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

docrag_llm-0.1.18-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file docrag_llm-0.1.18.tar.gz.

File metadata

  • Download URL: docrag_llm-0.1.18.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for docrag_llm-0.1.18.tar.gz
Algorithm Hash digest
SHA256 94233fce33d2172f7a0372d4af8bc0bc61f8acb42e0d7e0a9c01c01a3422fa30
MD5 b0faf4c4dceca148ef0cb5d0b174a0b3
BLAKE2b-256 011fbf9c570bf893dfc1a8813b7fb48d18d1e92f23a774067b03ef1fb0648138

See more details on using hashes here.

File details

Details for the file docrag_llm-0.1.18-py3-none-any.whl.

File metadata

  • Download URL: docrag_llm-0.1.18-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for docrag_llm-0.1.18-py3-none-any.whl
Algorithm Hash digest
SHA256 55dbf9f0e14cfa6545d2f11b24167bb29ee12dd9bb95bccf3f67bd6f05ea371c
MD5 2f8fa89cc3e8079db4fc66e7b08912e3
BLAKE2b-256 a4685c8aa3c315b4fe6056a818a942eb8ad0f77565e06de04283f5136aabc0cc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page