【ITニュース解説】Minsky’s six memory types as Orka preset memory.
2025年09月18日に「Dev.to」が公開したITニュース「Minsky’s six memory types as Orka preset memory.」について初心者にもわかりやすく解説しています。
ITニュース概要
OrKaは、Minskyの6つの記憶タイプに基づくメモリプリセットを導入した。これにより、読み書き操作に応じて記憶設定が自動調整され、複雑なYAML設定が大幅に簡素化される。AIシステムの「記憶」を効果的に管理し、予測可能な挙動を実現する。
ITニュース解説
システムが複雑な情報を効率的に処理し、まるで人間のように「考える」ためには、適切な「記憶」の仕組みが不可欠である。しかし、これまでのシステム開発では、特に大量のデータを扱う際に、情報を単一のデータベースにまとめて保存するだけで、そのデータの「目的」や「使い方」を十分に考慮しないアプローチが横行していた。この方法では、システムが情報を読み書きする際に、開発者が手動で膨大な設定項目を調整する必要があり、設定ミスや意図しない動作を引き起こしやすいという問題があった。
このような課題を解決するため、OrKaのバージョン0.9.2で導入されたのが「メモリプリセット」という機能である。これは、心理学者のマービン・ミンスキーが提唱した「6つの記憶タイプ」という概念を応用し、システムが扱う情報の種類に応じて、適切な記憶の仕方を自動的に設定できるようにするものである。このプリセットの画期的な点は、「読み取り」と「書き込み」という操作の違いに応じて、同じ記憶タイプでも異なるデフォルト設定を適用することにある。例えば、会話の履歴を保存する記憶(エピソード記憶)は、過去の会話を検索する際には時間軸を考慮した順位付けを行い、新しい会話を保存する際には会話の内容を豊かにするためのインデックス付けを行う、といった具合である。これにより、開発者はわずか1行の設定で、システムに最適な記憶の振る舞いをさせることができ、何十行もの複雑な設定ファイルを記述したり、それによって発生する可能性のあるエラーを心配したりする必要がなくなる。
具体的に、OrKaが採用するミンスキーの6つの記憶タイプとはどのようなものなのだろうか。
まず、「感覚記憶(sensory)」は、センサーからのリアルタイム信号やIoTデータのような、ごく短期間だけ保持すればよい情報に用いられる。読み取り時には非常に高い精度でわずかな結果を返し、書き込み時には高速なデータ取り込みのために重いインデックス処理を省略する。その記憶の寿命は、およそ15分程度である。
次に、「作業記憶(working)」は、現在進行中のセッションや一時的な計算結果など、短期間から中期間保持する情報に適している。読み取り時にはセッションに関連する文脈を考慮した検索を行い、書き込み時にはベクトルインデックスを有効にするが、その記憶は比較的揮発性である。記憶の寿命は2時間から8時間程度だ。
「エピソード記憶(episodic)」は、人との会話履歴やインタラクションの記録など、出来事としての記憶を扱う。読み取り時には会話の流れを考慮した検索を行い、書き込み時には豊富なメタデータや会話に特化したインデックス付けを行う。記憶の寿命は1日から1週間程度である。
「意味記憶(semantic)」は、事実や公式ドキュメントなど、時間経過によって内容が変わらない普遍的な知識に利用される。読み取り時には時間的な偏りなく知識を照合し、書き込み時には長期的な情報検索に適したインデックス付けを行う。記憶の寿命は3日から90日程度と比較的長い。
「手続き記憶(procedural)」は、特定の作業手順やスキル、ワークフローなど、システムがどう振る舞うべきかという「やり方」に関する記憶を指す。読み取り時にはパターン認識に焦点を当て、書き込み時にはプロセス指向の保存方法がとられる。その記憶の寿命は1週間から6ヶ月と、さらに長い。
そして、「メタ記憶(meta)」は、システムの内部状態やパフォーマンス、エラーログなど、システム自身の自己分析や改善に役立つ情報に用いられる。読み取り時には高精度な分析を行い、書き込み時には品質を重視したインデックス付けがされる。記憶の寿命は2日から1年と最も長く設定されている。
これらのプリセットは、それぞれが「認知的」な名前を持つ一方で、実際にシステム内部で適用される設定(類似性閾値、時間的重み付け、ベクトル設定など)は「運用的」であるという点が重要である。つまり、開発者は「これは会話履歴の記憶だ」という直感的な理解でプリセットを選べば、あとはOrKaがその記憶の「目的」に応じた最適な技術的設定を自動的に行ってくれるのである。
プリセットを使う最大のメリットは、設定の簡素化と精度の向上にある。以前は、記憶の種類ごとに「忘却ルール」「重要度」「ベクトル化のフラグ」など、30から50行にもわたる設定を手動で記述する必要があった。これにより、設定が複雑になり、ミスが発生しやすかったり、意図せず設定が変更されてしまったりするリスクがあった。しかし、プリセットを使えば、この複雑な設定がわずか1行に凝縮される。もちろん、特定の状況でデフォルト設定を微調整したい場合には、個別の値を上書きする柔軟性も残されている。
このシステムを支えるバックエンドとしては、RedisStackが推奨されている。RedisStackはHNSW(Hierarchical Navigable Small World)と呼ばれる効率的なベクトル検索アルゴリズムに対応しており、ミリ秒単位の高速なデータ検索や、システムの監視に必要なコマンドを提供するため、本番環境での利用に最適である。開発段階であれば基本的なRedisでも動かすことは可能だが、ベクトルインデックスや高速性は失われるため、適切なツールを選ぶことが重要だ。
実際のシステム開発では、これらのプリセットを組み合わせて様々な用途に活用できる。例えば、ユーザーとの会話を管理する「会話メモリ」にはエピソード記憶プリセットを適用し、事実や知識を保存する「知識キャプチャ」には意味記憶プリセットを適用するといった具合だ。さらに、システム自身のパフォーマンスログやヘルス情報を記録し、システムの自己認識能力を高めるためには、メタ記憶プリセットが高精度な読み取りと品質の高い書き込み設定で利用できる。このように、異なる記憶タイプを適切に使い分けることで、システムはより賢く、予測可能な振る舞いをするようになる。
また、記憶はただ情報を蓄積するだけでなく、不要な情報は適切に「忘れる」ことも重要である。OrKaでは、短期・長期の記憶保持期間を設定したり、重要度の高い項目を優先したり、デバッグ情報を素早く破棄したりする機能も提供している。これにより、システムが不必要な情報で溢れかえるのを防ぎ、効率的に運用できる。
システムを本番環境に導入する際には、プリセットが期待通りに機能しているかを確認するための「ガードレール」、つまり安全策も不可欠である。提供されている検証機能を使って、プリセット名が正しく解決され、適用される設定がチームの意図と合致しているかを確認する必要がある。また、RedisStackに対して簡単なテストクエリを実行し、必要なインデックスが正しく作成されているかを迅速にチェックすることもできる。
OrKaが提供するメモリプリセットは、ミンスキーの認知モデルを実際のシステム設計に落とし込み、開発者が直面する複雑な設定作業から解放する画期的なアプローチである。これにより、設定ファイルは整理され、システムはより予測可能で「説明可能」な振る舞いをするようになる。単にデータを保存するだけでなく、そのデータの「意図」と「操作」に応じた賢いメモリ管理を実現することで、システムは真にモジュール化され、記憶に基づいた意思決定が可能となる。そして、この新しいアプローチの効果を評価する際には、単なる「感覚」ではなく、ヒット率、平均類似度、遅延時間、回答の品質といった客観的な指標を用いて、その改善を具体的に測定することが重要である。