AIエージェントの回答精度は、参照するデータの鮮度で決まります。バッチ処理で毎回全データを再計算していると、コストがかさむうえにデータが古くなりがちです。
CocoIndexは、変更があった部分だけを再処理する「インクリメンタルエンジン」を搭載したオープンソースのデータフレームワークです。RAGパイプラインやナレッジグラフの構築を、Pythonの宣言的なコードで実現します。
この記事でわかること
- CocoIndexが解決する「データの鮮度」問題
- 差分処理エンジンの仕組み
- 対応するデータソースとターゲットストア
- CocoIndex-code(MCPサーバー)の概要
- インストールから基本的な使い方
バッチ処理の限界とCocoIndexのアプローチ
RAGやナレッジグラフを本番運用すると、データの更新が課題になります。ドキュメントを1つ編集しただけなのに、全ファイルのエンベディングを再計算する。コーパスが大きくなるほど処理時間とAPI費用が膨らみ、更新頻度を上げられません。
CocoIndexはこの問題を「差分のみ再処理」という設計で解決します。ソースデータが変わると、変更があったレコードだけを検出し、そのレコードに依存するエンベディングやグラフノードだけを更新します。残りの99%以上はキャッシュをそのまま使うため、処理コストは全体再計算の10分の1以下に抑えられます。
設計思想は「React for Data Engineering」
CocoIndexの設計思想は、フロントエンド開発のReactに似ています。Reactが「UIの目標状態を宣言すれば、フレームワークが差分を検出してDOMを更新する」のと同様に、CocoIndexでは「ターゲットの目標状態を宣言すれば、エンジンがソースの差分を検出してターゲットを同期する」仕組みです。
この考え方を数式で表すと Target = F(Source) になります。開発者が書くのは変換関数Fだけで、差分検出・キャッシュ管理・並列処理はエンジンが自動で行います。コードの見た目は一括処理と変わらないのに、裏側ではインクリメンタル処理が動いています。
インクリメンタルエンジンの4つの特徴
サブ秒の鮮度
ソースの変更がターゲットに反映されるまでの時間は1秒未満です。バッチ処理のように「昨日のデータ」を参照し続ける問題が起きません。AIエージェントは常に最新の状態を見て判断できます。
コスト削減
10,000行のコーパスで1ファイルだけ変更した場合、再処理されるのはその1ファイルに関連する行だけです。エンベディングAPIの呼び出し回数が大幅に減り、LLMの利用料金も節約できます。
データリネージ
ターゲットに保存されたベクトルやグラフノードのすべてが、ソースのどのバイトから生成されたかを追跡できます。RAGの回答根拠を検証したいとき、あるいは監査対応が必要なとき、この透明性が役立ちます。
Rustコアによる耐障害性
エンジンのコアはRustで書かれています。リトライ、指数バックオフ、デッドレターキューを内蔵しており、1つのレコードが失敗しても他のレコードの処理は止まりません。長時間稼働するAIエージェントのバックエンドとして設計されています。
対応するデータソースとターゲット
ソース側は、ローカルファイルシステム、Git リポジトリ、Google Drive、S3、データベース、メッセージキュー、画像・動画、音声・文字起こしなど8カテゴリに対応しています。
ターゲット側は、PostgreSQL(pgvector)、LanceDB、Neo4j、Kuzu、Kafka、データウェアハウスなど6種類のストアに出力できます。ベクトルDB、グラフDB、リレーショナルDBを1つのパイプラインで同時に更新する構成も可能です。
CocoIndex-code:コーディングエージェント向けMCPサーバー
CocoIndexの応用例として「CocoIndex-code」があります。これはMCP(Model Context Protocol)サーバーとして動作し、Claude CodeやCursorなどのAIコーディングエージェントにリポジトリ全体のコンテキストを提供します。
具体的には、AST(抽象構文木)を使ったコード分割、セマンティック検索、コールグラフ、シンボルテーブルをインクリメンタルに更新し続けます。コミットのたびに変更ファイルだけを再インデックスするため、大規模リポジトリでもサブ秒で最新状態を維持します。
インストールと基本的な使い方
Python 3.10〜3.13に対応しています。pipでインストールします。
pip install -U --pre cocoindex
v1はプレビュー段階のため --pre フラグが必要です。バックエンドにPostgreSQLを使う場合は、別途PostgreSQLの準備が必要です。
基本的なパイプラインは以下の流れで構成します。ソースコネクタでデータを読み込み、変換関数でチャンク分割とエンベディングを行い、ターゲットストアに書き込みます。@coco.fn(memo=True) デコレータを付けた関数は、入力とコードのハッシュでキャッシュされます。入力が変わっていなければ処理をスキップし、変わったものだけを再計算します。
初回実行時は全データをバックフィルし、2回目以降は変更分だけが処理されます。20以上のサンプルコードがGitHubリポジトリの examples/ ディレクトリに用意されており、PDF、コードベース、Hacker Newsのトレンド分析、会議メモからのナレッジグラフ生成など、すぐに試せる構成が揃っています。
まとめ
CocoIndexは「AIエージェントに常に新鮮なデータを届ける」という一点に集中したフレームワークです。Pythonで宣言的にパイプラインを書き、Rustエンジンが差分処理を自動化します。GitHub上でApache 2.0ライセンスで公開されており、2026年5月時点で7,000スターを超えています。RAGパイプラインの更新コストに悩んでいる開発者にとって、検討する価値のあるツールです。