Memory Recallとチャットの要約

AIモデルが一度に読めるテキストの量には限りがあり、この範囲をコンテキストウィンドウと呼びます。長いチャットでは古いメッセージからこの範囲の外に出てしまい、AIはその内容を忘れます。Marinara Engine(以下Marinara)には、その履歴を取り戻す方法がいくつかあります。このガイドでは、それぞれをオンにする方法と、うまく動かないときの直し方を説明します。

使う記憶機能の選び方

まずはMemory Recall(記憶の呼び出し)から始めてください。Marinaraは自分のコンピューター上の内蔵埋め込みモデルを使えるので、追加の設定なしで動きます。チャットがとても長くなったら、要約も加えてください。

機能できること使えるモード
Memory Recall直前の発言に関連する部分を過去のメッセージから探し、プロンプトに加えます。すべてのモード
Chat Summary(チャットの要約)古いメッセージを短いあらすじに置き換えます。Roleplay
Automatic Summarization(自動要約)1日ごとに要約し、さらに1週間ごとに要約します。常にオンです。Conversation
Advanced Memory Recall(高度な記憶の呼び出し)現在の履歴、シーンの要約、呼び出した抜粋をまとめて管理します。任意です。RoleplayとGame Mode

Memory Recallと要約は役割が違い、同時に使えます。Game ModeではMemory Recallと、必要に応じてAdvanced Memory Recallを使えます(Game Modeでの動作を参照)。Game Mode独自の要約機能はありません。

Memory Recall

Memory Recallは埋め込み(embedding)を使います。埋め込みとは、メッセージの意味を数値で表した指紋のようなものです。Marinaraは過去のメッセージを、チャンクと呼ぶ小さなまとまりに分けて保存します。新しいメッセージの指紋を保存済みの指紋と比べ、もっとも近いチャンクをプロンプトに加えます。

Memory Recallをオンにする

  1. チャットを開き、Chat Settings(チャット設定)をクリックします。
  2. Memory Recallセクションを探します。
  3. Enable Memory Recallをオンにします。

この設定はチャットごとです。Conversationチャットと、シーンが有効になっているRoleplayチャットやGameチャットでは、最初からオンです。それ以外のチャットでは最初はオフです。オフにすると記憶の呼び出しは止まりますが、保存済みの記憶は削除されません。

うまくいかなかった場合: Memory Recallには埋め込みソースが必要です(次のセクションを参照)。何も設定しなければMarinaraは内蔵モデルを使うので、ほとんどの人はそのセクションを飛ばせます。そもそもMemory Recallが表示されているかを確認してください。Marinara Liteと呼ばれる一部のコンテナー版では、この機能が完全にオフになっています。

埋め込みソースを設定する(任意)

Memory Recallには、指紋を作るモデルが必要です。何も設定しなければ、Marinaraは内蔵の埋め込みモデルを使います(下記を参照)。ほとんどの人にはこれがいちばん簡単です。代わりにサービスを使う場合は、チャット設定ではなくアカウントで設定します。

始める前に: 埋め込みを提供するアカウントが必要です。AIプロバイダーへの接続を参照してください。

  1. Connections(接続)を開き、そのアカウントを編集します。
  2. Semantic search (embeddings)(埋め込みによるセマンティック検索)セクションを探します。
  3. 埋め込みモデルの名前を入力します。例えばtext-embedding-3-smallです。
  4. 任意: アドレスを変えるには、Embedding endpoint URL(埋め込みエンドポイントのURL)を設定します。
  5. 任意: Embedding provider(埋め込み用のプロバイダー)を使うと、別のアカウントのキーとアドレスを借りられます。Same as this provider(このプロバイダーと同じ)では、このアカウント自身のものを使います。

埋め込みを提供しないサービスもあります。その場合Marinaraは、OpenAI互換のアカウント、Google、内蔵モデルなど、埋め込み専用のアカウントを選ぶよう求めます。

どこでも同じソースを使うには、Connections → Defaults(接続 → デフォルト)のEmbeddings(埋め込み)でそれを選びます。自分の埋め込みモデルを持たないアカウントは、それを使います。アカウント自身の設定は引き続き優先されます。

埋め込み用のアカウントもEmbeddingsのデフォルトもない場合、Marinaraは内蔵の埋め込みモデルを使います。このモデルは一度だけダウンロードされ、APIキーなしで自分のコンピューター上で動きます。内蔵モデルのセットアップを参照してください。

同じ設定がロアブックのセマンティック検索にも使われるので、一度設定すれば両方に使えます。

保存済みの記憶の確認と管理

  1. Chat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)を開きます。
  2. Access memories for this chatをクリックします。Memories for This Chatウィンドウが開きます。Advanced Memoryがオンの場合、ビューアーはRoleplayのドロワーの中に表示されます。

このウィンドウには、保存されているチャンクの数とおおよそのトークン数が表示されます。チャンクのカードごとに、対象の期間、メッセージ数、作成日時、状態が表示されます。

状態意味
Vectorized指紋の作成が終わり、検索に使えます。
Waiting for vector指紋をまだ作成中です。
Embedding unavailableどの埋め込みソースでも指紋を作れませんでした。

ツールバーには、記憶のエクスポート、インポート、再構築、全消去のアイコンがあります。

Memory Recallの動作

Chat Summary(Roleplay)

Chat Summaryは、古いメッセージを要約エントリーと呼ぶ短いあらすじにまとめます。エントリーはAIに書かせることも自分で書くこともでき、1件ずつオンとオフを切り替えられます。この機能はRoleplayチャット専用です。

Chat Settings(チャット設定)を開き、Lorebooks(ロアブック)の下にあるChat Summary(チャットの要約)を展開します。コンピューターでは、独立したウィンドウとして切り離せます。Chat Settingsの概要を参照してください。

要約エントリーの作成

  1. Summary Scopeでは、直近のメッセージならLastを、メッセージの範囲ならRangeを選びます。
  2. AIにエントリーを書かせるにはGenerateを、自分で入力するにはWriteをクリックします。

各エントリーには、タイトル、元になった範囲またはメッセージ数、推定トークン数が表示されます。エントリーはオンとオフを切り替えたり、展開したり、Editで編集したり、Deleteで削除したりできます。Show InactiveとHide Inactiveで、一覧に表示する内容を切り替えます。Activate AllとDeactivate Allで、すべてのエントリーをまとめて切り替えます。

複数のエントリーを変更するには、チェックを入れて選び(コンピューターでは、Shiftを押しながらクリックすると範囲を選べます)、Enable selected(選択項目を有効化)またはDisable selected(選択項目を無効化)を使います。

Review Agent Outputs(エージェント出力の確認)がオンの場合、AIの要約は承認されるまで待機します。エージェントの承認とAgent Suiteを参照してください。

Automatic Summaries

Automatic Summariesパネルは、チャットを続けるあいだ要約を最新の状態に保ちます。

  1. Enabledをオンにします。
  2. Everyには、要約と要約のあいだに送る自分のメッセージの件数を設定します。デフォルトは5で、範囲は1から200です。
  3. 任意: 要約が一度も作られていない古いチャットを要約するには、Backfill Summaryをクリックします。進捗バーが表示されます。途中でやめるにはStopをクリックします。

要約プロンプト、プロバイダー、出力サイズ

表示の設定

末尾の件数で制限されるのは、要約済みのメッセージです。末尾より古い要約済みのメッセージは、次の要約で隠される前でも、すぐにプロンプトから外されます。まだどの要約にも含まれていない古いメッセージは、外すと失われてしまうため、引き続き送信されます。そのようなメッセージがある場合、Chat SummaryではRecent message tailの下にその件数が表示されます。それらを要約するには、Backfill Summaryをクリックしてください。

まとめて返信するグループチャット

まとめて返信するグループチャットでは、1回の返信で全キャラクターが発言します。エントリーのうち、{{#if char == "Kaito"}}…{{/if}}のように特定のキャラクター向けに書かれた部分は、それが当てはまるすべてのキャラクターについて残され、「known only to Kaito」のように、知っているキャラクターが示されます。Advanced MemoryのNarrator(ナレーター)だけが受け取る部分は含めません。キャラクターが1人ずつ返信するグループチャットと、キャラクターが1人のチャットでは、これまでどおり各キャラクターがエントリーを読み、Narratorはすべての部分を読みます。

Automatic Summarization(Conversation)

Conversationチャットでは、暦の1日ごとに要約を作り、終わった週はまとめて週の要約にします。その後プロンプトに含まれるのは、週の要約、今週の日ごとの要約、今日のメッセージだけです。この処理は自動で動き、オフにはできません。

要約の編集

  1. Conversationチャットを開き、Chat Settings(チャット設定)をクリックします。
  2. Automatic Summarization(自動要約)を探します。
  3. Edit Summaries(要約を編集)をクリックします。

ウィンドウには週が先に並び、そのあとにまだ週にまとめられていない日が並びます。項目を展開すると、Summary(要約)の本文とKey Details(重要な詳細)の行を編集できます。

1日の区切りの設定

足りない日の要約を補う

古いチャットをインポートしたあとなど、ある日の要約が作られないことがあります。ウィンドウのMissing SummariesパネルにBackfillボタンがあります。直近の日を、一度に最大14日ぶんやり直します。要約に使うモデルを変えても、すでにある日や週の項目は書き直されません。

Advanced Memory Recall(RoleplayとGame Mode)

Advanced Memory Recallは、現在の履歴の範囲、話の継続のための要約、過去の抜粋をまとめて管理する任意のモードです。チャットをシーンに分け、終わったシーンごとに要約し、返信ごとに重要なシーンと元のメッセージそのものを呼び出します。Agentsのスイッチとは関係なく動き、ダウンロードするエージェントは必要ありません。

オンにする

  1. Chat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)を開きます。
  2. Advanced Memory Recall(高度な記憶の呼び出し)をオンにします。Roleplayのセットアップウィザードで、Agentsの下にあるAutomatic context and memory handling(コンテキストと記憶の自動管理)をオンにすることもできます。
  3. Maximum allowed context before compression (tokens)(圧縮前に許容する最大コンテキスト、トークン単位)を、モデルのコンテキストウィンドウの範囲内で設定します。
  4. Summary and recall budget (tokens)(要約と呼び出しの予算、トークン単位)を、その上限の範囲内で設定します。
  5. 任意: Helper model(補助モデル)を選びます。

すでに履歴のあるチャットでは、まずPrepare existing history(既存履歴を準備)をクリックしてください(下記を参照)。設定と進捗は、デスクトップでもモバイルでも、ウィザードとChat Settingsのドロワーの両方に表示されます。アーカイブビューアーはドロワー内に表示されます。

設定項目

設定デフォルト内容
Maximum allowed context before compression (tokens)(圧縮前に許容する最大コンテキスト、トークン単位)65,000送信プロンプトがこのサイズに達すると、古いコンテキストが切り捨てられ、呼び出し用に要約されます。
Summary and recall budget (tokens)(要約と呼び出しの予算、トークン単位)6,500コンテキストのうち記憶に使う量です。最大値の10%以上を推奨します。
Helper model(補助モデル)エージェント用アカウント、次にチャットのアカウントシーンの判定、要約、話の継続の処理を行います。
Maximum recalled scenes(想起するシーンの最大数)31回の返信で呼び出すシーンの上限です。0にすると、任意のシーンの呼び出しをオフにします。
Moving context(移動コンテキスト)3~5件のメッセージ呼び出した抜粋ごとのメッセージ数です。両方を0にすると、抜粋なしの要約になります。
Standalone scene check interval (messages)(独立したシーン確認の間隔、メッセージ数)5シーン確認と次のシーン確認のあいだに入る新しいメッセージの数です。
Use Decision model(判断モデルを使用)オフDecisionモデルにシーンの終わりを見つけさせ、記憶を選ばせます。
Decide who sees new messages(新しいメッセージを見られる相手を決める)オフキャラクターが1人ずつ返信するグループチャット専用です。
Character recollections(キャラクターの回想)オフ各キャラクターに、シーンについての自分だけの記憶を持たせます。

予算のデフォルトは、最大値のデフォルトの10%です。後から最大値を変えても、予算は変わりません。上限は、送信プロンプト全体の推定量(指示、メッセージ、呼び出したコンテキスト、ツール、添付ファイル)に適用されます。応答トークンと安全のための余裕は別枠です。これは推定値で、正確なトークナイザーの計数や課金の上限ではありません。

記憶の要約の呼び出しはすべてChat Summary → Maximum output size(チャットの要約 → 最大出力サイズ)を使い、推論の余裕として少なくとも8,196出力トークンを確保します。

既存履歴の準備

  1. Prepare existing history(既存履歴を準備)をクリックします。開始前に、実際に使われるモデルが表示されます。
  2. 待ちます。古い履歴をバッチごとに処理し、現在の段階を表示します。
  3. 止めるにはCancel(キャンセル)を使います。完了した作業は保持されます。続けるにはResume(再開)を使います。ドロワーを閉じたあとでも、サーバーを再起動したあとでも、アプリをアップデートしたあとでも続けられます。

モデルの呼び出しが失敗しても、それまでの有効な記憶は保持され、再試行できるエラーが表示されます。失敗したあとに記憶をリセットしないでください。Resumeは完了済みの要約を再利用します。最後の進行中のシーンは開いたままで、閉じた時点で要約されます。

復元した履歴によって、手動の修正が対象とするシーンが変わった場合は、その文章を参照用に残すためにその記憶をオフにするか、削除してから、もう一度準備してください。Fix(修復)は処理を止めずにそのシーンを飛ばし、一覧に表示します。

準備済みのチャットからBranch from here(ここから分岐)などで作った分岐は、Advanced Memoryを引き継ぎます。シーンの途中で作った分岐では、そのシーンが再び開いた状態になります。古い要約は破棄され、シーンが閉じたときに新しい要約が書かれます。新しい分岐としてインポートしたチャットは、通常どおり準備されます。

記憶の問題を直す

チャットの記憶に壊れた部分があると、Chat Settings(チャット設定)ボタンにアクセントカラーの点が点滅せずに表示され、問題のあるシーンの数が通知されます。同じ問題が通知されるのは1回だけで、点は問題が片付くまで表示されたままです。Chat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)では、問題が設定の上に一覧表示されます。Access memories for this chatにも同じ点が表示されます。

通知または一覧でFix(修復)を押すと、印の付いたシーンを1回の実行ですべて修復します。Helper model(補助モデル)を使います。Pause processing(処理を一時停止)で止め、Resume processing(処理を再開)で続けます。Fixは次のことを行います。

Fixは、手動で編集した要約を書き換えることはありません。そうした要約はneed your reviewの下に表示し、処理を続けます。キャラクターの知識範囲や、動作するDecision接続など、設定を代わりに変えることはできません。

Fixが終わると、「Advanced Memory fixed N scenes」と、確認が必要なシーンの番号が表示されます。番号を選ぶと、そのシーンがAccess memories for this chatで開きます。Chat Settingsを閉じていた場合は、Show(表示)付きの通知からその画面へ移動できます。Fixが判断できなかったシーンは、次回のFixで再び尋ねられることはないため、そのシーンのキャラクターのアクセス権は自分で保存してください。

シーンの再スキャン

シーンの変わり目が見落とされた場合、たとえばシーンが終わらないままになった場合は、Chat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)のRe-scan scenes(シーンを再スキャン)を使います。

  1. 確認する最初と最後のメッセージ番号を入力します。最初は進行中のシーンの範囲が入っています。
  2. Re-scan(再スキャン)を押します。

Advanced Memoryは、それらのメッセージにあるシーンの変わり目を探し直し、変わったシーンを要約します。Use Decision model(判断モデルを使用)がオンならDecisionモデルを、オフなら補助モデルを使います。範囲外のシーンは、境界と要約をそのまま保ちます。手動で編集した要約が変わってしまう場合、再スキャンはそこで止まり、そのシーンを示します。

任意のDecisionモデル

Decisionモデルとは、はい・いいえで答える質問に回答する小さなモデルです。デフォルトではオフで、Roleplayチャットごとに保存されます。

  1. Advanced MemoryでUse Decision model(判断モデルを使用)をオンにします。
  2. Memory Decision connection(記憶用の判断接続)でモデルを選びます。Built-in model(内蔵モデル)の下には、グローバルなDecision model(判定モデル)と同じモデルが並びます。まだ回答できないモデルは理由付きでグレー表示され、停止中のモデルは問い合わせたときに起動します。Connections(接続)の下には、保存済みのDecisionアカウントが並びます。Decisionモデルを参照してください。

この選択は、グローバルなDecisionのデフォルトとは別です。

このモデルは、履歴の準備中と、進行中のシーンの確認中に、シーンの境界を見つけます。新しい返信の前には、2段階で記憶を選びます。詳しくは判断による呼び出しの仕組みを参照してください。

ホスト型のアカウントには、最近の会話のテキストと、評価対象として絞り込まれた要約やメッセージが送られ、返信ごとに複数のリクエストの料金がかかることがあります。記憶の呼び出しでは、候補を送る前にキャラクターのアクセス権で絞り込みます。

新しいメッセージを見られる相手の決定

キャラクターが1人ずつ返信するRoleplayのグループチャットでは、新しいメッセージをどのキャラクターが見られるかをAdvanced Memoryに決めさせることができます。そうすれば、シーンから去ったキャラクターから、すべての行を自分で隠す必要はありません。まとめて返信するグループチャットや、キャラクターが1人のチャットには、この機能はありません。

  1. Advanced MemoryでDecide who sees new messages(新しいメッセージを見られる相手を決める)をオンにします。

自分のメッセージでもキャラクターのメッセージでも、新しいメッセージはそのシーンにいないキャラクターから隠されます。メッセージ自身のボタンと同じ、キャラクターごとのHide from AI(AIから隠す)を使うため、目に斜線のマークで誰が見られないかがわかります。自分のメッセージは、投稿した時点で判断されます。それより前のメッセージは、次のキャラクターが返信する前に判断されます。

Advanced Memoryがオンの場合、キャラクターの新しい返信が**、---、 のような区切り線でシーンや視点を切り替えることがあります。その場合、返信は部分ごとに、同じキャラクターの別々のメッセージとして保存されます。

Character recollections

Character recollections(キャラクターの回想)をオンにすると、各キャラクターがシーンについて自分だけの記憶を持つようになります。デフォルトはオフです。

回想が正しく保たれる仕組みは次のとおりです。

回想が表示される場所とコストは次のとおりです。

編集とオフにしたときの動作は次のとおりです。

Game Modeでの動作

Game Modeのチャットでも、同じようにChat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)でAdvanced Memory Recallをオンにします。オフの場合、Gameのセッションはコンテキストの上限に達するまで毎ターン履歴全体を送るため、長いセッションでは1ターンあたりの入力トークンがはるかに多くなります。オンにすると、プロンプトはMaximum allowed context before compression(圧縮前に許容する最大コンテキスト)の範囲内に保たれます。現在のシーンはそのままのメッセージとして送られ、以前のシーンは要約と、呼び出しが選んだ場面として送られます。

トラブルシューティング

問題対処法
Memory Recallが何も呼び出さない埋め込みソースが設定されているか確かめてください。チャンクがEmbedding unavailableになっている場合は、Semantic search (embeddings)(埋め込みによるセマンティック検索)のモデルを設定するか、内蔵モデルを使ってください。内蔵モデルのセットアップを参照してください。
チャンクがWaiting for vectorのままになっている少し待ってください。指紋は返信のあとに作られます。
関連するものがないように見える呼び出されるのは、関連の強い記憶だけです。何も追加されないのは正常な動作です。
埋め込みモデルを変えたら呼び出しの精度が落ちたMemories for This Chatの再構築アイコンを使ってください。
要約が生成されないチャットで使えるテキスト用のアカウントが必要です。Chat SummaryはSummary Providerを使います。どれも使えない場合、生成は行われません。
AIの要約がいつまでも表示されないReview Agent Outputs(エージェント出力の確認)が承認を待っている可能性があります。
要約が止まったまま進まない失敗した要約は、少し時間をおいて再試行されます。Backfill Summary(Roleplay)またはBackfill(Conversation)を実行してください。
シーンにCheck who was thereの印が付いているFix(修復)を押すか、そのシーンをAccess memories for this chatで開き、Edit character access(キャラクターのアクセス権を編集)を使ってください。

そのほかの問題については、Marinara Engineのトラブルシューティングを参照してください。

Advanced Memoryのリファレンス

ほとんどの読者には必要のない詳細です。これを読まなくても、上記の設定は使えます。

シーンの検出と要約の仕組み

現在の履歴の範囲と予算

呼び出しで返される内容

Access memories for this chat

これを開くと、番号付きのシーン要約の検索、その期間と読み手の確認、Summary text(要約本文)の編集ができ、Inspect source messages(元のメッセージを確認)で元のメッセージを読めます。記録をオフにしたり、Reindex(再インデックス)したり、エクスポートとインポートをしたりできます。Delete all memories(すべての記憶を削除)を使うと、チャットと設定を残したまま準備をやり直せます。手動の要約への修正は保持され、それに依存する継続用の要約は無効になります。要約の下部にあるDelete summary(要約を削除)は、対象の要約と読み手を確認した後で、その要約を削除します。旧形式のContinuity(連続性)やOngoing scene(進行中シーン)の項目にも使えます。削除した要約は、通常の準備では再生成されません。

シーンを呼び出しから除外するには、その記憶の記録をオフにしてください。キャラクターごとの非表示は、引き続き誰がアクセスできるかを制御します。全体の非表示では、アーカイブから取り除かれません。

シーンを読めるキャラクター

判断による呼び出しの仕組み

プリセット内の配置

プリセットの作成者は、通常のセクション順序、名前、ロール、グループの設定を使い、次のコンテンツマーカーを配置できます。

マーカー内容
chat_summaryChat Summariesの対象となる常時要約。
current_scene_summary進行中のシーンの古い部分から取ったソース抜粋。
recalled_scenes選択したすべてのシーン要約。それぞれの直後に抜粋が続きます。

それぞれ、プリセットのXML、Markdown、Noneの形式に従います。空の要素は何も出力しません。最初の有効なマーカーが位置を決めます。有効なマーカーがない要素は、履歴の前に1回だけ挿入されるため、古いプリセットも動作します。プリセットのピッカーにはRecalled Scenesだけが表示されます。古いrecalled_messagesマーカーはエイリアスで、有効なrecalled_scenesマーカーが優先されます。Advanced Memoryがオフの場合、これらのマーカーは空です。

制限

呼び出しは選択的で、要約は細部を失うことがあります。重要な修正は、元の会話記録か要約エディターに残してください。埋め込みが失敗しても、範囲を絞った文字列による呼び出しと、有効な継続情報は残ります。アーカイブ全体が挿入されることはありません。指示や添付ファイルが上限に収まらない場合は、それらを減らすか上限を上げてください。応答用の予約がモデルの総コンテキストに収まらない場合は、出力サイズを下げるか、コンテキストの大きいモデルを選んでください。Advanced Memoryは、指示を黙って削除する代わりに停止します。

Advancedモードがオンの間はこのモードが検索を担当するため、Standard Recallが同じ内容をもう一度挿入することはありません。そのチャットの通常のRoleplay自動要約スケジュールも置き換えます。オフにすると、通常の設定に戻ります。既存のロアブックやダウンロードするエージェントは、それぞれの適用範囲の規則に従います。

関連ガイド