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 either a local LLM or an external OpenAI-compatible provider.
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)
- External LLM support (OpenAI-compatible APIs)
The goal is to provide a simple, reproducible environment for document-grounded LLM interaction with flexible model connectivity.
Overview
ecdallm allows you to:
- Upload documents
- Index them into a vector database
- Run semantic retrieval
- Query an LLM with grounded context
All embeddings and vector storage run locally.
The chat model can run:
- locally (LM Studio, Ollama, etc.)
- externally (OpenRouter or OpenAI-compatible APIs)
This makes the system suitable for:
- research environments
- private document analysis
- offline experimentation
- RAG prototyping
- hybrid local/cloud workflows
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
LLM Configuration
When the application starts, click Continue and choose:
- Local LLM
- External LLM
Configuration is stored in the browser session.
Embeddings always run locally using FastEmbed with:
nomic-embed-text-v1.5
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
Default configuration:
Base URL: http://localhost:1234/v1
API Key: lm-studio
The backend automatically detects the available chat model via:
GET /models
Using an external LLM
ecdallm can connect to any OpenAI-compatible API provider.
Examples include:
- OpenRouter
- OpenAI-compatible gateways
- Self-hosted inference APIs
Example configuration (OpenRouter):
Base URL: https://openrouter.ai/api/v1
Model: openrouter/aurora-alpha
API Key: sk-or-...
Steps:
- Create an account with the provider
- Generate an API key
- Choose a chat model
- Enter the configuration in the web interface
When validating, ecdallm:
- checks connectivity
- performs a test chat completion
- stores configuration in session storage
Your API key is sent only to your backend for validation and is not used directly in the browser.
Embeddings remain local.
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 configured 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
Embeddings and retrieval always run locally.
The chat model can be:
- local (LM Studio, Ollama, etc.)
- external (OpenAI-compatible providers)
This keeps the system flexible while maintaining local document processing.
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.3.9.tar.gz.
File metadata
- Download URL: ecdallm-0.3.9.tar.gz
- Upload date:
- Size: 727.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.11.0 Darwin/25.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24724a96442fc889f63b34ed408c8be7a87c911f783be78cca9953b8db595ac5
|
|
| MD5 |
10f8bc7929835a0dbe0378705b00ccb9
|
|
| BLAKE2b-256 |
6362c3918a676b81055cad4d39366e1679a4aeeb34a160835be8639162e955a0
|
File details
Details for the file ecdallm-0.3.9-py3-none-any.whl.
File metadata
- Download URL: ecdallm-0.3.9-py3-none-any.whl
- Upload date:
- Size: 731.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.11.0 Darwin/25.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bf0f1067e8464bf060bc19f1152657fd89d61e4ec4111442eaab1e1a494a567
|
|
| MD5 |
de5f72f130a35c389bbaa00f407985db
|
|
| BLAKE2b-256 |
d09929a629942946b06cfdf946ec2dd8fa96a742f6784219753cf0eaf4a6245e
|