47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# RAG Skill
|
|
|
|
The RAG skill is the primary way to use haiku.rag tools. It bundles search, Q&A, document browsing, and research into a single skill with managed state.
|
|
|
|
## `create_skill(db_path?, config?)`
|
|
|
|
```python
|
|
from haiku.rag.skills.rag import create_skill
|
|
|
|
skill = create_skill(db_path=db_path, config=config)
|
|
```
|
|
|
|
| Parameter | Default | Description |
|
|
|-----------|---------|-------------|
|
|
| `db_path` | `None` | Path to LanceDB database. Falls back to `HAIKU_RAG_DB` env var, then config default. |
|
|
| `config` | `None` | `AppConfig` instance. If None, uses `get_config()`. |
|
|
|
|
## Tools
|
|
|
|
| Tool | Purpose |
|
|
|------|---------|
|
|
| `search(query, limit?)` | Hybrid search (vector + full-text) with context expansion |
|
|
| `list_documents(limit?, offset?, filter?)` | Paginated document listing |
|
|
| `get_document(query)` | Retrieve a document by ID, title, or URI |
|
|
| `ask(question)` | Q&A with citations via the QA agent |
|
|
| `research(question)` | Deep multi-agent research producing comprehensive reports |
|
|
|
|
## State
|
|
|
|
The skill manages a `RAGState` under the `"rag"` namespace:
|
|
|
|
```python
|
|
class RAGState(BaseModel):
|
|
citations: list[Citation] = []
|
|
qa_history: list[QAHistoryEntry] = []
|
|
document_filter: str | None = None
|
|
searches: dict[str, list[SearchResult]] = {}
|
|
documents: list[DocumentInfo] = []
|
|
reports: list[ResearchEntry] = []
|
|
```
|
|
|
|
- **citations** — Accumulated citations from `ask` calls, with sequential indexing across calls.
|
|
- **qa_history** — Questions and answers from `ask` calls. Prior Q&A is used as context for follow-up questions when embeddings are similar.
|
|
- **document_filter** — SQL WHERE clause applied to `search`, `ask`, and `research` calls. Set this to scope queries to specific documents.
|
|
- **searches** — Search results keyed by query string.
|
|
- **documents** — Documents seen via `list_documents` or `get_document` (deduplicated by ID).
|
|
- **reports** — Research reports from `research` calls.
|