Local document preparation for retrieval-augmented generation.
Upload, inspect, chunk, and ingest documents directly into a local ChromaDB collection.
RAGPilot is a local app for RAG workflows. It helps you import documents, inspect extracted text, test chunking settings, and store the resulting chunks in ChromaDB with Ollama embeddings.
The focus is a transparent local workflow: before ingestion, you can see what was extracted from your files and how the final chunks will look.
- Local web UI for the ChromaDB path, collection name, and Ollama model
- Single-document upload or import from local folders
- Extracted-text preview, including PDF preview support
- Chunk preview before writing to ChromaDB
- Three chunking strategies:
recursive,sentence, andfixed - Configurable chunk size and overlap
- SQLite-based storage for document metadata and settings
- Ollama-based embeddings for local ChromaDB collections
- Python 3.13 or newer
- Ollama installed and running locally
- At least one installed Ollama embedding model
For example, you can install a suitable embedding model with:
ollama pull nomic-embed-textBy default, RAGPilot expects Ollama at:
http://localhost:11434
If needed, you can override this address with the OLLAMA_BASE_URL environment variable.
-
Create a virtual environment:
python -m venv venv
-
Activate the virtual environment:
venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Start the app:
python app.py
-
Open it in your browser:
http://localhost:5000
On first launch, RAGPilot walks you through the local ChromaDB configuration:
- Select or create a ChromaDB directory
- Set the collection name
- Choose an Ollama embedding model
- Continue to the document viewer
When using an existing ChromaDB directory, the folder must already exist. In new-database mode, the app creates the folder for you.
| File type | Processing |
|---|---|
| Text extraction and word positions for preview highlighting | |
| DOCX | Paragraphs, headings, tables, and basic text formatting |
| XLSX / XLS | Sheets and table data |
| CSV | Tabular text |
| TXT / MD | UTF-8 text files |
RAGPilot provides three strategies for different document structures:
| Strategy | Best for |
|---|---|
recursive |
A robust default split using multiple separator levels |
sentence |
Texts where sentence and paragraph boundaries matter |
fixed |
Even character windows with a fixed size |
Chunk size and overlap can be adjusted in the UI before ingestion.
RAGPilot runs locally and stores project state in these locations:
| Path | Contents |
|---|---|
data/Database.db |
Document metadata and configuration |
uploads/ |
Uploaded PDFs used for previews |
| ChromaDB directory | Local vector store |
These files are local working data and usually should not be committed.
- The app is designed for local use.
- The maximum upload size is set to 50 MB in
app.py. - Embeddings are generated through the configured local Ollama model.
