
AIエージェントに「記憶」を持たせるOSSが話題
朝の出汁版(通勤2分)
- ポイント1: 「cognee」はAIエージェントがセッションをまたいで会話や知識を記憶し続けるための自前サーバー型ナレッジグラフエンジンで、スター数1.8万超えのOSSとして注目されている。
- ポイント2: 使う側として知っておくべきは、APIに都度コンテキストを渡す運用から脱却し、エージェント自体が文脈を蓄積・参照できる設計に移行できる点で、複数工程を自動化したい場面で差が出やすい。
- ポイント3: 始めるなら、公式GitHubのREADMEにPythonでのセットアップ手順が記載されているので、まずローカル環境で立ち上げてエージェントへの記憶の読み書きを試してみると動きが掴みやすい。
出汁の素(深読みモード)
これって結局どういうこと?
AIエージェントは、指示を受けて動くだけでなく「前回どんな作業をしたか」「どんな文脈の中にいるか」を覚えていてほしい場面がある。しかし現状の多くのエージェント設計では、セッションをまたぐたびに文脈がリセットされ、毎回ゼロから状況を渡し直す必要がある。これを解決しようとするのが、OSSの「cognee」だ。
cogneeはAIエージェントに長期記憶を持たせるための自己ホスト型プラットフォームで、ナレッジグラフというデータ構造を使って会話履歴・知識・関係性を蓄積・参照できる設計になっている。GitHubのスター数は1.8万超(topoteretes/cognee)。要は「毎回コンテキストを渡すのをやめて、エージェント側が覚えてくれる仕組みを自前で持てる」ということだ。
なぜこのタイミングで重要?
注目したいのは、このタイミングで「エージェントの記憶設計」が正面から議論され始めている点だ。
先日紹介した「AIエージェントに対応したアプリ設計の新フレームワーク」でも触れたように、単一タスクをこなすAIから、複数工程を自律的につなぐエージェントへの移行が加速している。そこで顕在化するのが「セッション間の文脈断絶」という課題だ。
これまでの対処法は大きく2つだった。①APIに毎回長いプロンプトでコンテキストを渡す、②外部のベクターDB(PineconeやWeaviateなど)を別途組み合わせる、のいずれかだ。前者はトークンコストが増大し、後者はインフラ管理の手間が生じる。cogneeが提案しているのは、この両方を内包した「記憶エンジンをエージェントに組み込む」という第三の設計思想だ。
ナレッジグラフという選択も興味深い。ベクターDBが「意味的な近さ」で検索するのに対し、ナレッジグラフは「関係性」を構造として保持する。「このプロジェクトはAさんが担当していて、先週この決定をした」という文脈の連鎖を記録するには、グラフ構造の方が適している場面がある。
自己ホスト型という点も見逃せない。APIキーを外部に渡すことなく、ローカルや自社サーバー上で記憶を管理できる設計は、情報の取り扱いを気にしながらエージェントを動かしたい場合に現実的な選択肢になる。
具体的に始めるなら
まず構造を把握したい人へ
公式GitHubのREADME(topoteretes/cognee)に全体像が記載されている。アーキテクチャ図とセットアップ手順の両方があるので、まずここを読むだけでも「何がどう変わるのか」はつかめる。
ローカルで動かしてみたい人へ
Pythonがあれば試せる。基本的な流れはpip install cognee → Pythonスクリプトでデータをcogneeに渡す(add)→ 処理してグラフ化(cognify)→ エージェントから参照(search)の3ステップ。公式ドキュメントにはコードスニペットが用意されているので、コピーして動かすだけで最初の記憶の読み書きは試せる。
LLMのバックエンドにはOpenAI APIを使うのが現状の最短ルートだが、ローカルLLM(Ollamaなど)との組み合わせも設定ファイルで切り替えられる構成になっている。
どんな場面で差が出るか
効果を実感しやすいのは、複数のステップをまたぐ作業をエージェントに委ねるケースだ。たとえば「先週調べた競合情報をもとに今週の戦略案を出して」のように、前回の作業内容を引き継ぐ必要がある指示は、記憶のないエージェントでは毎回情報を渡し直す必要がある。cogneeを組み込むと、エージェント側が文脈を保持するため、指示がシンプルになる。
組み合わせの発展案
Claude Codeが1,000体のAIを自律で動かす時代へでも紹介したような、マルチエージェント構成との組み合わせが面白い。複数のエージェントが共有の記憶を参照する設計にすれば、タスクの引き継ぎや並列作業の整合性が取りやすくなる。cogneeはマルチエージェントフレームワークとの統合(CrewAI、LangGraphなど)についてもドキュメントで言及している。
無料で始めるなら、ローカル環境+自分のOpenAI APIキーの組み合わせが現実的な最初の一歩になる。
よくある疑問
Q. 技術的な難易度はどのくらい?コードが書けないと無理?
Pythonの基本的な読み書きができれば、公式のサンプルコードをもとに動かすこと自体は難しくない。ただし「自分のエージェントに組み込んで使い倒す」ためには、既存のスクリプトに追記する必要があるため、コードが書けると有利な場面は多い。コードなしでの操作UIは現時点では公式には用意されていない。
Q. データはどこに保存される?外部に送られる?
cognee自体は自己ホスト型なので、ナレッジグラフのデータはローカルや自分で指定したサーバーに保存される。ただし、LLMのバックエンドとしてOpenAI APIを使う場合は、テキスト処理の段階でOpenAIのサーバーにデータが渡る点は変わらない。ローカルLLM(Ollamaなど)を組み合わせることで、外部への通信を最小化する構成も可能とドキュメントに記載されている。
Q. 日本語は使えるか?
公式ドキュメントに明示的な記載はないが、バックエンドのLLMが日本語を処理できれば、記憶の保存・参照ともに日本語テキストを扱うこと自体は技術的に可能な設計になっている。ただし日本語環境での動作確認事例は現時点では公式には示されていないため、実際に試しながら確認する必要がある。
もう一歩踏み込みたい人へ
cogneeのアーキテクチャを深く理解したい人向けには、公式ドキュメントのグラフ設計の説明が参考になる。内部ではエンティティ(人・概念・出来事など)とその関係性をノードとエッジで表現するナレッジグラフを構成しており、単なるベクター検索と組み合わせることで「意味的な近さ」と「関係性の文脈」の両面から記憶を参照できる設計になっている。
API面では、cogneeはPythonライブラリとして提供されており、cognee.add()でデータを取り込み、cognee.cognify()でグラフ化、cognee.search()で参照するという3つの主要関数が中心になる。これを既存のエージェントフレームワークのフック部分に差し込む構成が基本の使い方だ。
統合可能なフレームワークとして、公式ではLangChain、LangGraph、CrewAIとの接続例が示されている。CrewAIとの組み合わせでは、エージェントが作業を終えた後に学習内容をcogneeに書き込み、次のエージェントが参照するというパイプラインが構成できる。
ストレージバックエンドも切り替え可能で、デフォルトのローカルファイルストレージのほか、PostgreSQLやNeo4j(グラフDB)との接続もサポートしている。本格的なマルチエージェント環境で運用するなら、Neo4jバックエンドとの組み合わせが選択肢に入ってくる。リポジトリのissueやディスカッションには実装例が多く挙がっているので、具体的なユースケースを探す際の参考になる。
参照ソース
- [GitHub]topoteretes/cognee→ github.com/topoteretes/cognee
- [GitHub]smicallef/spiderfoot→ github.com/smicallef/spiderfoot
- [GitHub]mikumifa/biliTickerBuy→ github.com/mikumifa/biliTickerBuy
