93 lines
3.3 KiB
Markdown
93 lines
3.3 KiB
Markdown
# Interactive Research Assistant
|
|
|
|
Research assistant powered by [haiku.rag](https://ggozad.github.io/haiku.rag/), [Pydantic AI](https://ai.pydantic.dev/), and [AG-UI](https://docs.ag-ui.com/). Ask complex questions and watch the research process unfold in real-time.
|
|
|
|
[Watch demo video](https://vimeo.com/1128874386)
|
|
|
|
## Features
|
|
|
|
- **Multi-step research workflow**: Question decomposition, search, analysis, and synthesis
|
|
- **Human-in-the-loop**: Approve or revise research plans before execution
|
|
- **Live state synchronization**: Real-time updates of research progress between backend and frontend
|
|
- **Context expansion**: Automatically expands top search results for better context
|
|
- **Rich reporting**: Generates structured reports with findings, conclusions, and citations
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Docker and Docker Compose
|
|
- A haiku.rag database with indexed documents
|
|
- Ollama (or configure another LLM provider)
|
|
|
|
### Setup
|
|
|
|
1. **Prepare your knowledge base**
|
|
```bash
|
|
mkdir -p data
|
|
haiku-rag add "Your documents here" --db data/haiku_rag.lancedb
|
|
# Or add from files
|
|
haiku-rag add-src document.pdf --db data/haiku_rag.lancedb
|
|
```
|
|
|
|
2. **Configure haiku.rag**
|
|
```bash
|
|
cp haiku.rag.yaml.example haiku.rag.yaml
|
|
# Edit haiku.rag.yaml to customize provider/model
|
|
```
|
|
See [haiku.rag configuration](https://ggozad.github.io/haiku.rag/configuration/) for details.
|
|
|
|
3. **Set API keys** (if using non-Ollama providers)
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env to set your API keys
|
|
export OPENAI_API_KEY=your-key-here
|
|
export ANTHROPIC_API_KEY=your-key-here
|
|
```
|
|
|
|
4. **Start the application**
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
5. **Access the interface**
|
|
- Frontend: http://localhost:3000
|
|
- Backend health: http://localhost:8000/health
|
|
|
|
## How It Works
|
|
|
|
1. **Ask a question**: Type your research question in the chat
|
|
2. **Review the plan**: The agent decomposes your question into 3 sub-questions
|
|
3. **Approve or revise**: Choose to approve the plan or request changes
|
|
4. **Watch it work**: The agent automatically:
|
|
- Searches the knowledge base for each sub-question
|
|
- Extracts key insights from search results
|
|
- Evaluates overall confidence in findings
|
|
5. **Get your report**: Receive a structured research report with citations
|
|
|
|
## Architecture
|
|
|
|
- **Backend** (Python): Pydantic AI agent with haiku.rag integration
|
|
- Uses published `ghcr.io/ggozad/haiku.rag:latest` Docker image as base
|
|
- `agent.py`: Research agent with tool definitions
|
|
- `main.py`: Starlette app serving AG-UI protocol
|
|
|
|
- **Frontend** (Next.js): CopilotKit/AG-UI interface
|
|
- Real-time state synchronization with backend
|
|
- Interactive approval workflow
|
|
- Collapsible research plan and insights display
|
|
|
|
## Configuration
|
|
|
|
Configuration is done through `haiku.rag.yaml` (see `haiku.rag.yaml.example`):
|
|
|
|
- `qa.provider`: LLM provider (default: `ollama`)
|
|
- `qa.model`: Model name (default: `gpt-oss:latest`)
|
|
- `providers.ollama.base_url`: Ollama endpoint (default: `http://host.docker.internal:11434`)
|
|
|
|
Environment variables (see `.env.example`):
|
|
|
|
- `DB_PATH`: Path to haiku.rag database (default: `haiku_rag.lancedb`)
|
|
- `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`: API keys for cloud providers
|
|
|
|
For full configuration options, see [haiku.rag configuration docs](https://ggozad.github.io/haiku.rag/configuration/).
|