haiku.rag について
haiku.ragは、個人の文書についてページ番号や見出しを引用しながら回答するローカル優先のRAGシステムです。組み込みLanceDBとOllamaを既定で使い、ほかのプロバイダーやクラウドデータベースにも対応します。
主な機能
- 01文書や画像の取り込み
- 02ベクトル検索と全文検索の併用
- 03任意の再ランキングと画像検索
- 04ページ番号と見出し付きの回答
- 05CLI、Python API、ターミナルチャット
活用シーン
- 01個人文書の検索と要約
- 02引用元のページの確認
- 03文書横断の集計やカウント
- 04MCP経由でアシスタントに文書検索を提供
MCP 対応
クライアントに文書検索、文書読み取り、Pythonサンドボックスを提供するMCPサーバーを備えています。`haiku-rag mcp --stdio`で起動できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
haiku.rag
ページ番号とセクション見出しを引用しながら、独自のドキュメントに関する質問に回答するエージェント型 RAG です。デフォルトでは、Ollama を通じてオープンモデルを組み込みの LanceDB データベースで実行するため、サーバーも API キーも必要ありません。Pydantic AI がサポートする任意のプロバイダーを代わりに利用でき、同じデータベースを S3、GCS、Azure、または LanceDB Cloud 上に置くこともできます。
LanceDB、Pydantic AI、Docling を基盤に構築されています。ドキュメント:ggozad.github.io/haiku.rag。
機能
- 取り込み Docling を使って PDF、オフィス文書、HTML、Markdown、画像を、プロセス内または docling-serve 上で取り込みます。保存される DoclingDocument には、見出し、表、画像、ページの出典情報が保持されます。
- 検索 ベクトル検索と全文検索を組み合わせたハイブリッド検索、任意の再ランキング(cross-encoders、Jina、Cohere、Zero Entropy、vLLM、OpenRouter)、セクションを考慮したコンテキスト拡張、マルチモーダル埋め込みモデルによる画像検索(vLLM、OpenRouter、VoyageAI、Cohere)を利用できます。名前付きデータベースを複数同時に検索できます。
- 回答 RAG 機能で検索し、ドキュメントに対してサンドボックス化された Python を実行して集計やカウントを行い、ページ番号と見出しを引用します。ビジョンモデルには図表が渡されます。任意の機能を使うと、長い会話で以前の根拠を簡潔にまとめたり、すべての回答で根拠の明示を必須にしたりできます。
- 確認 CLI、チャット TUI、または Python から、ページ画像上にチャンクを描画して引用箇所を確認できます。
- 連携 Python API、ネイティブの Pydantic AI 機能、ドキュメントの書き込みを監視して検索を変換するプラグインフック、Claude Code、Codex、Claude Desktop 用の MCP サーバー、リファレンス Web アプリを通じて連携できます。
- 運用
haiku-ingesterサービス(ファイルシステム、HTTP、S3、WebDAV のソース、再試行機能付きの SQLite または Postgres ジョブキュー、コントロールプレーン、ダッシュボード)、タグとロールバック、バキューム、haiku-rag doctorによるヘルスチェックを利用できます。
インストール
Python 3.12 以降が必要です。
pip install haiku.rag # Docling, the VoyageAI and Cohere embedders, every reranker, the TUI
pip install haiku.rag-slim # the core, with extras chosen by you
ingester、S3 アクセス、Ollama と OpenAI 互換エンドポイント以外のモデルプロバイダーは追加機能です。インストールを参照してください。
クイックスタート
デフォルト設定では、埋め込みと回答に Ollama を使用します。クイックスタートでは、ダウンロードするモデルと OpenAI の使用方法を説明しています。
haiku-rag init # create the database
haiku-rag add-src paper.pdf # index a file, URL or directory
haiku-rag search "attention mechanism"
haiku-rag ask "What datasets were used for evaluation?"
haiku-rag ask "How many documents mention transformers?"
haiku-rag ask "Does this figure match the spec?" --image figure.png
haiku-rag chat # multi-turn chat in the terminal
設定済みのソースから継続的に取り込むには、ingester の追加機能(pip install 'haiku.rag[ingester]')を使い、別サービスとして実行します。
haiku-ingester serve
Python API
from haiku.rag.client import HaikuRAG
async with HaikuRAG("knowledge.lancedb", create=True) as rag:
await rag.create_document_from_source("paper.pdf")
await rag.create_document_from_source("https://arxiv.org/pdf/1706.03762")
results = await rag.search("self-attention")
for result in results:
print(f"{result.score:.2f} | p.{result.page_numbers} | {result.content[:100]}")
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]}")
独自のエージェントを組み立てる方法については、機能を参照してください。
MCP サーバー
haiku-rag mcp --stdio
このサーバーは、ドキュメントを対象とする検索、ドキュメントの読み取り、Python サンドボックスをアシスタントに提供します。Claude Code では、プラグインがスキルを使ってサーバーを登録します。
claude plugin marketplace add ggozad/haiku.rag
claude plugin install haiku-rag
Codex と Claude Desktop の設定については、MCP ドキュメントを参照してください。
例
- Docker のセットアップ:docling-serve、ingester、MCP サーバー
- Web アプリケーション:ブラウザーでチャット、取り込み、インスペクター、doctor を利用
ドキュメント
- クイックスタート: インストール、インデックス作成、チャット
- インストール: パッケージと追加機能
- アーキテクチャ: ドキュメントが引用付きの回答になるまでの流れ
- CLIとチャットとインスペクター
- 機能: Pydantic AI のネイティブ機能
- 設定: すべての設定項目とチューニング
- インジェスター、MCP、リモート処理
- Python APIとカスタムパイプライン
- ベンチマークと変更履歴
ライセンス
MIT.
mcp-name: io.github.ggozad/haiku-rag
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。