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 チェックポイントを使用すると、 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 ストア(長期メモリ)
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)
Parameter | 必要性 | 説明 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 必須 | MongoDBクラスターまたはローカル Atlas 配置の接続文字列を指定します。 | |||||||||
| 必須 | 使用するデータベースの名前。存在しない場合は作成されます。デフォルトは "checkpointing_db" です。 | |||||||||
| 必須 | 使用するコレクションの名前。存在しない場合は作成されます。デフォルトは「永続的ストア」です。 | |||||||||
| 任意 | ストアの TTL(Time To Live)構成。これにより、ストア内のドキュメントの自動的な期限切れが構成されます。(例: )。
| |||||||||
| 任意 | ベクトル検索インデックス構成。(例: )。
|
メソッド
方式 | 説明 |
---|---|
| 指定された名前空間、キー、値を持つ単一のアイテムを ストアに保存します。 |
| 指定された
|
| ストアから 1 つのアイテムを検索します。オプションで、アクセス時にアイテムの TTL を更新できます。 |
| 名前空間とキーで識別される 1 つのアイテムをストアから削除します。 |
| ストア内の一意の名前空間を一覧表示します。パス プレフィックス、サフィックス、ドキュメント深度によるフィルタリングが可能です。 |
| 操作のシーケンス( |
| Atlas ベクトル検索インデックス作成用のフィルター フィールドのリストを準備するメソッド。 |
検索ツール
LgChart ワークフローのツールとして Lgachein 検索をシームレスに使用して、 MongoDBから関連データを検索できます。
MongoDB LgChuin 統合は、全文検索、ベクトル検索、ハイブリッド検索、親ドキュメント検索をネイティブでサポートしています。取得メソッドの完全なリストについては、 「 MongoDB Lgachein 取得 」を参照してください。
使用法
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 ) LangGraph にツールをノードとして追加するには、次のように行います。
ツールをノードに変換します。
ノードをグラフに追加します。
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()