haiku.rag/docs/skills/rag.md

1.7 KiB

RAG Skill

The RAG skill is the primary way to use haiku.rag tools. It bundles search, document browsing, and citation management into a single skill with managed state.

create_skill(db_path?, config?)

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() List all documents in the knowledge base
get_document(query) Retrieve a document by ID, title, or URI
cite(chunk_ids) Register chunk IDs as citations for the current answer

State

The skill manages a RAGState under the "rag" namespace:

class RAGState(BaseModel):
    citation_index: dict[str, Citation] = {}
    citations: list[str] = []
    document_filter: str | None = None
    searches: dict[str, list[SearchResult]] = {}
  • citation_index — All citations indexed by chunk ID. Accumulates across invocations so historical turns' chunk IDs remain resolvable in the UI scrollback.
  • citations — Chunk IDs registered via the cite tool during the current invocation. Deduplicated; cleared at the start of each invocation.
  • document_filter — SQL WHERE clause applied to search and list_documents calls. Persists across invocations as session-level configuration.
  • searches — Search results keyed by query string. Cleared at the start of each invocation.