Docs Menu
Docs Home
/ /

MongoDB와 LangGraph 통합

MongoDB LangGraph 와 통합하여 AI 에이전트 및 고급 RAG 애플리케이션을 빌드 할 수 있습니다. 이 페이지에서는 MongoDB LangGraph 통합에 대한 개요와 MongoDB 사용하여 LangGraph 워크플로에서 에이전트 상태 지속성, 메모리 및 검색을 수행하는 방법을 설명합니다.

이 페이지의 모든 구성 요소를 사용하는 샘플 AI 에이전트 빌드 하려면 튜토리얼을 참조하세요.

참고

JavaScript 통합에 대한 정보는 LangGraph JS/TS를 참조하세요.

LangGraph는 LangChain 에코시스템 내에서 AI 에이전트와 복잡한 다중 에이전트 워크플로를 구축하기 위해 설계된 전문 프레임워크입니다. 그래프는 LangGraph의 핵심 구성 요소로, 에이전트의 워크플로를 나타냅니다. MongoDB LangGraph 통합을 통해 다음 기능을 사용할 수 있습니다.

  • MongoDB LangGraph 체크포인터: 단기 기억을 제공하는 MongoDB에 LangGraph 에이전트의 상태 유지할 수 있습니다.

  • MongoDB LangGraph 스토어: 장기 메모리를 제공하는 MongoDB 컬렉션에 LangGraph 에이전트에 대한 중요한 메모리를 저장하고 조회할 수 있습니다.

  • 검색 도구: MongoDB LangChain 통합을 사용하면 LangGraph 워크플로에 대한 검색 도구를 신속하게 만들 수 있습니다.

LangGraph 애플리케이션을 MongoDB 와 통합하면 검색 기능과 에이전트 메모리를 단일 데이터베이스 에 통합하여 아키텍처를 간소화하고 운영 복잡성을 줄일 수 있습니다.

MongoDB LangGraph 체크포인터를 사용하면 에이전트의 상태 MongoDB 에 유지하여 단기 기억을 구현 수 있습니다. 이 기능 LangGraph 에이전트를 위한 휴먼 인 루프(Human-in-Loop), 메모리, 시간 여행 및 내결함성을 활성화합니다.

이 구성 요소의 패키지 설치하려면 다음을 수행합니다.

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 LangGraph 스토어를 사용하면 MongoDB 컬렉션 에 메모리를 저장 하고 조회 할 수 있으며, 이를 통해 LangGraph 에이전트의 장기 기억을 사용할 수 있습니다. 이를 통해 과거 상호 작용을 기억하고 해당 정보를 사용하여 향후 결정에 도움이 되는 에이전트를 빌드 할 수 있습니다.

이 구성 요소의 패키지 설치하려면 다음을 수행합니다.

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 (으)로 초기화되었고 쿼리 문자열이 제공된 경우 시맨틱 검색 수행합니다. 이 메서드는 쿼리 텍스트를 포함하고 MongoDB Vector Search를 사용하여 가장 관련성이 높은 항목을 찾습니다.

    예를 들면 다음과 같습니다. store.search(("docs",), query="information about AI assistants")

get(namespace, key, *, refresh_ttl)

저장 에서 단일 항목을 검색합니다. 선택적으로 액세스 시 항목의 TTL 새로 고칠 수 있습니다.

delete(namespace, key)

네임스페이스 및 키로 식별되는 단일 항목을 저장 에서 삭제합니다.

list_namespaces(*, prefix, ...)

저장 의 고유 네임스페이스를 나열합니다. 경로 접두사, 접미사 및 문서 깊이를 기준으로 필터링할 수 있습니다.

batch(ops)

단일 배치 에서 일련의 작업(GetOp, PutOp, SearchOp, DeleteOp)을 실행합니다. 읽기 작업이 먼저 수행된 다음 중복 제거된 쓰기 (write) 작업이 대량으로 애플리케이션 . abatch(ops) 는 이 메서드의 비동기 버전입니다.

ensure_index_filters(filters)

MongoDB Vector Search 인덱싱 위한 필터하다 필드 목록을 준비하는 메서드입니다.

LangChain 리트리버를 LangGraph 워크플로의 도구로 원활하게 사용하여 MongoDB 에서 관련 데이터를 조회 할 수 있습니다.

MongoDB LangChain 통합은 기본적으로 전체 텍스트 검색, 벡터 검색, 하이브리드 검색 및 상위 문서 조회를 지원합니다. 전체 검색 메서드 목록은 MongoDB LangChain 리트리버를 참조하세요.

  1. MongoDB 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()

돌아가기

Spring AI

스킬 배지 획득

'Gen AI'를 무료로 마스터하세요!

자세한 내용을 알아보세요.

이 페이지의 내용