Docs Menu
Docs Home
/
Atlas
/

MongoDB AtlasでAIエージェントを構築

MongoDB Atlas は、 AIエージェントを構築するためのいくつかの機能を提供します。ベクトルとドキュメントデータベースの両方として、Atlas はエージェント的 RG のさまざまな検索方法、また、短期間および長期のエージェントメモリ用に同じデータベースにエージェントインタラクションを保存します。

はじめる

生成系AIのコンテキストでは、 AIエージェントとは通常、 LM などのAIモデルと事前定義されたツールのセットを組み合わせて、タスクを自律的にまたは半自動的に完了できるシステムを指します。

AIエージェントは、ツールを使用してコンテキストを収集し、外部システムと交流し、アクションを実行できます。独自の実行フロー(プラン作成)を定義し、以前のインタラクションを記憶して応答(メモリ)を通知できます。したがって、 AIエージェントは、理由付け、計画、決定権を必要とする複雑なタスクに最適です。

MongoDB Atlasを使用した単一エージェント アーキテクチャを示す図
クリックして拡大します

AIエージェントには通常、次のコンポーネントの組み合わせが含まれます。

知覚

エージェントの入力。テキスト入力はAIエージェントの最も一般的な認識メカニズムですが、言語、画像、またはマルチモーダル データにすることもできます。

計画

エージェントが次の操作を決定する方法。このコンポーネントには通常、LDM とプロンプトが含まれ、フィードバックループや考えの連鎖や reAction などのさまざまな プロンプトエンジニアリング メソッド を使用して、複雑なタスクを実行する際に LM の理由を支援します。

AIエージェントは、決定権を持つ単一の LM 、複数のプロンプトを持つ LM、複数の LM が連携する、またはこれらのアプローチの任意の組み合わせで構成できます。

ツール

エージェントがタスクのコンテキストを収集する方法。ツールを使用すると、エージェントは外部システムと交流し、ベクトル検索、ウェブ検索、または他のサービスから API を呼び出すなどのアクションを実行できます。

メモリ

エージェントの相互作用を保存するためのシステムで、エージェントは過去の経験から学び、応答に情報を与えられます。メモリは、短期間(現在のセッション用)または長期(セッション全体で永続的)の場合があります。

注意

AIエージェントは、設計パターン、機能、複雑度が異なります。マルチエージェント システムを含むその他のエージェントアーキテクチャについては、「 エージェント デザイン パターン 」を参照してください。

MongoDB Atlas は、 AIエージェントを構築するための次のコンポーネントをサポートしています。

  • ツール : MongoDB Search 機能をエージェントが関連情報を取得し、エージェント RG を実装するツールとして活用します。

  • メモリ :エージェントのインタラクションを短期間メモリと長期メモリの両方でMongoDBコレクションに保存します。

標準のMongoDBクエリに加えて、Atlas はエージェントのツールとして実装できるいくつかの検索機能を提供します。

  • Atlas ベクトル検索 :ベクトル検索を実行して、セマンティック意味と類似性に基づいて関連するコンテキストを検索します。詳細については、 Atlas ベクトル検索 の概要 を参照してください。

  • Atlas Search : キーワード一致と関連性スコアリングに基づいて関連コンテキストを取得するには、全文検索を実行します。詳しくは、「 Atlas Search の概要 」を参照してください。

  • ハイブリッド検索 : Atlas ベクトル検索と Atlas Search を組み合わせて、両方のアプローチの長さを活用します。詳しくは、「 ハイブリッド検索の実行方法 」を参照してください。

ツールは、手動で、またはツールの作成と呼び出しのための組み込みの抽象化を提供する LgChallenge や LingGraph などのフレームワークを使用して定義できます。

ツールは、エージェントが特定のタスクを実行するために呼び出すことができる関数として定義されます。例、次の構文は、ベクトル検索クエリーを実行するツールを定義する方法を示しています。

def vector_search_tool(query: str) -> str:
pipeline = [
{
"$vectorSearch": {
# Vector search query pipeline...
}
}
]
results = collection.aggregate(pipeline)
array_of_results = []
for doc in results:
array_of_results.append(doc)
return array_of_results

ツール呼び出しは、エージェントがツールを実行するために使用するものです。エージェント内でツール呼び出しを処理する方法を定義することも、フレームワークを使用してこれを処理することもできます。これらは通常、ツール名とツールに渡すその他の引数を含むJSONオブジェクトとして定義されるため、エージェントは適切なパラメーターを使用してツールを呼び出すことができます。例、次の構文は、エージェントが vector_search_tool を呼び出す方法を示しています。

{
"tool": "vector_search_tool",
"args": { "query": "What is MongoDB?" },
"id": "call_H5TttXb423JfoulF1qVfPN3m"
}

Atlas をベクトルデータベースとして使用することで、 エージェント Atlas を実装する取得ツールを作成できます。これは、 AIエージェントを通じて取得と生成プロセスを動的にオーケストレーションできる RG の高度な形式です。

MongoDB Atlasを使用したエージェント的 RG アーキテクチャの図
クリックして拡大します

このアプローチにより、より複雑なワークフローとユーザー インタラクションが可能になります。例、セマンティック検索には Atlas ベクトル検索を使用し、全文検索には Atlas Search を使用するなど、タスクに基づいて最適な取得ツールを決定するようにAIエージェントを構成できます。また、エージェントの取得機能をさらにカスタマイズするために、さまざまなコレクションに対してさまざまな取得ツールを定義することもできます。

Atlas はドキュメントデータベースでもあるため、 MongoDBコレクションにインタラクションを保存することでエージェントのメモリを実装できます。その後、エージェントは必要に応じてこのコレクションをクエリまたはアップデートできます。 MongoDBでエージェントメモリを実装するにはいくつかの方法があります。

  • session_id短期間メモリを使用する場合は、インタラクションを保存するときに特定のフィールドを識別し、同じIDを持つインタラクションをクエリして、コンテキストとしてエージェントに渡すことができます。

  • 長期メモリの場合、LDM を使用していくつかのインタラクションを処理してユーザーの優先順位や重要なコンテキストなどの関連情報を抽出し、その情報を別のコレクションに保存し、必要な場合にエージェントがクエリできるようにできます。

  • やり取り履歴をより効率的かつ複雑に取得できる堅牢なメモリ管理システムを構築するには、Atlas Search を活用して保存されたインタラクションのインデックスとクエリを実行します。

短期間のメモリを保存するコレクション内のドキュメントは、次のようになります。

{
"session_id": "123",
"user_id": "jane_doe",
"interactions":
[
{
"role": "user",
"content": "What is MongoDB?",
"timestamp": "2025-01-01T12:00:00Z"
},
{
"role": "assistant",
"content": "MongoDB is the world's leading modern database.",
"timestamp": "2025-01-01T12:00:05Z"
}
]
}

長期メモリを保存するコレクション内のドキュメントは、次のようになります。

{
"user_id": "jane_doe",
"last_updated": "2025-05-22T09:15:00Z",
"preferences": {
"conversation_tone": "casual",
"custom_instructions": [
"I prefer concise answers."
],
},
"facts": [
{
"interests": ["AI", "MongoDB"],
}
]
}

次のフレームワークも、 MongoDBのエージェントメモリの直接抽象化を提供します。

フレームワーク
主な機能

LgChuin

  • MongoDBChatMessageHistory: チャット メッセージ履歴コンポーネント

  • MongoDBAtlasSemanticCache: セマンティックキャッシュコンポーネント

詳しくは、 チュートリアルを参照してください。

LangGraph

  • MongoDBSaver: 永続化に使用できるチェックポイント

詳しくは、 LongGraph LgGraph.js を参照してください。

次のチュートリアルでは、エージェントフレームワークなしで、Atlas を使用してエージェント用 RAG とメモリ用にAIエージェントを構築する方法を説明します。

このチュートリアルの実行可能なバージョンを Python エディタとして作業します。

Atlas の サンプル データ セット からの映画データを含むコレクションを使用します。

  • Atlas アカウントで、MongoDB バージョン 6.0.11 または7.0.2 以降(RCs を含む)のクラスターを実行している。IP アドレスが Atlas プロジェクトのアクセスリストに含まれていることを確認してください。詳細については、クラスターの作成を参照してください。

  • 投票AI APIキー。

  • OpenAI APIキー。

注意

このチュートリアルでは、Voyage AIと OpenAI のモデルを使用していますが、コードを変更して、お好みのモデルを使用できます。

このAIエージェントは、カスタムデータソースに関する質問に答え、計算を実行するために使用できます。また、以前の相互作用を記憶して、応答を通知することもできます。次のコンポーネントを使用します。

  • 認識 : テキスト入力。

  • 計画 :タスクを実行するための LM とさまざまなプロンプト。

  • ツール :ベクトル検索ツールと計算ツール。

  • メモリ : インタラクションをMongoDBコレクションに保存します。

1
  1. プロジェクトを初期化し、依存関係をインストールします。

    新しいプロジェクトディレクトリを作成し、必要な依存関係をインストールします。

    mkdir mongodb-ai-agent
    cd mongodb-ai-agent
    pip install --quiet --upgrade pymongo voyageai openai langchain langchain_mongodb langchain_community

    注意

    プロジェクトでは、次の構造を使用します。

    mongodb-ai-agent
    ├── config.py
    ├── ingest-data.py
    ├── tools.py
    ├── memory.py
    ├── planning.py
    ├── main.py
  2. 環境を構成します。

    プロジェクトに config.py という名前のファイルを作成します。このファイルには、エージェント、 Atlas接続文字列、 MongoDBデータベースとコレクション名のAPIキーが含まれます。

2

ingest-data.pyプロジェクトに という名前のファイルを作成します。このスクリプトは、 埋め込みモデルを使用して、最近のMongoDB収益レポートを含むサンプルPDF を Atlasvoyage-3-large のコレクションに取り込みます。

詳細については、「 取り込み 」を参照してください。

3

プロジェクトに tools.py という名前のファイルを作成します。このファイルは、エージェントが質問に答えるために使用できるツールを定義します。この例では、次のツールを定義しています。

  • vector_search_tool:ベクトル検索クエリーを実行して、コレクションから関連するドキュメントを検索します。

  • calculator_tool: 基本的な数学演算に eval() 関数を使用します。

4

プロジェクトに memory.py という名前のファイルを作成します。このファイルは、エージェントがインタラクションを保存するために使用するシステムを定義します。この例では、次の関数を定義して短期間メモリを実装します。

  • store_chat_message: インタラクションに関する情報をMongoDBコレクションに保存します。

  • retrieve_session_history: session_idフィールドを使用して特定のセッションのすべてのインタラクションを取得します。

5

プロジェクトに planning.py という名前のファイルを作成します。このファイルには、エージェントの実行フローを決定するためのさまざまなプロンプトと LM 呼び出しが含まれます。この例では、次の関数を定義しています。

  • tool_selector: LM がタスクに適したツールを選択する方法を決定します。

  • generate_answer: ツールを使用し、LVM を呼び出し、結果を処理することで、エージェントの実行フローを調整します。

  • get_llm_response: LM 応答生成用のヘルパー関数。

6

最後に、プロジェクトに main.py という名前のファイルを作成します。このファイルはエージェントを実行し、そのエージェントを操作できるようにします。

プロジェクトを保存し、次の コマンドを実行します。エージェントを実行する場合

  • まだ行っていない場合は、エージェントにサンプルデータを取り込むように指示します。

  • セッションIDを入力して、新しいセッションを開始するか、既存のセッションを続行します。

  • 質問する。エージェントは、ツール、以前のインタラクション、および計画フェーズで定義されたプロンプトに基づいて応答を生成します。サンプルインタラクションについては、 出力の例を参照してください。

python main.py
Ingest sample data? (y/n): y
Successfully split PDF into 104 chunks.
Generating embeddings and ingesting documents...
Inserted 104 documents into the collection.
Search index 'vector_index' creation initiated.
Polling to check if the index is ready. This may take up to a minute.
vector_index is ready for querying.
Enter a session ID: 123
Enter your query (or type 'quit' to exit): What was MongoDB's latest acquisition?
Tool selected: vector_search_tool
Answer:
MongoDB's latest acquisition was Voyage AI.
Enter your query (or type 'quit' to exit): What do they do?
Tool selected: vector_search_tool
Answer:
Voyage AI is a company that specializes in state-of-the-art embedding and reranking models designed to power next-generation AI applications. These technologies help organizations build more advanced and trustworthy AI capabilities.
Enter your query (or type 'quit' to exit): What is 123+456?
Tool selected: calculator_tool
Answer:
579

Tip

クラスターの データベースに移動し、 または コレクションを選択すると、Atlas UIで埋め込みとインタラクションを表示できます。ai_agent_dbembeddingschat_history

7

基本的なAIエージェントが用意できたら、次の方法で開発を続けることができます。

MongoDBを使用してAIエージェントを構築する方法の詳細なチュートリアルについては、次の表を参照してください。

戻る

検索拡張生成(RAG)

項目一覧