HAIKU_RAG_DB and DB_PATH are gone: a capability covers what the configuration places or the db_path it is given, and the app backend and the AG-UI example load their configuration as the CLI does. The compose files point HAIKU_RAG_CONFIG_PATH at the mounted haiku.rag.yaml, which places the database at /data where DB_VOLUME is mounted; the backend refuses a configured set since it serves one database. The chat scopes a selection by source only over a set and names databases on filter rows only across several. Docstrings, docs and test fixtures stop describing an unnamed database; every database a search, listing or citation reports carries a name.
87 lines
2.7 KiB
Markdown
87 lines
2.7 KiB
Markdown
# Web application
|
|
|
|
A browser-based reference implementation of conversational RAG, built on a Starlette backend with pydantic-ai's `AGUIAdapter` and a Next.js / CopilotKit frontend. It lives in the `app/` directory of the haiku.rag repository.
|
|
|
|
This is a starting point for your own deployments, not the canonical haiku.rag UX. For the day-to-day terminal experience see [Chat](chat.md).
|
|
|
|
!!! warning "No authentication"
|
|
An illustrative example meant as a starting point, with no authentication. The compose files bind the backend to `127.0.0.1`; don't expose it to an untrusted network.
|
|
|
|
## Features
|
|
|
|
- Streaming chat with real-time tool execution visibility.
|
|
- Expandable citations with source documents, pages, and headings.
|
|
- Visual grounding to view chunk source locations in documents.
|
|
- Document filter to restrict searches to selected documents.
|
|
- Session state view for inspecting citations and search results.
|
|
|
|
## Quick start
|
|
|
|
```bash
|
|
cd app
|
|
docker compose -f docker-compose.dev.yml up -d --build
|
|
```
|
|
|
|
- Frontend: `http://localhost:3000`
|
|
- Backend: `http://localhost:8001`
|
|
|
|
## Architecture
|
|
|
|
- **Backend**: Starlette server with pydantic-ai `AGUIAdapter`.
|
|
- **Frontend**: Next.js with CopilotKit.
|
|
- **Protocol**: AG-UI for streaming chat.
|
|
|
|
## Configuration
|
|
|
|
Create a `.env` file in the `app/` directory:
|
|
|
|
```bash
|
|
# API Keys (at least one required)
|
|
ANTHROPIC_API_KEY=your-anthropic-key
|
|
OPENAI_API_KEY=your-openai-key
|
|
|
|
# Host path of the LanceDB database, mounted at /data
|
|
DB_VOLUME=/path/to/your/haiku.rag.lancedb
|
|
|
|
# Optional: Ollama base URL (if using local models)
|
|
OLLAMA_BASE_URL=http://localhost:11434
|
|
|
|
# Optional: Logfire for observability
|
|
LOGFIRE_TOKEN=your-logfire-token
|
|
```
|
|
|
|
The mounted `haiku.rag.yaml` places the database at `/data` and configures the models; the compose files point `HAIKU_RAG_CONFIG_PATH` at it:
|
|
|
|
```yaml
|
|
# app/haiku.rag.yaml
|
|
lancedb:
|
|
databases:
|
|
haiku.rag: /data
|
|
|
|
qa:
|
|
model:
|
|
provider: anthropic
|
|
name: claude-sonnet-4-20250514
|
|
```
|
|
|
|
Outside compose, the backend loads its configuration like the CLI: `HAIKU_RAG_CONFIG_PATH`, then `./haiku.rag.yaml`, then the platform directory.
|
|
|
|
## API endpoints
|
|
|
|
| Endpoint | Method | Description |
|
|
|----------|--------|-------------|
|
|
| `/v1/chat/stream` | POST | AG-UI chat streaming |
|
|
| `/api/documents` | GET | List all documents |
|
|
| `/api/info` | GET | Database statistics |
|
|
| `/api/visualize/{chunk_id}` | GET | Visual grounding images (base64) |
|
|
| `/health` | GET | Health check |
|
|
|
|
## Development
|
|
|
|
The backend reloads automatically on file changes. For frontend changes:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.dev.yml up -d --build frontend
|
|
```
|
|
|
|
If `LOGFIRE_TOKEN` is set, LLM calls are traced and available in the Logfire dashboard.
|