vectorize-io/hindsight
AIエージェントの記憶を、ため込むだけでなく整理し直して賢くする
どういうものか
AIエージェントに長く使える記憶を持たせるための仕組みだ。自分のサーバーで動かす本体(Docker・pip・Kubernetes で入れられる)と、Python・Node.js・Go のクライアントでできている。ライセンスは MIT。運営元の Vectorize は、サーバーを立てずに使える有料のクラウド版(従量課金)も出している。README は、会話の履歴を思い出させるだけの仕組みとの違いを「覚えるだけでなく、学ぶ」と説明している。
中心になる操作は3つある。retain で覚えさせると、LLM が文章から事実・人や物事・時期・関係を取り出して、記憶の置き場(bank。利用者・エージェント・プロジェクトごとに1つ)にしまう。recall で思い出させると、意味の近さ、キーワード、人や物事・時期・因果のつながり、期間の絞り込み、の4通りの検索を同時に走らせ、結果を1つの順位にまとめて返す。reflect は、ためた記憶を読み直して、調べるだけでは答えられない問いに答える。
もう1つの特徴は、記憶を積みっぱなしにしないことだ。関連する事実は裏でobservation(根拠の引用つきの「見方」)にまとめ直され、新しい事実が来ても上書きされず、今ある見方が強まったり弱まったりする。さらに「この利用者の好みは?」のような問いを1度決めておくと、答えを書いて保存し、記憶が増えるのに合わせて裏で書き直してくれる(mental model)。これは LLM を呼ばずに読めるので、エージェントは起動するたびに一から調べ直さずに済む。
どんなときに使うか
AIアシスタントに、利用者ごとの好みや経緯を覚えさせたいとき
利用者ごとに bank を分けるか、覚えさせるときに利用者の情報を付けておけば、思い出すときにその人の記憶だけに絞れる。README は、これを簡単な使い道の1つとして挙げている。
コーディングエージェントに、毎回プロジェクトの事情を説明し直したくないとき
コーディングエージェント向けのパッケージを入れると、git の履歴と過去の作業からリポジトリごとの記憶が自動で作られ、エージェントが作業を始めるときに渡される。README によれば、Claude Code・Codex CLI・Cursor CLI など十数種類に対応している。
注意点
簡単な自動化には重すぎる。 README 自身が、n8n などで組む単純な流れには「過剰かもしれない」と書いている。向いているのは、利用者の反応で振る舞いを変えながら、決まった答えのない仕事をこなすエージェントだ。
覚えさせるたびに LLM を呼ぶ。 retain は裏で LLM を使って事実を取り出す。有料の LLM を使うなら、記憶を増やすほど利用料がかかる。LLM は OpenAI・Anthropic などのほか、Ollama などの手元で動くものも選べる。
手軽な組み込み方の送り先に気をつける。 既存の LLM クライアントを包むだけで記憶を付けられる「LLM Wrapper」は、送り先を指定しないとクラウド版に送る設定になっている。自分のサーバーで動かすなら、送り先を指定する。
秘密情報の検査は、自分でオンにしないと動かない。 覚えさせる内容から APIキーや個人情報を見つけて伏せる「Memory Defense」は、bank ごとに有効にする方式だ。
性能の比較は README の主張として読む。 README は、長期記憶のベンチマーク LongMemEval で最高の成績だとし、その数字は大学の研究者と The Washington Post が再現したと書いている。一方で、比べている他社の数字は各社の自己申告だとも書いている。