Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
Atlas
/ /

MongoDB と LangGraph の統合

MongoDB を LingGraph と統合して、 AIエージェントと高度な RAG アプリケーションを構築できます。このページでは、 MongoDB LingGraph 統合の概要と、LgGraph ワークフローでエージェント状態の永続性、メモリ、取得にMongoDBを使用する方法について説明します。

このページに記載されているすべてのコンポーネントを使用するサンプルAIエージェントを作成するには、チュートリアルを参照してください。

注意

JavaScript 統合については、LangGraph JS/TS をご覧ください。

LangGraph は、LangChain エコシステム内でAIエージェントと複雑なマルチエージェントワークフローを構築するために設計された専用のフレームワークです。グラフは、エージェントのワークフローを表す LangGraph の主要コンポーネントです。MongoDB LangGraph 統合により、次の機能が有効になります。

  • MongoDB LingGraph チェックポイント : MongoDBで LingGraph エージェントの状態を永続化し、短期間のメモリ を提供できます。

  • MongoDB LingGraph ストア : LgGraph エージェントの重要なメモリをMongoDBコレクションに保存し、検索することができ、長期的なメモリを提供します。

  • 検索ツール: MongoDB LangChain 統合により、LangGraph ワークフロー用の検索ツールを素早く作成できます。

LgGraph アプリケーションをMongoDBと統合すると、取得機能とエージェントメモリの両方を 1 つのデータベースに統合 でき、アーキテクチャが簡素化され、運用の複雑さが軽減されます。

MongoDB LingGraph チェックポイントを使用すると、 MongoDBでエージェントの状態を永続化し、 短期間メモリを実装できます。この機能により、LingGraph エージェントのループ内、メモリ、時間移動、フォールトトレランスが可能になります。

このコンポーネントのパッケージをインストールするには:

pip install langgraph-checkpoint-mongodb
from langgraph.checkpoint.mongodb import MongoDBSaver
from pymongo import MongoClient
# Connect to your MongoDB cluster
client = MongoClient("<connection-string>")
# Initialize the MongoDB checkpointer
checkpointer = MongoDBSaver(client)
# Instantiate the graph with the checkpointer
app = graph.compile(checkpointer=checkpointer)

MongoDB LingGraph Store を使用すると、 MongoDBコレクションにメモリを保存および取得できるため、LingGraph エージェントの長期的なメモリが可能になります。これにより、過去のインタラクションを記憶し、その情報を使用して将来の決定に通知するエージェントを構築できます。

このコンポーネントのパッケージをインストールするには:

pip install langgraph-store-mongodb
from langgraph.store.mongodb import MongoDBStore, create_vector_index_config
from langchain_voyageai import VoyageAIEmbeddings
# Optional vector search index configuration for the memory collection
index_config = create_vector_index_config(
embed = VoyageAIEmbeddings(),
dims = <dimensions>,
fields = ["<field-name>"],
filters = ["<filter-field-name>", ...] # Optional list of fields that can filtered during search
# Other fields...
)
# Store memories in MongoDB collection
with MongoDBStore.from_conn_string(
conn_string=MONGODB_URI,
db_name="<database-name>",
collection_name="<collection-name>",
index_config=index_config # If specified, automatically embeds and indexes the field value
) as store:
store.put(
namespace=("user", "memories"), # Namespace for the memories
key=f"memory_{hash(content)}", # Unique identifier for each memory
value={"content": content} # Document data that contains the memory content
)
# Retrieve memories from MongoDB collection
with MongoDBStore.from_conn_string(
conn_string=MONGODB_URI,
db_name="<database-name>",
collection_name="<collection-name>",
index_config=index_config # If specified, uses vector search to retrieve memories. Otherwise, uses metadata filtering
) as store:
results = store.search(
("user", "memories"),
query="<query-text">,
limit=3
)
for result in results:
print(result.value)
# To delete memories, use store.delete(namespace, key)
# To batch operations, use store.batch(ops)
方式
説明

put(namespace, key, value, *, index)

指定された名前空間、キー、値を持つ単一のアイテムを ストアに保存します。

search(namespace_prefix, /, *, ...)

指定された namespace_prefix 内のアイテムを検索します。ベクトルインデックスが構成されている場合は、基本的なキー値フィルタリングとセマンティック クエリ検索をサポートします。

search メソッドには次のモードがあります。

  • メタデータ フィルタリング(クエリなし) : クエリ引数なしで呼び出すと、標準のMongoDBフィルタリングされたクエリが実行されます。保存された値ドキュメント内のフィールドと照合するためのフィルター辞書を指定できます。

    以下に例を挙げます。 store.search(("docs",), filter={"author": "Bob", "status": "published"})

  • セマンティック検索(クエリを使用) : ストアが index_config で初期化され、かつクエリ文字列が指定されている場合は、セマンティック検索が実行されます。メソッドはクエリテキストを埋め込み、Atlas ベクトル検索を使用して最も関連性の高い項目を検索します。

    以下に例を挙げます。 store.search(("docs",), query="information about AI assistants")

get(namespace, key, *, refresh_ttl)

ストアから 1 つのアイテムを検索します。オプションで、アクセス時にアイテムの TTL を更新できます。

delete(namespace, key)

名前空間とキーで識別される 1 つのアイテムをストアから削除します。

list_namespaces(*, prefix, ...)

ストア内の一意の名前空間を一覧表示します。パス プレフィックス、サフィックス、ドキュメント深度によるフィルタリングが可能です。

batch(ops)

操作のシーケンス(GetOpPutOpSearchOpDeleteOp)を単一のバッチするで実行します。読み取り操作が最初に実行され、その後に重複を排除した書込み操作の一括アプリケーションが行われます。abatch(ops) は、このメソッドの非同期バージョンです。

ensure_index_filters(filters)

Atlas ベクトル検索インデックス作成用のフィルター フィールドのリストを準備するメソッド。

LgChart ワークフローのツールとして Lgachein 検索をシームレスに使用して、 MongoDBから関連データを検索できます。

MongoDB LgChuin 統合は、全文検索、ベクトル検索、ハイブリッド検索、親ドキュメント検索をネイティブでサポートしています。取得メソッドの完全なリストについては、 「 MongoDB Lgachein 取得 」を参照してください。

  1. Atlas Vector Search と LangChain を使用して基本的な検索ツールを作成するには:

    from langchain.tools.retriever import create_retriever_tool
    from langchain_mongodb.vectorstores import MongoDBAtlasVectorSearch
    from langchain_voyageai import VoyageAIEmbeddings
    # Instantiate the vector store
    vector_store = MongoDBAtlasVectorSearch.from_connection_string(
    connection_string = "<connection-string>", # MongoDB cluster URI
    namespace = "<database-name>.<collection-name>", # Database and collection name
    embedding = VoyageAIEmbeddings(), # Embedding model to use
    index_name = "vector_index", # Name of the vector search index
    # Other optional parameters...
    )
    # Create a retrieval tool
    retriever = vector_store.as_retriever()
    retriever_tool = create_retriever_tool(
    retriever,
    "vector_search_retriever", # Tool name
    "Retrieve relevant documents from the collection" # Tool description
    )
  2. LangGraph にツールをノードとして追加するには、次のように行います。

    1. ツールをノードに変換します。

    2. ノードをグラフに追加します。

    from langgraph.graph import StateGraph
    from langgraph.prebuilt import ToolNode
    # Define the graph
    workflow = StateGraph()
    # Convert the retriever tool into a node
    retriever_node = ToolNode([retriever_tool])
    # Add the tool as a node in the graph
    workflow.add_node("vector_search_retriever", retriever_node)
    graph = workflow.compile()

戻る

整数AI

ルール バッジを取得する

「生成AI」を無料でマスターします。

詳細

項目一覧