LLM、AIエージェント、マルチエージェントシステム向けのオープンソースSQLネイティブメモリエンジン。一行のコードで永続化され、クエリ可能なAIメモリ機能を実装。
Memori - オープンソースAI記憶エンジンの詳細
プロジェクト概要
Memoriは、大規模言語モデル(LLM)、AIエージェント、およびマルチエージェントシステム向けに設計された、オープンソースのSQLネイティブな記憶エンジンです。たった1行のコードで、あらゆるLLMに永続的でクエリ可能な記憶能力を付与し、標準SQLデータベースを使用して記憶データを保存します。
主な特徴:
memori.enable()の1行コードで統合可能- 記憶データは標準SQLデータベース(SQLite、PostgreSQL、MySQL)に保存され、ユーザーが完全に所有・管理
- AIは会話を記憶し、インタラクションから学習し、複数のセッション間でコンテキストを維持
Memoriを選ぶ理由
1. 1行コードでの統合
OpenAI、Anthropic、LiteLLM、LangChain、およびあらゆるLLMフレームワークをサポートし、統合は非常に簡単です。
2. SQLネイティブなストレージ
- ポータブル、クエリ可能、監査可能な記憶データ
- ユーザーが完全に管理するデータベースに保存
- 複雑なベクトルデータベースは不要
3. コストを80-90%削減
高価なベクトルデータベースが不要なため、運用コストを大幅に削減します。
4. ベンダーロックインなし
記憶をSQLite形式でエクスポートでき、いつでもどこへでも移行可能です。
5. スマートな記憶管理
- 自動エンティティ抽出
- 関係マッピング
- コンテキストの優先順位付け
クイックスタート
インストール
pip install memorisdk
基本的な使い方
from memori import Memori
from openai import OpenAI
# 初期化
memori = Memori(conscious_ingest=True)
memori.enable()
client = OpenAI()
# 最初の会話
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "I'm building a FastAPI project"}]
)
# その後の会話 - Memoriが自動的にコンテキストを提供
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Help me add authentication"}]
)
# LLMはあなたのFastAPIプロジェクト情報を自動的に認識します
サポートされるデータベース
Memoriはあらゆる標準SQLデータベースをサポートしています。
| データベース | 接続文字列の例 |
|---|---|
| SQLite | sqlite:///my_memory.db |
| PostgreSQL | postgresql://user:pass@localhost/memori |
| MySQL | mysql://user:pass@localhost/memori |
| Neon | postgresql://user:pass@ep-*.neon.tech/memori |
| Supabase | postgresql://postgres:pass@db.*.supabase.co/postgres |
サポートされるLLMフレームワーク
LiteLLMのネイティブコールバックシステムを介して、Memoriはすべての主要フレームワークをサポートしています。
| フレームワーク | ステータス | 使用方法 |
|---|---|---|
| OpenAI | ✓ ネイティブサポート | from openai import OpenAI |
| Anthropic | ✓ ネイティブサポート | from anthropic import Anthropic |
| LiteLLM | ✓ ネイティブサポート | from litellm import completion |
| LangChain | ✓ サポート | LiteLLMを介して統合 |
| Azure OpenAI | ✓ サポート | ProviderConfig.from_azure() を使用して設定 |
| 100+ モデル | ✓ サポート | LiteLLM互換のあらゆるプロバイダー |
設定オプション
データベース設定
from memori import Memori
memori = Memori(
database_connect="postgresql://user:pass@localhost/memori",
conscious_ingest=True, # 短期ワーキングメモリ
auto_ingest=True, # クエリごとの動的検索
openai_api_key="sk-..."
)
memori.enable()
記憶モード
コンシャスモード - 一時的なワーキングメモリ注入
memori = Memori(conscious_ingest=True)
オートモード - クエリごとの動的検索
memori = Memori(auto_ingest=True)
組み合わせモード - 両方の利点
memori = Memori(conscious_ingest=True, auto_ingest=True)
環境変数設定
from memori import Memori, ConfigManager
config = ConfigManager()
config.auto_load() # 環境変数または設定ファイルからロード
memori = Memori()
memori.enable()
環境変数を設定:
export MEMORI_DATABASE__CONNECTION_STRING="postgresql://..."
export MEMORI_AGENTS__OPENAI_API_KEY="sk-..."
export MEMORI_MEMORY__NAMESPACE="production"
仕組み
MemoriはLLM呼び出しをインターセプトすることで機能します。呼び出し前にコンテキストを注入し、呼び出し後に情報を記録します。
呼び出し前 (コンテキスト注入)
- あなたのアプリケーションが
client.chat.completions.create(messages=[...])を呼び出す - Memoriが透過的にその呼び出しをインターセプト
- Retrieval Agent (オートモード) または Conscious Agent (コンシャスモード) が関連する記憶を検索
- LLMプロバイダーに送信する前に、コンテキストをメッセージに注入
呼び出し後 (記録)
- LLMプロバイダーが応答を返す
- Memory Agentがエンティティを抽出し、分類(事実、好み、スキル、ルール、コンテキスト)
- 会話は全文検索インデックス付きでSQLデータベースに保存
- 元の応答があなたのアプリケーションに返される
バックグラウンド処理 (6時間ごと)
- Conscious Agentがパターンを分析し、重要な記憶を長期記憶から短期記憶に昇格させる
ユースケース例
基本的な例
- 基本的な使い方 - シンプルな記憶設定
- パーソナルアシスタント - 記憶を持つAIアシスタント
- 記憶検索 - 関数呼び出し
- 高度な設定 - 本番環境設定
マルチユーザーシナリオ
- シンプルなマルチユーザー - ユーザー記憶の分離
- FastAPIマルチユーザーアプリケーション - Swagger付きREST API
フレームワーク統合例
Memoriは、複数の人気AIフレームワークとの統合例を提供しています。
- Agno
- AWS Strands
- Azure AI Foundry
- AutoGen
- CamelAI
- CrewAI
- Digital Ocean AI
- LangChain
- OpenAI Agent
- Swarms
オンラインデモ
- 個人日記アシスタント - オンラインで試せるStreamlitアプリケーション
- 研究アシスタントエージェント - オンラインで試せる研究ツール
技術アーキテクチャ
Memoriは階層型アーキテクチャ設計を採用しています。
- インターセプト層 - LLM API呼び出しを透過的にインターセプト
- 検索層 - 関連する記憶コンテキストをスマートに検索
- ストレージ層 - SQLデータベースによる永続的な保存
- 分析層 - バックグラウンドでの分析と記憶の最適化
詳細なアーキテクチャドキュメントについては、公式ドキュメントの architecture.md を参照してください。
エンタープライズ版 (Memori v3)
Memoriはv3バージョンの小規模プライベートテストグループを募集しています。詳細を知り、エンタープライズAIの新しい記憶アーキテクチャに早期アクセスしたい場合は、テストプログラムに参加できます。
コミュニティとサポート
- ドキュメント: https://memorilabs.ai/docs
- Discordコミュニティ: https://discord.gg/abD4eGym6v
- GitHub Issues: https://github.com/GibsonAI/memori/issues
貢献ガイドライン
Memoriはコミュニティからの貢献を歓迎します!プロジェクトは、以下の詳細な貢献ガイドラインを提供しています。
- 開発環境のセットアップ
- コードスタイルと標準
- プルリクエストの提出
- 問題の報告
オープンソースライセンス
Apache 2.0 ライセンス
まとめ
Memoriは、強力で使いやすいAI記憶ソリューションであり、特に以下の用途に適しています。
- LLMアプリケーションに記憶機能を追加したい開発者
- マルチセッションAIアシスタントを構築するチーム
- ベクトルデータベースのコストを削減したいプロジェクト
- AI記憶データを完全に管理したい企業
SQLネイティブなストレージと1行コードでの統合という設計思想により、MemoriはAIアプリケーションに記憶機能を追加する敷居とコストを大幅に削減します。