AIの知性を飛躍させる「MemoriLabs/Memori」入門:記憶の保存と検索のアーキテクチャ


AIの知性を飛躍させる「MemoriLabs/Memori」入門:記憶の保存と検索のアーキテクチャ

MemoriLabs/Memori

2025-12-03

ご提示いただいたオープンソースの記憶エンジン「MemoriLabs/Memori」について、ソフトウェアエンジニアの視点から、その有用性、導入方法、そしてサンプルコードの例を、コントのお化け屋敷のように面白おかしく、しかし技術的に分かりやすく解説しますね!

「MemoriLabs/Memori」は、LLM(大規模言語モデル)やAIエージェントに、まるで人間のような「記憶」を与えるためのオープンソースのエンジンです。

普通のLLMは、セッションが終わるとすぐに会話の内容を忘れてしまう、まるで「1分前のことも忘れる幽霊」のようなものです。この「記憶喪失」を克服し、過去の経験や知識を学習・活用できるようにするのがMemoriの役割です。

これはまさに、私たちが作るAIアプリケーションの「ユーザー体験(UX)」と「知性」を劇的に向上させるための、強力なツールです。

メモリの機能 お化け屋敷コントでの状況 技術的なメリット(エンジニア視点)
長期記憶 (Long-Term Memory)ユーザー
「前にカボチャのランプが好きって言ったよな?」
幽霊
「...え?誰だっけ?」
Memori
「お客様は前回、オレンジと黒のジャック・オ・ランタンを熱望されていました!」
文脈維持とパーソナライズ: 以前の対話や行動履歴に基づいて、関連性の高い情報や好み(ユーザーの好きな色、プロジェクト名など)を次の対話に自動で組み込める。
短期記憶 (Short-Term Memory)幽霊
「あれ?さっきどこまで脅かす話したっけ?」
Memori
「今、3番目の『うらめしや』を言いかけたところです!」
連続したタスク処理: 複雑な一連の指示(例:データベース検索 → 結果を加工 → レポート作成)の中間ステップを忘れずに保持し、エージェントの処理能力を向上させる。
反省・学習 (Reflection & Learning)幽霊
「どうやったらもっと怖がってくれるかな?」
Memori
「前回の大きな音よりも、囁き声の方が効果的でしたよ。」
エージェントの自己改善: 過去の対話やタスクの結果を分析し、**「メタ記憶」**として知識を抽象化・構造化することで、次の行動の品質を向上させる。

MemoriはPythonベースで、非常にシンプルに導入できます。まるでアプリに記憶の魂を吹き込むようなものです。

まずは、Pythonの環境にMemoriライブラリをインストールします。

# pipで図書館から記憶の巻物を手に入れる
pip install Memori

Memoriの核となるのは、情報を保持し、検索し、LLM(あなたのAI)に提供するサイクルです。

記憶の格納 (Store) エージェントが何かを経験したり、ユーザーから情報を聞いたりしたら、それをMemoriに「思い出」として保存します。

記憶の検索 (Retrieve) ユーザーからの新しい質問が来たら、Memoriに保存されている「思い出」の中から、その質問に関連性の高いものを検索します。

LLMへの提供 (Context Injection) 検索した関連情報(コンテキスト)を、新しいユーザーの入力と一緒にLLMに渡します。

賢い応答 (Intelligent Response)
LLMは渡されたコンテキストを使って、過去を踏まえた賢い返答を生成します。

ここでは、Memoriを使って、以前の会話を覚えているシンプルなチャットボットを作成する例を示します。

# おまじないのようにライブラリをインポート
from Memori import Memori

# 1. 記憶エンジンの初期化
# 仮のデータストアとしてインメモリを使用(実際のプロジェクトではDBを使う)
memori_agent = Memori(
    agent_id="ghost_assistant_001",
    llm_model_name="openai/gpt-3.5-turbo", # 使うLLMモデルを指定
    llm_api_key="YOUR_API_KEY", # APIキー
)

# 2. 最初の対話と記憶の格納
def first_interaction():
    print("--- 最初の日の会話 ---")
    
    # ユーザーからのインプット
    user_input = "私の名前はアキラです。週末はいつもホラー映画を見ています。"
    # LLMが応答を生成
    llm_response = f"アキラさん、ホラー映画がお好きなんですね!それは素晴らしいです。"
    
    #  記憶をMemoriに保存
    memori_agent.store(
        input=user_input, 
        output=llm_response, 
        tags={"topic": "introduction"}
    )
    print(f" Memoriに記憶を保存しました: {user_input}")

# 3. 日を置いての対話と記憶の活用
def second_interaction():
    print("\n--- 翌日の会話(記憶の呼び出し) ---")
    
    # ユーザーからの質問
    user_query = "私が好きな映画のジャンルは何だったっけ?"
    
    #  Memoriが過去の関連情報を検索(これが「記憶」の正体)
    # 検索結果がLLMに渡すコンテキストとなる
    context = memori_agent.retrieve(user_query)
    
    print(f" Memoriが呼び出した過去の記憶:\n{context}")
    
    # LLMへのプロンプト構成
    # 検索されたコンテキストをプロンプトに組み込むのが鍵!
    prompt = f"以下の過去の会話(コンテキスト)に基づき、ユーザーの質問に答えてください。\n\nコンテキスト:\n{context}\n\nユーザーの質問: {user_query}"
    
    # 応答生成 (※ここではLLMのAPI呼び出しを省略し、手動で賢い応答をシミュレート)
    final_response = "あなたの過去の会話から、**ホラー映画**がお好きだと記憶しています。週末が楽しみですね!"
    
    print(f"\n エージェントの返答:\n{final_response}")


# 実行!
first_interaction()
second_interaction()
--- 最初の日の会話 ---
 Memoriに記憶を保存しました: 私の名前はアキラです。週末はいつもホラー映画を見ています。

--- 翌日の会話(記憶の呼び出し) ---
 Memoriが呼び出した過去の記憶:
[...以前の対話や、その対話から抽出された重要な事実がリストアップされる...]
- ユーザーの名前はアキラ
- ユーザーは週末にホラー映画を見るのが好き
- タグ: introduction

 エージェントの返答:
あなたの過去の会話から、**ホラー映画**がお好きだと記憶しています。週末が楽しみですね!

Memoriを使うことで、あなたのAIエージェントは、単なる「コントの幽霊」から、「過去の縁を覚えている、賢い執事のような幽霊」へと進化を遂げるでしょう!


MemoriLabs/Memori




【ガンダムコントで解説】AIエージェントに「長期記憶」を持たせる!GibsonAI/Memori 導入と活用法

Memoriは、LLM(大規模言語モデル)やAIエージェントに、人間のように「記憶」を持たせ、文脈(コンテキスト)を理解させるためのオープンソースのメモリーエンジンです。これはまるで、ホワイトベース隊が「ザビ家の陰謀」や「アムロのわがまま」といった過去の経験や人間関係を、戦闘のたびにいちいち思い出さなくても、自然に判断を下せるようになるのと同じです!


AIアプリケーション開発のためのレシピブック

今日は「Haystack」という、AIの世界で最近話題の新しいカクテルを紹介させてください。これ、ただのAIじゃなくて、色々なAIの材料を組み合わせて、お客様の好みにぴったりの一杯を作り出すためのツールなんです。ソフトウェアエンジニアの視点から言えば、Haystackは例えるなら「AIアプリケーション開発のためのシェイカーとレシピブック」です。


ソフトウェアエンジニアのためのAIエージェント入門:自律的なデバッグと実行のループを設計する

「本当のAIエージェント(Claude Codeのようなもの)」をどう作るのか、実際に手を動かした時のワクワク感を込めて解説します!これまで僕たちが使ってきたチャットAIは、言わば「アドバイスをくれる同僚」でした。でも、Claude CodeのようなAIエージェントは違います。彼は「実際にキーボードを叩いて、コマンドを実行し、バグを直して、テストを通す実務担当者」なんです。


22世紀のチャット運用術:AstrBotによるマルチプラットフォーム抽象化とエージェント基盤

のび太「ドラえも〜ん!LINEとかDiscordとか、いろんなSNSで動く自分専用のAI秘書を作りたいんだけど、設定が難しすぎて頭がパンクしそうだよ〜!」ドラえもん「やれやれ、のび太くんは相変わらずだね。でも安心しなよ!そんなときのために……(四次元ポケットをガサゴソ)……『AstrBot(アストラ・ボット)』!!」


現場直結!Difyで始めるプロダクションレディなエージェントワークフロー入門

(現場は薄暗い取り調べ室。刑事役の私と、容疑者役のDifyが向かい合っています)私(刑事) さて、Difyくん。キミは一体何者なんだ?「Production-ready platform for agentic workflow development」… ソフトウェアエンジニアにとって、どういう意味があるのか、正直に話してもらおうか!


PythonとNode.jsの力を解き放つ。ByteDanceのオープンソース「Deer-flow」でエージェント開発を加速させる

エンジニアの視点で見ると、これって「ただのチャットAI」とは全然別物。まるで、一歩先を読んで複雑な家事(仕事)を全部片付けてくれる、すごく有能な執筆・開発パートナーって感じかな。「どれが一番似合うかな?」って水着選びで迷うみたいに、Deer-flowの可能性を一緒に探っていこう!


データエンジニアリングの「信じる派」も「信じない派」も納得! ハンドブック活用ガイド

データエンジニアとして、このハンドブックが「信じる派」にとってどれほど強力なツールになり得るか、そして「信じない派」がなぜ懐疑的になるのか、それぞれの視点から見ていきましょう。「信じる派」のあなたなら、このハンドブックはまさに救世主だと感じるでしょう。


nautechsystems/nautilus_trader:アルゴリズム取引の未来を創る

皆さん、こんにちは。お集まりいただき、ありがとうございます。本日は、金融とテクノロジーの融合が生み出した、非常に興味深いプロジェクトについてお伝えします。ご紹介するのは、nautechsystems/nautilus_trader。これは、高性能なアルゴリズム取引プラットフォームであり、イベント駆動型のバックテスターとしても機能する、まさにソフトウェアエンジニアにとっての宝箱のような存在です。


【エンジニア向け】OpenBB Financeで始めるデータ駆動型投資の冒険

夜が更け、モニターの光だけが部屋を照らす。あなたは今日もバグと格闘し、新しい技術を追い求めている。そんなあなたの前に現れたのは、謎めいたパッケージ「OpenBB Finance」。「投資調査を、誰もが、どこでも。」その言葉が示すのは、単なるライブラリではない。それは、複雑な金融の世界を解き明かすための、強力な武器となる予感だった。


仮想通貨ボットの最前線!Hummingbotで始めるアルゴリズム取引入門

まずは、Hummingbotがどんなもんなのか、ざっくり説明しとくわな。Hummingbotいうのはな、仮想通貨の自動売買ボットを作るためのオープンソースソフトウェアのことどす。しかも、普通の自動売買と違ごうて、高頻度取引(High-Frequency Trading、HFT)にも対応できるように設計されとるんや。Pythonで書かれとって、Dockerも使えるから、環境構築も比較的楽にできるのがええところやね。