Skip to Content
ドキュメントメモリ概要

メモリの概要

メモリは、エージェントが利用可能なコンテキストを管理する方法であり、すべてのチャットメッセージをコンテキストウィンドウに凝縮したものです。

コンテキストウィンドウ

コンテキストウィンドウは、言語モデルが任意の時点で見ることができる情報の総量です。

Mastraでは、コンテキストは3つの部分に分かれています:システム指示とユーザーに関する情報(ワーキングメモリ)、最近のメッセージ(メッセージ履歴)、そしてユーザーのクエリに関連する古いメッセージ(セマンティック検索)です。

さらに、コンテキストが長すぎる場合にコンテキストをトリミングしたり情報を削除したりするためのメモリプロセッサも提供しています。

クイックスタート

メモリを動作させる最も速い方法は、組み込みの開発プレイグラウンドを使用することです。

まだ作成していない場合は、メインのスタートガイドに従って新しいMastraプロジェクトを作成してください。

1. メモリパッケージをインストールします:

npm install @mastra/memory@latest

2. エージェントを作成し、Memoryインスタンスを接続します:

src/mastra/agents/index.ts
import { Agent } from "@mastra/core/agent"; import { Memory } from "@mastra/memory"; import { openai } from "@ai-sdk/openai"; import { LibSQLStore } from "@mastra/libsql"; // Initialize memory with LibSQLStore for persistence const memory = new Memory({ storage: new LibSQLStore({ url: "file:../mastra.db", // Or your database URL }), }); export const myMemoryAgent = new Agent({ name: "MemoryAgent", instructions: "...", model: openai("gpt-4o"), memory, });

3. 開発サーバーを起動します:

npm run dev

4. プレイグラウンド(http://localhost:4111)を開き、`MemoryAgent`を選択します:

いくつかのメッセージを送信して、会話の中で情報を記憶していることを確認してください:

➡️ あなた: 私の好きな色は青です。 ⬅️ エージェント: わかりました!あなたの好きな色が青であることを覚えておきます。 ➡️ あなた: 私の好きな色は何ですか? ⬅️ エージェント: あなたの好きな色は青です。

メモリースレッド

Mastraはメモリーをスレッドに整理します。スレッドは特定の会話履歴を識別する記録であり、次の2つの識別子を使用します:

  1. threadId: 特定の会話ID(例:support_123)。
  2. resourceId: 各スレッドを所有するユーザーまたはエンティティID(例:user_123org_456)。
const response = await myMemoryAgent.stream("Hello, my name is Alice.", { resourceId: "user_alice", threadId: "conversation_123", });

重要: これらのIDがなければ、メモリーが適切に設定されていても、エージェントはメモリーを使用しません。プレイグラウンドではこれが自動的に処理されますが、アプリケーションでメモリーを使用する場合は自分でIDを追加する必要があります。

会話履歴

デフォルトでは、Memoryインスタンスは現在のMemoryスレッドから最新の10件のメッセージを各新規リクエストに含めます。これにより、エージェントに即時の会話コンテキストが提供されます。

const memory = new Memory({ options: { lastMessages: 10, }, });

重要: 各エージェント呼び出しでは、最新のユーザーメッセージのみを送信してください。Mastraは必要な履歴の取得と挿入を処理します。履歴全体を自分で送信すると重複が発生します。useChatフロントエンドフックを使用する場合の処理方法については、AI SDK Memoryの例を参照してください。

ストレージ設定

会話履歴はメッセージを保存するためにストレージアダプターに依存しています。 デフォルトでは、メインのMastraインスタンスに提供されたものと同じストレージを使用します。

MemoryインスタンスもMastraオブジェクトもストレージプロバイダーを指定していない場合、Mastraはアプリケーションの再起動やデプロイメント間でメモリデータを永続化しません。ローカルテスト以外のデプロイメントでは、Mastraまたはnew Memory()内で直接独自のストレージ設定を提供する必要があります。

Mastraインスタンスにstorageが指定されている場合、エージェントに接続されているすべてのMemoryで自動的に使用されます。その場合、エージェントごとのオーバーライドが必要でない限り、new Memory()storageを渡す必要はありません。

import { Memory } from "@mastra/memory"; import { Agent } from "@mastra/core/agent"; import { LibSQLStore } from "@mastra/libsql"; const agent = new Agent({ memory: new Memory({ storage: new LibSQLStore({ url: "file:./local.db", }), }), });

ストレージコードの例:

次のステップ

コアコンセプトを理解したところで、セマンティック検索に進んで、MastraエージェントにRAGメモリを追加する方法を学びましょう。

あるいは、利用可能なオプションについては設定リファレンスを参照するか、使用例を閲覧することもできます。