個人開発者、RAG パイプライン最適化ツール Genos を公開──チャット・タスク・ノート間の明示的関係をグラフ探索
チャットやタスクの作成元や依存関係を明示的な ID として DB に保存し、エージェント検索時に最大 2-hop まで展開してコンテキスト精度を担保する設計。
リリース: 2026-08-08 · 読了 3 分記事の要約
1. 核心(What)
- チャット、タスク、ノートを同一ワークスペース内に配置し、生成元や依存関係を明示的な ID で結ぶ MVP を公開した
- 通常検索には OpenSearch の BM25 と dense vector を RRF(Reciprocal Rank Fusion)で統合して使用する
- エージェント検索時のみ、起点となるタスクから TaskDependency を最大 2-hop 展開して検索結果へ追加する仕組みを取り入れている
- グラフ探索によって到達したタスクを OpenSearch から再取得する際、通常検索と同一の team_id および acl_user_ids によるフィルタリングを強制している
2. 影響(Why)
- Embedding の限界を超えるグラフ構造: 本文の近さを示すベクトル表現だけでは「A が B をブロックしている」といった関係性を再現できないため、アプリケーション層で明示的 edge を辿る設計が実用上の精度を決める。
- ACL 継承によるセキュリティ担保: グラフ探索によってアクセス権のない機密タスクの存在自体が漏洩するリスクを防ぐため、検索結果の注入前に必ず元の権限フィルターを再適用する実務的なアーキテクチャ。
3. 根拠・詳細(How)
- Django と OpenSearch による 2-hop 探索: Django 5 と DRF をバックエンドに採用し、OpenSearch の BM25 + kNN の RRF 結果からエージェント検索時に TaskDependency を最大 2-hop 辿るクエリを実行する。
- 特定ユースケースでの recall 改善検証: 固定 fixture 上のテストケースにおいて、1-hop 設定時の recall が 0.0 だった状態から、2-hop 設定によって 1.0 へ向上することを単一ケースで確認している。
4. 展望・課題(Next)
- 自動記録とユーザー負担のバランス: 手入力を要求しすぎるとグラフが育たないため、プロダクトのアクションとしてどの関係性を自然に記録できるかの検証が今後の課題となる。
- 未完成機能の実装拡大: タスク依存以外のグラフ融合やイベント順序の理解、長期会話の完全な記憶などは現在の MVP では未完成であり順次拡張予定。