Skip to main content

Retrieval-Augmented Generation - (RAG)

Project description

ecdallm

PyPI version Python versions License

ecdallm is a lightweight Retrieval-Augmented Generation (RAG) application that lets you chat with your own documents using a locally running LLM.

It combines:

  • FastAPI web interface
  • Local embedding pipeline (FastEmbed)
  • Persistent vector storage (ChromaDB)
  • Document ingestion (PDF, TXT, DOCX)
  • CLI launcher
  • Local LLM support (e.g., LM Studio)

The goal is to provide a simple, reproducible environment for document-grounded LLM interaction without relying on external APIs.


Overview

ecdallm allows you to:

  1. Upload documents
  2. Index them into a vector database
  3. Run semantic retrieval
  4. Query a local LLM with grounded context

All embeddings and vector storage run locally.

Your LLM also runs locally — for example using LM Studio.

This makes the system suitable for:

  • research environments
  • private document analysis
  • offline experimentation
  • RAG prototyping

Installation

Install from PyPI:

pip install ecdallm

Running the application

Start the CLI:

ecdallm

The CLI will:

  • find a free port (starting from 8000)
  • start the FastAPI server
  • open the browser automatically

Example output:

ecdallm running at http://127.0.0.1:8000/
INFO: Uvicorn running on http://127.0.0.1:8000

Using a local LLM

ecdallm expects an OpenAI-compatible endpoint.

For example, with LM Studio:

  1. Start LM Studio server
  2. Load a chat model
  3. Enable the local API server

Typical endpoint:

http://localhost:1234/v1

You will configure this from the web interface.


Supported document types

  • PDF
  • TXT
  • DOCX

Workflow

1. Upload documents

Use the Upload page to add files.

2. Index documents

Files are automatically indexed into ChromaDB using FastEmbed.

3. Chat with documents

Open the Chat page and ask questions.

The assistant will:

  • retrieve relevant chunks
  • build a grounded prompt
  • query the local LLM
  • return a concise answer

Project structure

ecdallm/
├── cli.py
└── app/
    ├── main.py
    ├── rag.py
    ├── paths.py
    ├── search_engine.py
    ├── vector.py
    ├── templates/
    ├── static/
    ├── uploads/
    └── rag_store/

Notes

At this stage, ecdallm is designed to work with locally running LLMs. No external API calls are required for embeddings or retrieval.

This keeps the system:

  • private
  • reproducible
  • offline-friendly

Erasmus Data Collaboratory

Developed by the Erasmus Data Collaboratory (ECDA).

  • Zaman Ziabakhshganji — creator and maintainer
  • Farshad Radman — co-author and contributor
  • Jos van Dongen — co-author and contributor

License

MIT License

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

ecdallm-0.1.3.tar.gz (87.2 kB view details)

Uploaded Source

Built Distribution

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

ecdallm-0.1.3-py3-none-any.whl (90.0 kB view details)

Uploaded Python 3

File details

Details for the file ecdallm-0.1.3.tar.gz.

File metadata

  • Download URL: ecdallm-0.1.3.tar.gz
  • Upload date:
  • Size: 87.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.11.0 Darwin/25.2.0

File hashes

Hashes for ecdallm-0.1.3.tar.gz
Algorithm Hash digest
SHA256 73b43aeb287f31d17cb11c7d90d8858ef58c6e081bccf6f89a67aee11e17ac88
MD5 832451b23d76ed87c99e52feeb2d1251
BLAKE2b-256 b917839240451ae4554c8c3a75a8c902660981bace8309d0b01d6ebacfe59b9f

See more details on using hashes here.

File details

Details for the file ecdallm-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: ecdallm-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 90.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.11.0 Darwin/25.2.0

File hashes

Hashes for ecdallm-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 447c0b9e45612133325212b132385efaad98960be98361be7de9111d856f5d6d
MD5 41bff19887a9f583b087a3c8b25c1061
BLAKE2b-256 dcc090b92ea425fe451078300dc12b932c9c1c1738356f51b16f8770a729ba30

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