MongoDB Atlas는 다양한 산업 분야에서 AI 에이전트를 신속하게 개발할 수 있도록 지원합니다.
산업: 제조 및 모빌리티, 금융 서비스, 보험, 소매, 의료, 통신
제품: MongoDB Atlas, Atlas Vector Search, Atlas Database
파트너: LangChain, Cohere, AWS Bedrock
솔루션 개요
2025년에는 에이전트 AI 애플리케이션이 더 이상 단순한 취미 프로젝트 수준에 머무르지 않습니다. 전 세계 기업들이 AI 에이전트를 비즈니스 워크플로에 통합하기 위해 소프트웨어에 투자하고 있습니다. AI 에이전트의 가장 일반적인 사용 사례로는 연구 분석이나 코드 작성 지원입니다. LangChain의 여러 산업 분야의 1,000 명 이상의 전문가를 대상으로 한 최근 설문 조사 결과, 51% 이상이 이미 에이전트를 프로덕션에 배포했으며, 60%가 연구 및 요약 작업에 에이전트를 사용하고 있다고 나타났습니다.
그러나 연구와 요약보다 더 복잡한 작업에 AI 에이전트를 사용하고자 할 경우 특정한 과제가 발생하며, 이는 특히 대규모로 구현할 경우 두드러집니다.
복잡한 데이터 통합 및 처리: AI 에이전트는 다양한 데이터 소스와 형식(구조화된 로그, 비정형 텍스트, 센서 스트림)에 의존하기 때문에 실시간 의사 결정을 위한 데이터 통합이 어렵습니다. 에이전트가 모든 관련 데이터를 하나의 데이터베이스에 저장하여 사용할 수 있게 하면 개발 프로세스가 빨라집니다.
높은 동시성과 낮은 지연 시간: 프로덕션 환경의 에이전트는 많은 요청을 처리하고 신속하게 응답해야 하며, 이는 높은 처리량과 성능을 위해 설계되지 않은 데이터베이스를 압도할 수 있습니다. LLM 추론이 지연 시간을 추가할 수 있지만, 에이전트가 확장됨에 따라 데이터베이스 성능은 여전히 중요합니다. 프로덕션 에이전트는 병렬로 실행되며, 여러 도구를 호출하고, 최신 정보에 의존하여 결정을 내립니다. 느린 데이터베이스는 총 응답 시간을 증가시키는 병목 현상이 되어 에이전트의 실시간 기능을 감소시킵니다.
데이터 거버넌스 및 보안: 사용자 log, 센서 판독값, 개인 식별 정보(PII)와 같은 민감한 데이터는 안전하게 저장 및 접근되어야 하며, 동시에 컴플라이언스(예: GDPR, SOC 2)를 유지해야 합니다. MongoDB Atlas와 같은 안전한 데이터베이스는 클라이언트 사이드 필드 레벨 암호화, 쿼리 가능한 암호화, 그리고 광범위한 감사 기능과 같은 내장 고급 보안 기능을 제공합니다. 이러한 기능은 에이전트가 권한이 있는 데이터에만 액세스하고 추적성을 유지하도록 합니다.
그림 1은 AI 에이전트의 주요 구성 요소를 보여줍니다. 에이전트는 먼저 사람이나 자동화된 트리거를 통해 작업을 받은 후, LLM을 사용하여 사고의 흐름을 생성하거나 미리 정의된 워크플로를 따릅니다. 에이전트는 실행 중 다양한 도구와 모델을 사용하며, MongoDB Atlas와 같은 메모리 제공자로부터 데이터를 저장하고 조회합니다.
이 솔루션의 주요 목표인 에이전트 프레임워크는 유연하고 확장 가능한 기반을 제공함으로써 AI 기반 워크플로의 개발을 가속화하는 것입니다. 이 프레임워크는 고정된 도구나 기능을 제공하는 대신, 다양한 산업의 특정 사용 사례에 맞춘 지능형 에이전트를 구축하는 출발점으로 설계되었습니다.
이 솔루션을 따라 MongoDB Atlas와 LangGraph로 구동되는 툴킷을 쉽게 설정하고, 이를 사용하여 선형 워크플로를 가진 여러 에이전트를 생성할 수 있습니다. 솔루션의 단순성 덕분에 사용자는 구성 파일을 조작하여 기본 에이전트를 빠르게 빌드하는 방법을 쉽게 이해할 수 있습니다. 더 복잡한 사용 사례나 고급 에이전트를 위해 필요에 따라 새로운 도구, 노드, 조건 또는 워크플로를 추가하여 프레임워크를 확장할 수 있습니다.
적응성과 모듈성을 우선시함으로써, 에이전트 프레임워크는 개발자가 효율적일 뿐만 아니라 산업이나 프로젝트의 고유한 요구사항에 맞게 고도로 맞춤화된 AI 에이전트를 만들 수 있도록 지원합니다.
그림 1. AI 에이전트의 기본 구성 요소
참조 아키텍처
AI 잠재력 극대화
에이전틱 프레임워크는 데이터를 이해하고 LangGraph를 사용해 다단계 진단 워크플로를 실행하며, 실행 가능한 인사이트를 생성하도록 설계된 다목적 AI 기반 추천 어시스턴트입니다. CSV 파일 또는 MongoDB에서 시계열 데이터를 읽고(다양한 데이터 소스 시뮬레이션), 텍스트 임베딩을 생성하며, 벡터 검색을 수행해 유사한 과거 쿼리를 식별하는 등 여러 기술을 원활하게 통합합니다. 또한 이 프레임워크는 세션 및 실행 데이터를 지속시켜 최종적으로 진단 권장 사항을 생성합니다.
MongoDB는 에이전트 프로필, 과거 추천 기록, Time Series 데이터, 세션 로그를 저장하는 백본 역할을 하며, 진단 프로세스의 완전한 추적 가능성을 보장하고, 과거 인사이트의 효율적인 쿼리 및 재사용을 가능하게 합니다.
그림 2. 에이전트 AI 참조 아키텍처
MongoDB를 선택하는 이유
MongoDB는 에이전트형 AI를 구현하는 데 중추적인 MongoDB의 역할을 합니다. MongoDB의 유연성, 성능 및 확장성의 독특한 조합은 인공지능을 구현하는 데 이상적인 선택입니다. MongoDB document model은 구조화, 반구조화, 비구조화 데이터를 네이티브 저장 및 검색할 수 있으며, 다양한 복잡한 데이터셋을 원활하게 처리합니다. MongoDB는 AI 에이전트가 새로운 정보에 동적으로 반응하고, 실시간으로 내부 상태를 유지하며, 지속적으로 학습하고 발전할 수 있도록 지원합니다.
유연한 데이터 모델: MongoDB의 아키텍처는 데이터 저장에 있어 비할 데 없는 유연성을 제공하여 에이전트 AI 시스템에 강력한 기반을 제공합니다. 문서 모델은 시간 시리즈 로그, 에이전트 프로필, 추천 결과와 같은 다양한 데이터를 단일 통합 문서 모델로 저장할 수 있게 해줍니다. 이러한 유연성 덕분에 데이터 요구 사항이 변화할 때마다 데이터베이스 스키마를 다시 설계할 필요가 없습니다. MongoDB의 유연한 스키마는 AI 에이전트가 복잡하고 계층적인 에이전트 상태를 중첩된 문서로 저장할 수 있게 하며, 이러한 문서는 에이전트의 특성과 상호작용 컨텍스트의 변화에 따라 동적으로 적응할 수 있습니다. MongoDB는 여러 상호작용에서 복잡한 에이전트 상태를 유지하는 데 이상적인 선택입니다. 버전 관리 및 에이전트 진화 추적을 지원하며, 에이전트 컨텍스트를 끊김 없이 중단하고 재개할 수 있는 기능을 제공합니다.
벡터 검색: MongoDB Atlas는 네이티브 벡터 검색을 지원하여 벡터 임베딩에서 빠르고 효율적인 유사도 검색을 수행할 수 있습니다. 이는 현재 쿼리와 과거 데이터를 일치시키는 데 중요하며, 이를 통해 진단 정확성을 높이고 더 관련성 있는 추천을 제공합니다. 벡터 검색은 패턴 인식과 맥락 기반 검색을 지원하여 AI 에이전트의 품질과 의사 결정 능력을 크게 향상시킬 수 있습니다. 벡터 검색은 유사도 알고리즘을 사용하여 더 정밀한 결과를 제공하는 고급 정보 검색을 가능하게 하며, 이는 대규모 언어 모델(LLM)의 환각을 줄입니다. MongoDB는 의미 일치, 맥락 검색, 다차원 데이터 분석을 효율적으로 처리할 수 있으며, 이는 AI 에이전트의 의사 결정 워크플로에 필수적입니다.
확장성, 성능 및 고가용성: MongoDB는 수평으로 확장하여 대규모 실시간 데이터를 처리할 수 있습니다. MongoDB의 원활한 수평 확장성은 분산된 및 샤딩 아키텍처를 통해 AI 워크로드의 증가하는 데이터 요구 사항을 충족하는 대규모 분산 AI 애플리케이션을 지원합니다. MongoDB를 사용하면 AI 에이전트가 수평으로 확장하고, 저장소와 계산 부하를 분산하며, 고가용성을 유지하여 데이터 양이 기하급수적으로 증가하더라도 일관적인 성능을 보장합니다. MongoDB 복제본 세트는 AI 에이전트의 신뢰성과 회복 탄력성을 뒷받침하는 견고한 고가용성을 기본적으로 제공합니다.
미국 최대 암호화폐 거래소 중 하나인 Coinbase는 MongoDB를 효과적으로 활용해 700개의 MongoDB 클러스터 전반에서 플랫폼 확장성을 크게 향상시키고 예측 불가능한 시장 트래픽 급증 문제를 해결했습니다.
Time series 컬렉션: MongoDB time series 컬렉션은 대량의 데이터를 고성능과 확장성으로 효율적으로 수집하도록 설계되었습니다. 이러한 전문화된 AI 에이전트 컬렉션은 순차적인 상호작용, 학습 패턴, 상태 변화를 시간에 따라 추적하고 분석할 수 있게 하며, 이는 맥락을 유지하고 행동 패턴을 이해하며 적응형 의사결정 프로세스를 구현하는 데 필수적입니다. MongoDB는 자동 데이터 압축, 향상된 저장 효율성, 빠른 시간 기반 쿼리 응답과 같은 네이티브 time-series 최적화를 제공하여 AI 에이전트가 상호작용, 학습 반복, 성능 지표의 방대한 현재 및 과거 기록을 유지할 수 있도록 합니다. 이 과정에서 계산 성능이나 데이터 무결성을 손상시키지 않습니다.
원활한 통합: LangGraph와 같은 에이전틱 프레임워크와 MongoDB의 원활한 통합은 복잡한 상태 기반 AI 에이전트 시스템 개발을 가속화합니다. MongoDB는 JSON 유사 문서에 대한 네이티브 지원, 동적 스키마, 강력한 인덱싱 기능을 통해 LangGraph 기반 AI 에이전트가 복잡한 데이터 및 메모리 구조를 유지하고, 다단계 추론 과정을 추적하며, 세션 간 지속 가능한 고급 상태 관리를 구현함으로써 AI 의사결정 과정의 포괄적인 감사 가능성을 제공합니다.
솔루션 구축
사용 사례에 의미 있는 CSV 데이터를 포함하세요
데이터는 사용 사례에 적합해야 하며 다음 지침을 준수해야 합니다.
CSV 파일에는 열 이름이 포함된 헤더 행이 있어야 합니다.
첫 번째 열은 반드시 'timestamp'라는 이름이어야 하며 YYYY-MM-DDTHH:MM:SSZ 형식의 타임스탬프(예: 2025-02-19T13:00:00Z)를 포함해야 합니다.
나머지 열에는 사용 사례에 관련된 데이터를 포함해야 합니다.
열이나 행의 제한은 없지만, 프레임워크 테스트 목적을 위해 데이터 크기를 가능한 한 작게 유지하는 것이 좋습니다.
샘플 데이터:
timestamp,gdp,interest_rate,unemployment_rate,vix 2025-02-19T13:00:00Z,2.5,1.75,3.8,15 2025-02-19T13:05:00Z,2.7,1.80,3.7,18 2025-02-19T13:10:00Z,2.6,1.85,3.9,22 2025-02-19T13:15:00Z,2.4,1.70,4.0,10 2025-02-19T13:20:00Z,2.3,1.65,4.1,20
동일한 폴더에 쿼리 파일을 추가해야 합니다. 이 파일에는 에이전틱 워크플로의 일부로 벡터 검색 기능을 시연하는 데 사용할 쿼리가 포함됩니다. 파일은 다음 지침을 준수해야 합니다.
CSV 파일에는 열 이름이 포함된 헤더 행이 있어야 합니다.
첫 번째 열의 이름은 'query'로 지정하고 쿼리를 포함해야 합니다.
두 번째 열의 이름은 "recommendation"이어야 하며 예상 권장 사항을 포함해야 합니다.
열이나 행의 제한은 없지만, 프레임워크 테스트 목적을 위해 데이터 크기를 가능한 한 작게 유지하는 것이 좋습니다.
샘플 데이터:
query,recommendation GDP growth slowing,Consider increasing bond assets to mitigate risks from potential economic slowdown. GDP showing strong growth,Increase equity assets to capitalize on favorable investment conditions. Interest rates rising,Shift focus to bond assets as higher rates may impact borrowing-sensitive sectors. Interest rates falling,Increase real estate assets to take advantage of lower borrowing costs. Unemployment rate increasing,Reduce equity assets to account for potential economic weakness and reduced consumer spending. Unemployment rate decreasing,Increase equity assets to benefit from improved economic conditions and corporate profits. VIX above 20,Reduce equity assets to manage risks associated with high market volatility. VIX below 12,Increase equity assets to capitalize on low market volatility and investor confidence. VIX within normal range (12-20),Maintain current asset allocation as market conditions are stable. Combination of rising interest rates and high VIX,Focus on bond assets to hedge against market volatility and borrowing cost impacts.
JSON 구성 파일을 통해 에이전트 워크플로를 설정합니다.
Go config 폴더로 이동하여 JSON config.json 파일을 생성하거나 업데이트하세요. 파일에는 다음 구조가 포함되어야 합니다.
{ "CSV_DATA": "data/csv/<YOUR_FILE_NAME>.csv", "MDB_DATABASE_NAME": "<YOUR_MONGODB_DATABASE_NAME>", "MDB_TIMESERIES_COLLECTION": "<YOUR_MONGODB_TIMESERIES_COLLECTION_NAME>", "DEFAULT_TIMESERIES_DATA": [ { "timestamp": "<DEFAULT_TIMESTAMP_IN_YYYY-MM-DDTHH:MM:SSZ>" // Your default data here, check config_example.json for better understanding } ], "CRITICAL_CONDITIONS": { // Below is an example of a critical condition for GDP growth "gdp": {"threshold": 2.5, "condition": "<", "message": "GDP growth slowing: {value}%"} // Other critical conditions for your use case here, check config_example.json for better understanding }, "MDB_TIMESERIES_TIMEFIELD": "<YOUR_TIMESTAMP_FIELD_NAME>", "MDB_TIMESERIES_GRANULARITY": "<YOUR_TIMESERIES_GRANULARITY>", "MDB_EMBEDDINGS_COLLECTION": "queries", // Using "queries" collection name for storing queries "MDB_EMBEDDINGS_COLLECTION_VS_FIELD": "query_embedding", // Using "query_embedding" field for storing embeddings "MDB_VS_INDEX": "<YOUR_MONGODB_DATABASE_NAME>_queries_vs_idx", // Replace <YOUR_MONGODB_DATABASE_NAME> with your MongoDB database name "MDB_HISTORICAL_RECOMMENDATIONS_COLLECTION": "historical_recommendations", // Using "historical_recommendations" collection name for storing recommendations "SIMILAR_QUERIES": [ // Below is an example of default similar queries for GDP growth { "query": "GDP growth slowing", "recommendation": "Consider increasing bond assets to mitigate risks from potential economic slowdown." } // Other similar queries for your use case here, check config_example.json for better understanding // This ones are going to be used for the vector search tool in case something is not found in the queries collection ], "MDB_CHAT_HISTORY_COLLECTION": "chat_history", // Using "chat_history" collection name for storing chat history "MDB_CHECKPOINTER_COLLECTION": "checkpoints", // Using "checkpoints" collection name for storing checkpoints "MDB_LOGS_COLLECTION": "logs", // Using "logs" collection name for storing logs "MDB_AGENT_PROFILES_COLLECTION": "agent_profiles", // Using "agent_profiles" collection name for storing agent profiles "MDB_AGENT_SESSIONS_COLLECTION": "agent_sessions", // Using "agent_sessions" collection name for storing agent sessions "AGENT_PROFILE_CHOSEN_ID": "<YOUR_AGENT_PROFILE_ID>", // Replace <YOUR_AGENT_PROFILE_ID> with the agent profile ID you want to use, check config_example.json for better understanding // Below is an example default agent profile for Portfolio Advisor "DEFAULT_AGENT_PROFILE": { "agent_id": "DEFAULT", "profile": "Default Agent Profile", "role": "Expert Advisor", "kind_of_data": "Specific Data", "motive": "diagnose the query and provide recommendations", "instructions": "Follow procedures meticulously.", "rules": "Document all steps.", "goals": "Provide actionable recommendations." }, "EMBEDDINGS_MODEL_NAME": "Cohere Embed English V3 Model (within AWS Bedrock)", // Describing the embeddings model used for creating the chain of thought "EMBEDDINGS_MODEL_ID": "cohere.embed-english-v3", // Model ID for the embeddings model "CHATCOMPLETIONS_MODEL_NAME": "Anthropic Claude 3 Haiku (within AWS Bedrock)", // Describing the chat completions model used for generating responses "CHATCOMPLETIONS_MODEL_ID": "anthropic.claude-3-haiku-20240307-v1:0", // Model ID for the chat completions model // Below is a sample agent workflow graph that uses the tools defined in the agent_tools.py file // PLEASE BE CAREFUL WHEN MODIFYING THIS GRAPH, CONSIDER THAT THE TOOLS DEFINED IN THE AGENT TOOLS FILE ARE USED HERE AS WELL AS THE IMPORTS "AGENT_WORKFLOW_GRAPH": { "nodes": [ {"id": "reasoning_node", "tool": "agent_tools.generate_chain_of_thought_tool"}, {"id": "data_from_csv", "tool": "agent_tools.get_data_from_csv_tool"}, {"id": "process_data", "tool": "agent_tools.process_data_tool"}, {"id": "embedding_node", "tool": "agent_tools.get_query_embedding_tool"}, {"id": "vector_search", "tool": "agent_tools.vector_search_tool"}, {"id": "process_vector_search", "tool": "agent_tools.process_vector_search_tool"}, {"id": "persistence_node", "tool": "agent_tools.persist_data_tool"}, {"id": "recommendation_node", "tool": "agent_tools.get_llm_recommendation_tool"} ], "edges": [ {"from": "reasoning_node", "to": "data_from_csv"}, {"from": "data_from_csv", "to": "process_data"}, {"from": "process_data", "to": "embedding_node"}, {"from": "embedding_node", "to": "vector_search"}, {"from": "vector_search", "to": "process_vector_search"}, {"from": "process_vector_search", "to": "persistence_node"}, {"from": "persistence_node", "to": "recommendation_node"}, {"from": "recommendation_node", "to": "END"} ], "entry_point": "reasoning_node" } }
구성 파일이 업데이트되면 환경 변수를 구성하고 벡터 임베딩을 생성해야 합니다. 마지막으로 벡터 검색 인덱스를 생성해야 합니다.
모든 단계에 대한 자세한 설명은 readme를 확인하세요.
그림 3. 논리 아키텍처
주요 학습 사항
에이전트 AI는 데이터 처리 방식을 혁신적으로 변화시켜 더욱 풍부하고 효율적인 비즈니스 데이터 처리 결과를 이끌어낼 수 있는 완전히 새로운 유형의 소프트웨어를 도입합니다. 비즈니스 애플리케이션 내에서 에이전트를 활용하기 위해 소프트웨어 제공 팀은 학습해야 합니다.
에이전트가 미리 정의된 워크플로 내에서 반응하기 위한 지침을 받는 방법.
에이전트가 API 및 데이터베이스와 같은 도구에 접근하고 상호작용하는 방법.
에이전트가 상태를 유지하고 관리하는 방법.
이러한 항목의 대부분은 에이전트 또는 에이전트 워크플로가 배포될 실제 사용 사례, 워크플로 또는 산업 맥락과 무관하게 소프트웨어 전달 팀의 기본 활동 및 설정으로 간주될 수 있습니다.
성과가 뛰어난 소프트웨어 제공 팀은 비즈니스 소프트웨어 솔루션의 개발 및 배포 속도를 높이고 유지 관리의 복잡성을 줄이기 위해 일반적인 작업과 구성 요소를 추상화하는 프레임워크를 자주 사용합니다. 이 에이전트 프레임워크는 소프트웨어 전달 팀이 공통적이고 구성 가능한 구성 요소 및 자산을 통해 에이전트 솔루션을 쉽게 시작하고 유지 관리할 수 있도록 합니다.
이 프레임워크에서 작업하면 소프트웨어 팀과 함께 에이전트 솔루션 구축을 시작하는 방법을 배울 수 있을 뿐만 아니라, 장기적으로 비즈니스 솔루션을 더 쉽게 확장하고 유지 관리할 수 있는 반복 가능한 패턴과 구성 요소를 구축하는 데도 도움이 됩니다.
작성자
Julian Boronat, MongoDB
Peyman Parsi, MongoDB
Jeff Needham, MongoDB
Luca Napoli, MongoDB
Humza Akthar, MongoDB