# スマートコンテキスト

# この拡張機能はもはや保守されていません。推奨されていません。チャット ベクトル化を代替案として検討。

# それは何ですか?

Smart ContextはSillyTavern拡張機能はChromaDB ライブラリを使用してAIキャラクター通常のチャット履歴コンテキスト制限の外側に存在する情報へのアクセスを与えます。

# それはどのように有用ですか?

とても長いチャットを持っている場合、内容の大部分は通常のコンテキスト ウィンドウの外側にあるため、応答を書く場合AIが利用できません。

Smart Contextはチャット ファイル全体の履歴を自動的に取得して、ベクター データベースに入れます。このデータベースは新しい入力を送信するたびに検索されます。マッチングキーワードを持つメッセージが見つかった場合、それらのチャット メッセージはコンテキストに追加されるため、AIはその次の応答を書く際にそれらを表示することができます。


# セットアップ指示

  1. SillyTavern を少なくともバージョン1.10.6 アップデート。
  2. 拡張機能パネルの「拡張機能とアセット をダウンロード」メニューから"Smart Context" 拡張機能をインストール(積み重ねられたブロック アイコン)。
  3. Extrasをインストール または更新して最新バージョン。または、Colab ノートブック使用。
  4. *ローカル インストール のみ:*Extrasに対して requirements-complete.txtをインストール(前回のインストール前に行っている場合)。
  5. Chromadbモジュールを有効にしてExtrasを実行:python server.py --enable-modules=chromadb

# ChromaDBのインストール時にエラーが発生していますか?

ERROR: Could not build wheels for hnswlib, which is required to install pyproject.toml-based projects

chromadbパッケージをインストールするには、次が必要:


# 構成

Smart Contextが有効化されたら、SillyTavern UIで構成する必要があります。 Smart Context構成はExtensionsメニュー内から実行できますSTExtensionMenuIcon

Smart Context設定パネル
Smart Context設定パネル

4つの主要な概念について認識すること:

  • チャット履歴保持
  • メモリー注入量
  • 個別メモリー長
  • 注入戦略

# SmartContextは10メッセージ後に開始

  • 新しいチャットの開始時、ChromaDBは非アクティブです。
  • チャットが10メッセージを累積すると、すべてのメッセージをデータベースに記録し始めると必要に応じてメッセージを呼び起こります。

# チャット履歴保持("保留中のメッセージ")

デフォルトでは、ChromaDBはスライダーで指定されたスライダーと同じくらい多くの最後の自然なチャット履歴メッセージを保持します。 この金額を超えるメッセージは送信プロンプトから削除され、"メモリー"がデータベースに存在する場合、より古いチャット履歴メッセージの場所に追加されます(下の戦略を参照)。


# メモリー注入量

Smart Contextがコンテキストに挿入する"メモリー"の最大数。 すべての注入試行がこの完全な金額を取得しません。 新しい入力"犬"に関連し、データベース内で唯一の他のメッセージが"犬"に関連している場合、1項目のみが挿入されます。


# 個別メモリー長

これは各注入された"メモリー"に許可される最大長です。 これは文字(トークンではない)です。 設定が小さすぎる場合、メモリー途中で カットオフされる可能性があります。

例:

Ross: I like dogs with long fur and fluffy tails. I dislike dogs with short fur and short tails.

このデータベース"メモリー"は103文字です。そのため、コンテキストに完全に引き込むにはスライダーを少なくとも103に設定する必要があります。

スライダーが103未満の場合、メッセージはカットオフされ、その方法を注入します。


# 注入戦略

# 最も古い履歴置換

この戦略はX最後の メッセージを保留し、その前のすべてのメッセージを削除し、"メモリー"で置き換えます。

利点

  • コンテキスト制限を超える可能性が低い
  • コンテキストの上部の近くに存在するメモリーは保持されたの自然なチャット履歴メッセージに対する即時の影響が少なくなります。

欠点

  • 古いメッセージは特別な改ページなしでチャット履歴に直接挿入され、通常保留されている自然なチャット履歴メッセージに対する直接的な自然な関連性がありません。これは、より低いインテリジェンスAIモデルを混乱させることができます。

# 下部に追加

この戦略は、チャット履歴を自然な状態のままにし、フォーマットされた[ブラケット ヘッダー]内の後で"メモリー"を追加します。 これは"保留メッセージ"スライダーが効果的に無効化されることを意味します。

利点

  • 現在の自然なチャット履歴を短縮または変更しません
  • "メモリー"はチャット後にあり、次のAI応答にはより強い影響があります

欠点

  • チャット項目が削除/置き換えられないため、コンテキスト制限を超える可能性が高い
  • メモリーはプロンプトの終了近くに存在するため、AIの応答に効果が強すぎる可能性があります。

# カスタム深さ

この戦略は、チャット履歴を自然な状態のままにし、指定した深さの指定したテンプレート内に"メモリー"を追加します。 これは"保留メッセージ"スライダーが効果的に無効化されることを意味します。 カスタム注入メッセージは``テンプレート単語を含める必要があり、すべてのクエリされたメモリーが配置されます。

利点

  • メモリー配置をテストする柔軟性
  • コンテキスト内でメモリーへのカスタマイズ紹介

欠点

  • チャット項目が削除/置き換えられないため、コンテキスト制限を超える可能性が高い

# % 戦略を使用

注意:これは"下部に追加"戦略と互換性がありません。それはメッセージを削除しません。

"最も古い履歴置換"戦略を使用している場合、このボックスをチェックするとスライダーを有効にして、SmartContextメモリーで置き換えるチャット履歴に含まれるパーセンテージを選択します。また、メッセージ数を手動で選択するための2つのスライダーを無効にします。

この戦略は、メッセージの固定数の代わりに、SmartContextメモリーで置き換えるチャット履歴のパーセンテージを自動的に計算します。

利点

  • 削除する メッセージ数を手動で計算するよりも簡単
  • 利用可能なコンテキスト サイズを調整し、小さなプロンプト スペースと大きなプロンプト スペースの両方に同じパーセンテージを適用

欠点

  • 計算された履歴を削除する方法は、推定メッセージあたりのトークンに基づいているため、若干不正確な可能性があります
  • メッセージ数を削除するために最も近い5で割り切れる数に四捨五入(0、5、10、15、20など)するため、手動の数値選択ほど微細ではありません。

# メモリー リコール戦略

# このチャットからのみ回収

これはsmart-contextのデフォルトの動作で、このチャット特定のChromanDBコレクションからのみ"メモリー"を取得します。

# すべてのキャラクター チャットから回収

これはsmart-contextの実験的な動作で、選択したキャラクター用のすべてのChromanDBコレクションから"メモリー"を取得します。 理論的には、複数のインタラクション間で堅牢なメモリーセットの発展を可能にする必要があります。 これは"下部に追加"または"カスタム深さ"戦略と使用し、"保留メッセージ"を低い数に設定して、ChromaDBがメモリーから早期に引き出す場合が推奨です。

# Smart Contextの使用

いったん有効化され構成されたら、Smart Contextは自動的に発生します。

ChromaDB SillyTavern内で開かれた各チャット向けに新しいデータベースを生成。 このデータベースはチャット履歴全体で自動的に入力されます。

また、テキスト ファイルをデータベースに手動で挿入することもできます。

これらのテキスト ファイルはチャットである必要はありません。何でも(Wikipedia記事、ファンフィック、等)。

# データベースのパージ

このチャット向けにデータベースをクリアするには、"Purge DB"ボタンを使用できます。

これは、不正確なメモリー保存されている場合に役立つ(削除または編集済みのチャット メッセージなど)。


# よくあ質問

# チャット終了時にデータベースはどうなりますか?保存できますか?

ローカルでインストール済みExtrasサーバーの場合、Smart Contextはデータベースを保存。通常の使用例では手動で保存する必要がありません。

Colabユーザーの場合、extrasサーバーがシャットダウンするときにデータベースが削除されます。エクスポート ボタンを使用してデータベースをJSONファイルとして保存し、後で使用する場合はインポートします。

通常、Smart Contextデータベースを保存する必要はありません。

現在、Import/Export機能があり、チャットのDBを保存して後で使用できます。

# すべてのチャットで参照するための1つの大きなデータベースを作成できますか?

これはSmart Contextの機能をうまく使用しません。 この目的にはWorld Infoを使用することをお勧めします。