DiffMemはAIインテリジェンスや会話システムのために設計された軽量なメモリーバックエンドです。 革新的にGitをメモリストアのコアとして使用し、AIメモリを人間が読めるMarkdownファイルとして保存します。 Gitのコミット履歴は、時間の経過に伴う記憶の進化を追跡するために使用され、システムは高速で解釈可能な情報検索のためにメモリ内のBM25インデックスを採用している。 このプロジェクトは現在、AIアプリケーションのための効率的でスケーラブルなメモリー基盤を構築するために、バージョン管理システムをどのように利用できるかを探る概念実証(PoC)である。 DiffMemは記憶をバージョン管理された知識ベースとして扱います。知識の「現在の状態」は編集可能なファイルに保存され、過去の変更はGitのコミットグラフに保存されます。この設計により、インテリジェンスはコンパクトな最新の知識レベルでクエリを実行することができ、同時に必要に応じて記憶の進化を掘り下げることができる。
機能一覧
- ギット駆動のメモリー・ストレージGitのバージョン管理機能を使ってAIメモリの進化を管理・追跡し、各メモリの更新をGitのコミットに対応させる。
- 人間が読めるフォーマットメモリーはシンプルなMarkdownファイルとして保存され、開発者が直接読み、編集し、管理することができます。
- 現状の焦点デフォルトでは、知識文書の "現在の状態 "のみがインデックス化され、検索されます。これは、クエリの範囲を縮小し、検索効率と大規模言語モデル(LLM)のコンテキストにおけるトークンエコノミーを向上させます。
- 微分進化トラッキングスルー
git diff
などのコマンドを使用することで、スマートボディは完全な履歴を読み込むことなく、特定の情報を時間をかけて効率的に照会することができる。 - 高速テキスト検索キーワード検索にミリ秒単位の高速レスポンスを提供する、インメモリBM25インデックスを内蔵。
- モジュラーコンポーネントシステムはいくつかのコアモジュールで構成されており、その中にはダイアログの分析やアップデートの送信を担当するモジュールも含まれています。
写入智能体
のクエリーコンテキストを統合する役割を担う。上下文管理器
捜索を担当する者だけでなく搜索智能体
. - 軽量で統合が容易Pythonモジュールとして既存のプロジェクトに直接統合できます。
ヘルプの使用
DiffMemはシンプルなPythonモジュールとしてインポートできるように設計されており、複雑なサーバーデプロイは必要ありません。以下はインストールと使用方法の詳細です。
環境の準備とインストール
- コードベースのクローン
まず、GitHubからクローンする必要があります。DiffMem
ソースコード・リポジトリーをローカル・コンピューターにコピーします。ターミナルまたはコマンドラインツールを開き、以下のコマンドを入力する:git clone https://github.com/Growth-Kinetics/DiffMem.git
実行後、コードベースはカレント・ディレクトリの
DiffMem
のフォルダ内の - プロジェクト・ディレクトリに移動する
利用するcd
コマンドをプロジェクトフォルダーに追加する:cd DiffMem
- 依存関係のインストール
DiffMemの実行は多くのPythonライブラリに依存しており、これらの依存関係についてはrequirements.txt
を使うことができます。ファイルにはpip
をインストールする:pip install -r requirements.txt ``` 这个命令会自动下载并安装`gitpython`、`rank-bm25`和`sentence-transformers`等必要的库。
- APIキーの設定
DiffMemでは、例えば会話の内容を分析するために、Large Language Models (LLM)を連携して使用する必要があります。このプロジェクトではLLMコールを管理するためにOpenRouterを使用しています。APIキーを環境変数に設定する必要があります。
LinuxまたはmacOSシステムの場合はexport
命令だ:export OPENROUTER_API_KEY='你的密钥'
Windows システムの場合は
set
命令だ:set OPENROUTER_API_KEY='你的密钥'
を含めてください。
你的密钥
このキーを有効なAPIキーに置き換えてください。
コア機能の操作
DiffMemの主な機能はDiffMemory
クラスはユーザーに公開される。このクラスを初期化し、そのメソッドを呼び出してメモリの読み取り、書き込み、問い合わせを行うことができます。
- メモリーバンクの初期化
まずDiffMemory
クラスを作成し、ローカルパスで初期化します。このパスが Git リポジトリとなり、メモリが保存されます。from src.diffmem import DiffMemory # 初始化记忆库,指定仓库路径、用户名和API密钥 # 如果路径不存在,系统会自动创建一个新的Git仓库 memory = DiffMemory( repo_path="/path/to/your/memory_repo", user_name="alex", api_key="你的OpenRouter密钥" )
上のコードでは
/path/to/your/memory_repo
思い出を保存したいフォルダへのパスに置き換えてください。 - 思い出の加工と提出
ダイアログやセッションの内容をprocess_and_commit_session
DiffMemの書き込みインテリジェンスは、自動的にテキストを解析してエンティティ情報を抽出または更新し、その変更を単一のGitコミットとして保存します。# 假设你有一段新的对话内容 conversation_text = "今天和妈妈一起喝了咖啡,她提到下周要去旅行。" session_id = "session-12345" # 为这次会话指定一个唯一的ID # 处理并提交这次会话的记忆 memory.process_and_commit_session(conversation_text, session_id) print("记忆已成功处理并提交。")
実行すると、関連するナレッジがMarkdownファイルに更新され、新しいGitコミットレコードが生成され、コミットメッセージにはセッションIDが含まれます。
- コンテキストを取得する
AIと対話するときはget_context
メソッドを使用して、現在のダイアログに関連する背景情報を取得します。このメソッドは、返される詳細のレベルを制御するために、さまざまな "depth "パラメータをサポートしています。depth="basic"
:: コア情報ブロックを取得する。depth="wide"
より広範に関連する情報を返すために、セマンティック検索を行う。depth="deep"
クエリーに関連付けられたファイルの完全な内容を返します。depth="temporal"
Gitの履歴を含む時間情報を返す。
# 假设当前的对话是关于“妈妈的旅行计划” current_conversation = "妈妈的旅行计划定了吗?" # 获取深度上下文 context = memory.get_context(current_conversation, depth="deep") # 将获取到的上下文信息打印出来 print("获取到的相关上下文:") print(context)
この文脈をLLMに入力することで、より正確で文脈に精通した回答を生成することができる。
- 検索の直接実行
を使うこともできます。search
メモリーバンクから情報を取り出す方法。query = "关于妈妈的信息" search_results = memory.search(query) print(f"关于 '{query}' 的搜索结果:") for result in search_results: print(f"- {result}")
実行サンプルコード
プロジェクトのexamples/
完全な使用法のデモ・ファイルは、以下のディレクトリにあります。usage.py
.直接実行することで、DiffMemの完全なワークフローを観察することができる。
ターミナルで以下のコマンドを実行する:
python examples/usage.py
このスクリプトでは、メッセージの入力から出力までのDiffMemの一連の流れを示しながら、メモリーバンクの初期化、新しいメモリーのコミット、新しいダイアログコンテンツに基づくコンテキストの取得方法を説明します。
アプリケーションシナリオ
- パーソナルAIアシスタント
長期記憶機能をパーソナルAIアシスタントに提供することができる。アシスタントは、ユーザーの好み、過去の会話、重要な日付や出来事を記憶することができる。時間が経つにつれて記憶は進化していくが、アシスタントは過去の軌跡を保持しながら情報の最新の状態のみに焦点を当てるため、「先週話し合ったこと」や「娘の年齢は今何歳か」を正確に思い出すことができる。 - 継続的な学習が必要なAIシステム
カスタマーサービスやテクニカルサポートなどの分野では、AI インテリジェンスは常に新しい製品知識やビジネスプロセスを学習する必要があります。DiffMem はこの知識の進化を記録することができます。操作ガイドが更新されると、システムは新バージョンを保存し、Git履歴を介して変更も記録します。これにより、AIは常に最も正確な情報を提供し、あらゆる知識ポイントの履歴バージョンを追跡することができます。 - マルチインテリジェンス・コラボレーション
マルチインテリジェンスシステムでは、異なるインテリジェンスが同じDiffMemメモリを共有することができます。Gitのブランチやマージリクエストのメカニズムを通して、インテリジェンスは共有された知識の更新や、起こりうる「メモリの競合」を解決することで、一貫性のある、バージョン管理されたチームメモリを形成するために協力することができる。 - 解釈可能性とデバッグ
AI は時として開発者にとって「ブラックボックス」のように振る舞うことがありますが、DiffMem は AI の記憶を人間が読めるテキストと Git のコミット履歴として保存することで、その解釈可能性を大幅に向上させます。開発者はコードをまるでgit log
歌で応えるgit diff
AIが何を「学習」し、「知識がどのように変化したか」を見ることは、AIの行動や意思決定プロセスをデバッグするのに非常に役立つ。
品質保証
- DiffMemは従来のベクターデータベースとどう違うのですか?
ベクトルデータベースは主に高次元データの類似性検索に使用され、情報(テキストなど)をベクトルに変換して保存し、ベクトル間の距離を計算することで類似するコンテンツを見つけ出す。 一方、DiffMemはベクトル埋め込みに頼らず、記憶をバージョン管理されたテキストドキュメントとして管理するという、全く異なるアイデアを採用しています。 DiffMemの核となる利点は、経時的な情報を扱い、事実の変化(例えば、人の年齢が9歳から10歳に変わる)を明確に追跡できることである。一方、ベクトル・データベースは、この種の「事実の更新」を扱う際に、古くノイズの多い情報を保持する可能性がある。 - バックエンド技術にGitを選ぶ理由
Gitが選ばれたのは、バージョン管理されたドキュメントを管理するための、成熟した強力なソリューションだからだ。 Gitの利点はAIメモリのニーズによく合っています。diff
)、録画履歴(log
)、任意の時点(checkout
)と支店管理(branch
). 加えて、Gitは分散され、データはシンプルなファイルに保存されます。そのため、リポジトリは非常にポータブルで永続的であり、独自のフォーマットに依存しません。 - DiffMemは本番環境に適していますか?
現在、DiffMemは概念実証(PoC)プロジェクトであり、作者はまだ本番環境向けに強化されていないことを明らかにしています。 DiffMemには、Gitのリモート同期を手動で行う必要があるなど、いくつかの制限がある(push
/pull
)、エラー処理メカニズムが比較的基本的で、マルチユーザーの同時アクセス用に設計されたロックメカニズムがない。 したがって、大規模な商用アプリケーションで直接使用する前に、さらなる開発とテストが必要である。 - DiffMemを実行するために必要な主なソフトウェアの依存関係は?
DiffMemは軽量プロジェクトであり、以下の主要な依存関係がある。GitPython
ライブラリ(PythonでGitリポジトリを操作するためのもの)、rank-bm25
ライブラリ(効率的なテキスト検索アルゴリズムの実装用)とsentence-transformers
(意味的に関連する検索機能をサポートするために使用される)。