1. プロジェクト概要
llm-app (Pathway提供)は、本番環境レベルのRAG(検索拡張生成)パイプラインや、SharePoint、Google Drive、S3、Kafka、PostgreSQLなどのライブデータソースと継続的に同期し続けるエンタープライズ検索アプリを構築するための、すぐに実行できるDocker対応テンプレート集です。別途ベクトルデータベースやインデックスサービスは不要です。
2. 背景と位置づけ
多くのRAGチュートリアルは、静的で一度だけ読み込まれたドキュメントセットを前提としています。しかし実際の組織では、ナレッジベースは常に変化します。新しいファイルがアップロードされ、古いものは削除され、権限も変更されます。llm-appは、RustベースのPathwayデータ処理エンジンを開発するPathway社によって、このギャップを埋めるために構築されました。各テンプレートには、基盤となるデータソースの追加、更新、削除を検出し、手動での再インデックスステップなしで検索結果にリアルタイムで反映する、ライブかつインクリメンタルなインデックスパイプラインが備わっています。
プロンプトやチェーンのロジックのみに焦点を当てた一般的なRAGサンプルリポジトリと比較して、llm-appは以下の点で差別化されています。
- データコネクタ、インデックスエンジン、提供APIを、別々のベクトルデータベース、オーケストレーション、スケジューリングサービスを組み合わせるのではなく、単一のデプロイ可能なユニットにバンドルしています。
- メモリ上でキャッシュを利用したインデックス(
usearchおよびTantivyによるベクトル、ハイブリッド、フルテキスト検索)を提供し、外部インフラストラクチャなしで数百万ページにスケールします。 - テンプレート駆動であること — 各ユースケースは、ドキュメントの断片ではなく、完全な実行可能なアプリケーションです。
3. 機能カテゴリ
-
📄 質問応答と検索 (4テンプレート) — 自然言語でドキュメントコレクションを照会するエンドツーエンドのRAGアプリ。
question_answering_rag— LLMを用いたベースラインドキュメントQ&Aパイプライン。document_indexing— 下流の任意のアプリで使用できる、スタンドアロンのライブベクトルストア/インデックスサービス。slides_ai_search— PowerPoint/PDFスライドデッキに対するマルチモーダル検索。document_store_mcp_server— エージェントツール用のMCPサーバーとしてドキュメントストアを公開。
-
🖼️ マルチモーダルRAG (2テンプレート) — 単なるテキストを超えたパイプライン。
multimodal_rag— GPT-4oを使用して、埋め込まれたチャート、表、画像を含むPDFを解析。video_rag_twelvelabs— TwelveLabs APIを介した動画コンテンツに対する質問応答。
-
⚡ コストとプライバシー最適化RAG (2テンプレート) — コストやデータ保存場所の制約に合わせて調整されたバリアント。
adaptive_rag— 検索されたコンテキストのチャンク数を動的に調整し、トークン使用量を最大4分の1に削減。private_rag— MistralとOllamaを使用した完全にローカル/オフラインのデプロイメントで、データが外部に流出しません。
-
🗄️ 構造化データと自動化 (2テンプレート) — 非構造化入力を構造化出力に変換したり、アクションをトリガーしたりするパイプライン。
unstructured_to_sql_on_the_fly— 非構造化された金融ドキュメントを、その場でクエリ可能なSQLデータベースに変換。drive_alert— ライブデータソースを監視し、関連する変更があった際にアラートを発生。
-
🧠 エージェントパターン (1コレクション) — 高度な推論ループのためのリファレンスノートブック。
cookbooks/self-rag-agents— 自らの検索コンテキストを評価して洗練させるSelf-RAGスタイルのエージェント。
4. 主な特徴
- ライブデータ同期 — パイプラインはSharePoint、Google Drive、S3、Kafka、PostgreSQL、リアルタイムAPIを監視し、再構築ステップなしで追加、編集、削除を自動的に反映します。
- 追加インフラ不要 — ベクトル、ハイブリッド、フルテキスト検索はPathwayエンジン(
usearch+Tantivy)に組み込まれており、キャッシュを使用しながらメモリ上で実行されるため、スタンドアロンのベクトルデータベースは不要です。 - Dockerファーストのデプロイメント — 各テンプレートはHTTP APIを持つコンテナとして実行され、ほとんどには手動の迅速なテスト用のオプションのStreamlit UIが含まれています。
- フレームワークの相互運用性 — LangChainやLlamaIndexとのネイティブな統合により、チームはPathwayのライブインデックス上で既存のチェーンやエージェントを再利用できます。
- コスト意識のある検索 — Adaptive RAGテンプレートは、必要な分だけコンテキストを検索することを実演し、LLMのトークン消費を最大4分の1に削減します。
- スケールテスト済み — 単一のパイプラインから数百万のドキュメントページをインデックスして提供するように設計されています。
5. 役割別のユースケース
- 一般の開発者 — 自身のユースケース(Q&A、マルチモーダル、SQL抽出)に合ったテンプレートをクローンし、データコネクタとプロンプトを自身の製品に合わせて調整します。
- データ/研究科学者 —
document_indexingやself-rag-agentsのクックブックをベースとして使用し、検索戦略、チャンキング、エージェントの自己修正の実験を行います。 - プロジェクトマネージャー/エンタープライズ検索の責任者 —
question_answering_ragやslides_ai_searchを、維持すべきインデックスパイプラインなしで常に最新の状態を保つ内部ナレッジベース検索ツールとしてデプロイします。 - セキュリティ/コンプライアンス意識の高いチーム —
private_ragを使用し、Mistral/Ollamaを用いてドキュメントのコンテンツとモデルの推論を完全にオンプレミスに保持します。
6. はじめに
必要なものを見つける — GitHubのtemplates/ディレクトリ、またはPathway Templatesページの厳選されたリストを参照して、自身のユースケースに最も近いものを選びます。
テンプレートのインストールと実行
git clone https://github.com/pathwaycom/llm-app.git
cd llm-app/templates/question_answering_rag
docker compose up
各テンプレートフォルダには、そのパイプライン用の正確な環境変数(APIキーなど)と実行手順を記載した独自のREADME.mdが含まれています。
貢献する — CONTRIBUTING.mdをお読みください。小さな修正以外の場合は、Pathway Discordの#get-helpチャンネルで事前に調整してください。
7. プロジェクト構成
llm-app/
├── templates/ # すぐに実行できるアプリケーションテンプレート
│ ├── question_answering_rag/
│ ├── document_indexing/
│ ├── multimodal_rag/
│ ├── adaptive_rag/
│ ├── private_rag/
│ ├── slides_ai_search/
│ ├── unstructured_to_sql_on_the_fly/
│ ├── video_rag_twelvelabs/
│ ├── document_store_mcp_server/
│ └── drive_alert/
├── cookbooks/
│ └── self-rag-agents/ # Self-RAGエージェントのノートブック
├── assets/ # 図解やデモメディア
├── pyproject.toml / setup.cfg # Pythonパッケージング設定
└── README.md
templates/の下の各サブフォルダは、独自のDockerfile/docker composeセットアップと設定ファイルを持つ自己完結型のアプリであるため、テンプレートは互いに独立して実行できます。
8. 関連エコシステム
- Pathway — このリポジトリの基盤となる、RustベースのPythonデータ処理エンジン。ストリーミングETL、ライブインデックス、インクリメンタル計算を提供します。
- LangChain / LlamaIndex — Pathwayのライブベクトルインデックス上のオプションのオーケストレーションレイヤーとしてサポートされています。
- usearch / Tantivy — それぞれベクトル検索とフルテキスト/ハイブリッド検索を支える組み込みライブラリ。
- Ollama / Mistral —
private_ragテンプレートで完全にローカルなLLM推論のために使用されます。 - TwelveLabs —
video_rag_twelvelabsテンプレートで使用される動画理解API。
9. ライセンス
このプロジェクトはMIT Licenseの下で配布されています。
- ✅ 商用製品を含め、使用、複製、変更、マージ、公開、配布が自由です。
- ✅ プロプライエタリ/クローズドソースのアプリケーションに組み込むことができます。
- ❌ 保証はありません。作者はその使用から生じる損害について責任を負いません。
- ℹ️ ソフトウェアのコピーまたは実質的な部分に、MITライセンスのテキストと著作権表示を保持する必要があります。
10. FAQ
Q: これらのテンプレートとは別に、別のベクトルデータベースを実行する必要はありますか?
A: いいえ — インデックス(ベクトル、ハイブリッド、フルテキスト検索)はPathwayエンジンに組み込まれており、ディスクキャッシュを使用しながらメモリ上で実行されるため、外部のベクトルストアは不要です。
Q: データをサードパーティのLLM APIに送信せずに、完全にオフラインで使用できますか?
A: はい — private_ragテンプレートはMistralとOllamaでローカルに実行され、ドキュメントと推論をオンプレミスに保持します。
Q: これらのパイプラインはライブ更新のためにどのデータソースを監視できますか?
A: SharePoint、Google Drive、S3、Kafka、PostgreSQL、ローカルファイルシステム、および汎用のリアルタイムデータAPIがすぐに使える状態でサポートされています。
Q: 検索をスケールアップする際に、LLMのトークンコストをどうやって削減しますか?
A: adaptive_ragテンプレートを参照してください。これは検索されたコンテキストのサイズを動的に調整し、トークン使用量が最大4分の1になることを報告しています。
Q: サポートを受けたり、より大きな貢献を提案するにはどうすればよいですか?
A: バグについてはGitHubでIssueを立てるか、本格的な作業を始める前にPathway Discordの#get-helpチャンネルに参加してください。
11. クイックリンク
- リポジトリ: https://github.com/pathwaycom/llm-app
- 公式ドキュメント / テンプレートカタログ: https://pathway.com/developers/templates/
- 貢献ガイド: https://github.com/pathwaycom/llm-app/blob/main/CONTRIBUTING.md
- コミュニティ: https://discord.gg/pathway
12. まとめ
llm-appは、Pathwayのライブデータエンジンを、変化するドキュメントソースと自動的に同期し続ける、デプロイ準備完了のRAGおよびエンタープライズ検索テンプレートセットとしてパッケージ化し、別個のインデックスインフラストラクチャの必要性を排除します。ドキュメントQ&A、マルチモーダル検索、コスト最適化された検索、または完全にプライベートなオンプレミスデプロイメントなど、目的が何であれ、RAGのプロトタイプから本番パイプラインへと迅速に移行したい開発者やチームに最適です。