Local-first RAG assistant with:
- Next.js frontend (
frontend/) - FastAPI backend (
api.py) - ChromaDB vector store (
data/chroma) - SQLite app database (
data/app.db)
- Added true hybrid retrieval:
- dense vector retrieval (Chroma)
- sparse lexical retrieval (BM25)
- rank fusion with RRF
- Added optional HyDE retrieval branch for ambiguous queries.
- Added page metadata support for chunk citations.
- Expanded retrieval testing with RFC2812 benchmark scenarios.
- Vector only
- Vector + BM25 (default recommended)
- Vector + BM25 + HyDE (optional, best for some vague queries)
- Workspace and chat management
- PDF upload and background indexing
- Hybrid search + HyDE
- JSON chat exporting
- Streaming chat responses (SSE)
- All core data stays on your machine: SQLite + ChromaDB
- Markdown/LaTeX rendering in chat
- Use it on LAN by pointing clients to your backend host
- Frontend: Next.js + React + shadcn/ui
- Backend: FastAPI + aiohttp + sentence-transformers
- Retrieval: Chroma vector search (workspace-scoped)
- Persistence: SQLite for app entities and metadata
- Python 3.11+
- uv
- Node.js 20+
- pnpm 9+
- Ollama running with your selected model
- Setup requirements
- Fast API
uv sync - Next.JS
pnpm install(inside frontend directory)
- Start backend + frontend:
.\Start.ps1- Open app:
- Frontend:
http://localhost:3000 - Backend:
http://localhost:8000
- File:
CONFIG.toml - Main options:
- server upload path and model name
- Chroma persistence path/collection
- embedding model
Set in frontend/.env:
NEXT_PUBLIC_API_BASE_URL=http://localhost:8000For LAN usage, set it to your backend machine IP:
NEXT_PUBLIC_API_BASE_URL=http://192.168.x.x:8000Important: restart frontend after changing .env.
cd frontend
pnpm build
pnpm start -- --hostname 0.0.0.0 --port 3000uv run uvicorn api:app --host 0.0.0.0 --port 8000src/
api.py
chroma.py
database.py
CONFIG.toml
shared.py
hybrid_search.py
Start.ps1
frontend/
app/
components/
package.json
frontend_lite
testing/
tinyAgent
- frontend_lite - small frontend version without framework dependecies
- tinyAgent - my approach to make tiny codex like agent (very early stage)
- Hybrid retrieval (vector + keyword)
- Config/settings UI
- Improved evaluation and observability
- Optional packaging for non-dev users
This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for details.



