Retrieval-Augmented Generation - (RAG)
Project description
ecdallm
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:
- Upload documents
- Index them into a vector database
- Run semantic retrieval
- 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:
- Start LM Studio server
- Load a chat model
- Enable the local API server
Typical endpoint:
http://localhost:1234/v1
You will configure this from the web interface.
Supported document types
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73b43aeb287f31d17cb11c7d90d8858ef58c6e081bccf6f89a67aee11e17ac88
|
|
| MD5 |
832451b23d76ed87c99e52feeb2d1251
|
|
| BLAKE2b-256 |
b917839240451ae4554c8c3a75a8c902660981bace8309d0b01d6ebacfe59b9f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
447c0b9e45612133325212b132385efaad98960be98361be7de9111d856f5d6d
|
|
| MD5 |
41bff19887a9f583b087a3c8b25c1061
|
|
| BLAKE2b-256 |
dcc090b92ea425fe451078300dc12b932c9c1c1738356f51b16f8770a729ba30
|