No description
Find a file
2026-03-12 12:05:51 +02:00
.github Prevent HuggingFace network access during tests 2026-03-05 12:10:07 +02:00
app Adapt to haiku.skills streaming sub-agent ag-ui events 2026-03-03 11:16:44 +02:00
docker Clarify folder mounts in docker docs, check monitor paths exist in FileWatcher 2025-12-19 11:58:08 +02:00
docs Compactify tuning.md 2026-03-12 12:05:50 +02:00
evaluations Respect config.prompts.qa in evaluations benchmark and optimization 2026-03-12 12:05:51 +02:00
examples Adapt to haiku.skills streaming sub-agent ag-ui events 2026-03-03 11:16:44 +02:00
haiku_rag_slim Prevent read-only mode from creating tables in empty directories 2026-03-12 11:42:04 +02:00
scripts Fix changelog and bump version script 2026-02-19 12:32:11 +02:00
tests Prevent read-only mode from creating tables in empty directories 2026-03-12 11:42:04 +02:00
.dockerignore Update docker build 2025-11-04 18:43:41 +02:00
.gitignore Chunkers return chunks with metadata, i.e. (refs, labels, headings, page_numbers) 2025-12-08 15:54:31 +02:00
.pre-commit-config.yaml Fix precommit to use uv installed ruff 2026-03-12 12:05:25 +02:00
.python-version Use 3.13 for development 2025-10-09 10:18:10 +03:00
CHANGELOG.md Properly choose training/eval set 2026-03-12 12:05:50 +02:00
LICENSE MIT license 2025-06-18 10:17:27 +02:00
mkdocs.yml Skills documentation 2026-02-20 16:37:15 +02:00
pyproject.toml vb 2026-03-11 17:08:22 +02:00
README.md Fix stale docs 2026-02-20 16:59:58 +02:00
server.json Update mcp registry schema 2025-12-19 12:39:39 +02:00
uv.lock Fix precommit to use uv installed ruff 2026-03-12 12:05:25 +02:00

Haiku RAG

Tests codecov

Agentic RAG built on LanceDB, Pydantic AI, and Docling.

Features

  • Hybrid search — Vector + full-text with Reciprocal Rank Fusion
  • Question answering — QA agents with citations (page numbers, section headings)
  • Reranking — MxBAI, Cohere, Zero Entropy, or vLLM
  • Research agents — Multi-agent workflows via pydantic-graph: plan, search, evaluate, synthesize
  • RLM agent — Complex analytical tasks via sandboxed Python code execution (aggregation, computation, multi-document analysis)
  • Conversational RAG — Chat TUI and web application for multi-turn conversations with session memory
  • Document structure — Stores full DoclingDocument, enabling structure-aware context expansion
  • Multiple providers — Embeddings: Ollama, OpenAI, VoyageAI, LM Studio, vLLM. QA/Research: any model supported by Pydantic AI
  • Local-first — Embedded LanceDB, no servers required. Also supports S3, GCS, Azure, and LanceDB Cloud
  • CLI & Python API — Full functionality from command line or code
  • MCP server — Expose as tools for AI assistants (Claude Desktop, etc.)
  • Visual grounding — View chunks highlighted on original page images
  • File monitoring — Watch directories and auto-index on changes
  • Time travel — Query the database at any historical point with --before
  • Inspector — TUI for browsing documents, chunks, and search results

Installation

Python 3.12 or newer required

pip install haiku.rag

Includes all features: document processing, all embedding providers, and rerankers.

Using uv? uv pip install haiku.rag

Slim Package (Minimal Dependencies)

pip install haiku.rag-slim

Install only the extras you need. See the Installation documentation for available options.

Quick Start

Note

: Requires an embedding provider (Ollama, OpenAI, etc.). See the Tutorial for setup instructions.

# Index a PDF
haiku-rag add-src paper.pdf

# Search
haiku-rag search "attention mechanism"

# Ask questions with citations
haiku-rag ask "What datasets were used for evaluation?" --cite

# Research mode — iterative planning and search
haiku-rag research "What are the limitations of the approach?"

# RLM mode — complex analytical tasks via code execution
haiku-rag rlm "How many documents mention transformers?"

# Interactive chat — multi-turn conversations with memory
haiku-rag chat

# Watch a directory for changes
haiku-rag serve --monitor

See Configuration for customization options.

Python API

from haiku.rag.client import HaikuRAG

async with HaikuRAG("research.lancedb", create=True) as rag:
    # Index documents
    await rag.create_document_from_source("paper.pdf")
    await rag.create_document_from_source("https://arxiv.org/pdf/1706.03762")

    # Search — returns chunks with provenance
    results = await rag.search("self-attention")
    for result in results:
        print(f"{result.score:.2f} | p.{result.page_numbers} | {result.content[:100]}")

    # QA with citations
    answer, citations = await rag.ask("What is the complexity of self-attention?")
    print(answer)
    for cite in citations:
        print(f"  [{cite.chunk_id}] p.{cite.page_numbers}: {cite.content[:80]}")

For research agents and chat, see the Agents docs.

MCP Server

Use with AI assistants like Claude Desktop:

haiku-rag serve --mcp --stdio

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "haiku-rag": {
      "command": "haiku-rag",
      "args": ["serve", "--mcp", "--stdio"]
    }
  }
}

Provides tools for document management, search, QA, and research directly in your AI assistant.

Examples

See the examples directory for working examples:

  • Docker Setup - Complete Docker deployment with file monitoring and MCP server
  • Web Application - Full-stack conversational RAG with CopilotKit frontend

Documentation

Full documentation at: https://ggozad.github.io/haiku.rag/

License

This project is licensed under the MIT License.

mcp-name: io.github.ggozad/haiku-rag