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パイプラインの更新コストに悩んでいる開発者にとって、検討する価値のあるツールです。