[OSS紹介#53] memory:ユーザーの記憶を活用した対話を実現するOSSツール

この記事について

この記事では、オープンソースソフトウェア(OSS)の中でも特に注目されている「memory」を取り上げます。本記事は、OSSに関心を持つ開発者や技術者が、現代のソフトウェア開発における効率化と情報の管理をどのように実現できるかについてお伝えするものです。

近年では、多くのチャットボットやAIシステムがユーザーとの対話をよりパーソナルにするために、記憶機能や文脈理解の強化を求められています。その中で「memory」は、知識グラフを利用した永続的なメモリの基本的な実装を提供し、ユーザーに関する情報を複数のチャットにわたって記憶することを可能にします。この技術の導入により、会話のコンテキストが維持され、より自然で流動的なインタラクションが実現されるのです。

今回紹介する意義は、開発者がこのツールを通じて、自身のアプリケーションやサービスにおいてより効率的で個別化されたユーザー体験を構築できる点にあります。次のセクションでは、このツールの基本概念や実際の使用方法について詳しく解説していきます。

リンク:https://github.com/modelcontextprotocol/servers/tree/main/src/memory


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. ツールでできること

Memoryは、ローカル知識グラフを用いた永続的なメモリの基本実装を提供します。このツールにより、ユーザーはチャットを通じて情報を記憶させることが可能です。主な機能は以下の通りです。

1.1 エンティティ

エンティティは知識グラフの主要ノードです。各エンティティは以下の要素を持ちます。
– 一意の名前(識別子)
– エンティティタイプ(例: “person”、”organization”、”event”)
– 観察のリスト

1.2 関係

関係はエンティティ間の指向性接続を定義します。常に能動態で保存され、エンティティ同士の相互作用や関連性を説明します。

1.3 観察

観察はエンティティに関する情報の断片であり、次の特性を持ちます。
– 文字列として保存される
– 特定のエンティティに添付される
– 独立して追加または削除可能
– 原子的である(1つの事実ごとの観察)

1.4 メモリーの特徴

Memoryは、チャットを通じてユーザーについての情報を記憶し、パーソナライズされた対話を向上させる知識グラフメモリサーバーです。以下のような主要機能を備えています。
– エンティティと関係の作成、読み取り、更新、削除をサポート。
– パーソナライズされた記憶のための観察の追加および削除が可能。
– 知識グラフ内のノードを検索および取得するためのAPIを提供。

2. セットアップ手順

Model Context Protocol Serversを利用するためのセットアップ手順は以下の通りです。

2.1 動作環境

このツールはMITライセンスの下で提供されており、自由に使用、変更、配布が可能です。

2.2 インストール方法

以下の方法でインストールが可能です。

  • Dockerを使用する場合
{
  "mcpServers": {
    "memory": {
      "command": "docker",
      "args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
    }
  }
}
  • NPXを使用する場合
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    }
  }
}
  • カスタム設定でNPXを使用する場合
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"],
      "env": {
        "MEMORY_FILE_PATH": "/path/to/custom/memory.json"
      }
    }
  }
}

2.3 VS Codeのインストール手順

VS Codeでの迅速なインストールは、以下のボタンを利用して行えます。また、手動でのインストールも可能で、ユーザー設定(JSON)ファイルに次のブロックを追加します。

  • NPXの手動設定
{
  "mcp": {
    "servers": {
      "memory": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-memory"]
      }
    }
  }
}
  • Dockerの手動設定
{
  "mcp": {
    "servers": {
      "memory": {
        "command": "docker",
        "args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
      }
    }
  }
}

3. 簡単な使い方

Model Context Protocol Serversでは、様々なAPIツールが提供されています。以下に主要なツールとその使い方を示します。

3.1 エンティティの作成

  • create_entities
    複数の新しいエンティティを知識グラフに作成します。入力はエンティティの配列です。

3.2 関係の作成

  • create_relations
    複数の新しい関係をエンティティ間に作成します。入力は関係の配列です。

3.3 観察の追加

  • add_observations
    既存のエンティティに新しい観察を追加します。入力は観察の配列です。

3.4 エンティティの削除

  • delete_entities
    エンティティとその関係を削除します。入力はエンティティ名の配列です。

3.5 観察の削除

  • delete_observations
    エンティティから特定の観察を削除します。入力は削除対象の観察の配列です。

3.6 グラフの読み取り

  • read_graph
    知識グラフ全体を読み取ります。入力は不要です。

3.7 ノードの検索

  • search_nodes
    クエリに基づいてノードを検索します。入力は検索したい文字列です。

3.8 利用ケース

memoryを使用する際の典型的な利用ケースには、チャットアプリケーションでのユーザーとのインタラクションのパーソナライズや、ユーザーの好みや行動を記録して体験をカスタマイズすることなどがあります。

4. 結論

memoryは、ユーザーの情報を記憶し、豊かな対話を可能にする強力なツールです。知識グラフを利用することで、エンティティ、関係、観察を管理し、ユーザーとのインタラクションを向上させることができます。セットアップは比較的簡単で、さまざまな環境に対応していますので、ぜひ活用してみてください。詳細については公式サイトこちらをご覧ください。