AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB Mem0 統合のスタート

MongoDB を Mem0 と統合することで、会話を通じて持続する AI エージェントの長期記憶を構成できます。このチュートリアルでは、Mem0 を MongoDB をベクトルストアとして使用するように設定し、そしてメモリ拡張アシスタントをビルドします。このチュートリアルでは、次のタスクを実行します。

  1. 環境を設定します。

  2. MongoDB を Mem0 ベクトルストアとして使用します。

  3. メモリ ドキュメントを保存するおよび検索する。

  4. 検索するメモリーに基づいて応答をパーソナライズするアシスタントをビルドする。

Mem0 は、 AIエージェントと 支援のオープンソース メモリレイヤーです。すべてのリクエストでやり取り履歴全体を LM に渡す代わりに、Mem0 はやり取りから個別の情報を抽出し、各ファセットをドキュメントとして保存し、クエリ時に最も関連性の高いファセットのみを検索します。

Mem0 を MongoDB をベクトルストアとして使用するように設定するとき、Mem0 は、これらのメモリドキュメントを MongoDB コレクション内に持続化します。これは意味検索のために MongoDB ベクトル検索を、フルテキストキーワード検索のために MongoDB Search を使用します。Mem0 は、コレクションに初めて接続したときに、両方のインデックスを作成します。

このチュートリアルを完了するには、次のリソースが必要です。

1

ターミナルで次のコマンドを実行して、mem0-mongodb-project という名前の新しいディレクトリを作成し、必要な依存関係をインストールします。

mkdir mem0-mongodb-project
cd mem0-mongodb-project
pip install mem0ai pymongo openai python-dotenv

Mem0 には PyMongo v4.13.2 以降が必要です。上記のコマンドは PyMongo の最新バージョンをインストールします。

2

お使いの mem0-mongodb-project ディレクトリ内で、.env ファイルを作成し、次のコードを追加します。

OPENAI_API_KEY="<openai-api-key>"
MONGODB_URI="<connection-string>"

<connection-string> を Atlas クラスターまたはローカル Atlas 配置の接続文字列に置き換えます。

接続stringには、次の形式を使用する必要があります。

mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net

重要:接続文字列にデータベースユーザーの認証情報が含まれていることを確認します。接続文字列の検索方法の詳細については、クライアント ライブラリ経由でクラスターに接続する を参照してください。

3

あなたの mem0-mongodb-project ディレクトリ内で、main.py という名前のファイルを作成してください。環境変数を読み込むには、次のコードをこのファイルに追加します。

from mem0 import Memory
from openai import OpenAI
from dotenv import load_dotenv
import os
load_dotenv()

今後のステップでは、Mem0 を構成し、アシスタントをビルドするために、このファイルにコードを追加します。

このセクションでは、Mem0 を MongoDB をベクターストアとして使用するように設定します。そして、Mem0 が会話から抽出したメモリを保存し、セマンティック検索を使用してそれらを検索します。

1

MongoDB を Mem0 ベクトル保存先として使用するには、main.py ファイルに次のコードを追加します。

config = {
"llm": {
"provider": "openai",
"config": {
"model": "gpt-4o-mini",
"temperature": 0.1,
"max_tokens": 2000,
},
},
"embedder": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
"embedding_dims": 1536,
},
},
"vector_store": {
"provider": "mongodb",
"config": {
"mongo_uri": os.environ["MONGODB_URI"],
"db_name": "mem0_db",
"collection_name": "agent_memory",
"embedding_model_dims": 1536,
},
},
}
m = Memory.from_config(config)

このコードは、config ディクショナリに次のキーを設定します。

  • llm: gpt-4o-mini を、会話から事実を抽出するモデルとして指定します

  • embedder: text-embedding-3-small を埋め込み生成モデルとして指定します

  • vector_store: MongoDB をベクトルストアとして設定する

インデックスの構築には約 1 分かかります。構築中、インデックスは最初の同期状態になります。構築が完了したら、コレクション内のデータのクエリを開始できます。

2

ユーザーの転居に関する会話からメモリを抽出して保存するために、次のコードを追加します。

messages = [
{"role": "user", "content": "I'm moving to Berlin next month."},
{"role": "assistant", "content": "I'll remember that you're relocating to Berlin."},
]
result = m.add(messages, user_id="alice")
print(result)

会話データを add() メソッドに渡すと、Mem0 は LLM を使用して会話から事実を抽出し、各事実をコレクションに個別のメモリドキュメントとして書き込み (write)ます。

3

Mem0 が同じユーザーの記憶プロフィールに追加する 2 回目の会話からの記憶を保存するために、次のコードを追加します。

messages = [
{"role": "user", "content": "I prefer concise answers and I use Python daily."},
{"role": "assistant", "content": "Noted. I'll keep my responses brief and Python-focused."},
]
result = m.add(messages, user_id="alice")
print(result)
4

ユーザーの移動に関するクエリに答えるメモリ データを検索するには、次のコードを main.py ファイルに追加します。

print("\nWaiting for the MongoDB Vector Search index to finish building...")
time.sleep(60)
results = m.search(
query="When is Alice moving?",
filters={"user_id": "alice"},
top_k=5,
)
for mem in results["results"]:
print(mem["memory"], "- score:", mem["score"])

クエリを実行する前に、MongoDB ベクトル検索インデックスの構築が完了するまで、コードは 60 秒待機します。

5

セマンティック検索を実行せずにユーザーの完全なメモリー履歴を取得するには、ユーザーの main.py ファイルに次のコードを追加します。

all_memories = m.get_all(filters={"user_id": "alice"})
for mem in all_memories["results"]:
print(mem["id"], mem["memory"])

Tip

保存されたメモリドキュメントを検査するには、Atlas UI で mem0_db.agent_memory コレクションを参照します。学ぶには、コレクションの表示を参照してください。

このセクションでは、メモリストレージと取り出しを組み合わせて、応答をパーソナライズするアシスタントを作成する方法を説明します。アシスタントが応答する前に、現在のメッセージに最も関連の記憶を検索する、それらをシステム プロンプトに追加します。応答後、新しい会話のターンを保存します。それにより、交換ごとに記憶が増えていきます。

1

main.py ファイルに、メッセージに最も関連の深い記憶を検索し、その記憶をシステム プロンプトに追加する関数を定義するために、次のコードを追加します。

openai_client = OpenAI()
USER_ID = "alice"
def build_system_prompt(user_message):
# Retrieve the memories that are most relevant to the message
relevant = m.search(
query=user_message,
filters={"user_id": USER_ID},
top_k=5,
)
memory_text = "\n".join(f"- {mem['memory']}" for mem in relevant["results"])
# Add the retrieved memories to the system prompt
system_prompt = "You are a helpful personal assistant."
if memory_text:
system_prompt += (
" Use the following facts to personalize your response:\n"
f"{memory_text}"
)
return system_prompt
2

次のコードを追加して、パーソナライズされた応答を生成し、新しい会話のターンをメモリとして保存する関数を定義します。

def chat(user_message):
# Generate a response
response = openai_client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": build_system_prompt(user_message)},
{"role": "user", "content": user_message},
],
)
assistant_message = response.choices[0].message.content
# Store the new conversation turn as memories
m.add(
[
{"role": "user", "content": user_message},
{"role": "assistant", "content": assistant_message},
],
user_id=USER_ID,
)
return assistant_message
print(chat("Can you recommend a programming meetup in my city?"))

アシスタントはプロンプトを構築する前に、Alice のロケーションと言語の設定を MongoDB から検索したため、ベルリンでの Python のミートアップをお勧めします。

main.py ファイルを実行するには、mem0-mongodb-project ディレクトリから次のコマンドを実行します。

python main.py

コマンドが正常に実行されると、出力は次のようになります。

# Output from the first add() method that stores relocation data
{'results': [{'id': '...', 'memory': 'User is moving to Berlin around September 2026.', 'event': 'ADD'}]}
# Output from the second add() method that stores user preferences
{'results': [{'id': '...', 'memory': 'Prefers concise answers', 'event': 'ADD'}, {'id': '...', 'memory': 'Uses Python daily', 'event': 'ADD'}]}
Waiting for the MongoDB Vector Search index to finish building...
# Output from the search() method that retrieves the relocation memory
User is moving to Berlin in September 2026. - score: 0.38553877995545677User is moving to Berlin around September 2026. - score: 0.7043201923370361
# Output from the get_all() method that returns the full memory history
<id> User is moving to Berlin around September 2026.
<id> Prefers concise answers
<id> Uses Python daily
# Output from the chat() method that asks the assistant about programming meetups
Since you're moving to Berlin around September 25, 2026, I recommend checking platforms
like Meetup.com or Eventbrite closer to your move for local Python programming meetups.
You can also follow local tech communities on social media for updates on events.

Mem0 の構成キーおよび全ての Memory メソッドについてさらに詳しく知るには、MongoDB を Mem0 と統合する。を参照してください。

Mem がコレクションに作成するインデックスの詳細については、0 「 MongoDB ベクトル検索インデックスの作成 」と「 MongoDB Search インデックスの管理 」を参照してください。