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 推理可能会增加延迟,但数据库性能仍然至关重要,尤其是在代理扩展的情况下。生产代理将并行运行,调用多个工具,并依赖最新信息来做出决策。数据库运行缓慢将成为瓶颈,增加总响应时间,并降低代理实时操作的能力。
数据治理与安全:敏感数据(如用户日志、传感器读数和个人身份信息)必须安全存储和访问,同时确保合规(例如:GDPR,SOC 2)。MongoDB Atlas 等安全数据库可提供内置的高级安全控制,如客户端字段级加密、可查询加密和广泛的审核功能。这些功能有助于确保代理仅访问其有权查看的数据,并保持可追溯性。
图 1 显示了 AI 代理的主要组件。代理首先从人类或通过自动触发器接收任务,然后使用 LLM 生成思维链或遵循预定的工作流。代理将在运行期间使用各种工具和模型,并从 MongoDB Atlas 等内存提供商处存储并检索数据。
自主智能体框架这一解决方案的主要目标是通过提供一个灵活且可扩展的基础,加速 AI 驱动的工作流程的开发。该框架并非提供一组固定的工具或功能,而是作为根据各行业的特定用例构建定制化智能代理的起点。
您可以按照此解决方案轻松设置由 MongoDB Atlas 和 LangGraph 提供支持的工具包,然后使用它来创建具有线性工作流的多个代理。该解决方案的简便性使用户能够通过操作配置文件快速了解如何构建基本代理。对于更复杂的使用案例或高级代理,您可以根据需要通过添加新工具、节点、条件或工作流来扩展框架。
通过优先考虑适应性和模块化,自主智能体框架支持开发者创建高效且高度可定制的 AI 代理,以满足其行业或项目的独特需求。
图 1. AI 代理的基本组成部分
参考架构
借助 MongoDB
代理式框架是一个多功能的 AI 驱动的推荐助手,旨在了解您的数据,使用 LangGraph 执行多步骤诊断工作流程,并生成可行的见解。该框架无缝集成了多种技术,从 CSV 文件或 MongoDB(模拟多样化的数据源)读取时间序列数据,生成文本嵌入,并执行向量搜索以识别类似的历史查询。该框架还会持久化会话和运行数据,最终生成诊断建议。
MongoDB 作为存储代理配置文件、历史推荐、时间序列数据和会话日志的核心支撑,不仅确保了诊断过程的完整可追溯性,还支持对过往洞察的高效查询和复用。
图2。Agentic AI 参考架构
为什么选择 MongoDB
MongoDB 在推动代理 AI 的实现中发挥着关键作用。MongoDB 独特的灵活性、性能和可扩展性组合使其成为实现人工智能的理想选择。MongoDB 文档模型支持结构化、半结构化和非结构化数据的原生存储和检索,并能够无缝处理多样化和复杂的数据集。MongoDB 使 AI 代理能够动态地对新信息做出反应,实时维护内部状态,并持续学习和进化。
灵活数据模型:MongoDB 的架构通过提供无与伦比的灵活性在数据存储方面,为代理型 AI 系统奠定了强大的基础。该 document model 允许您以单一、统一的格式存储多种数据,例如时间序列日志、代理配置文件和推荐输出。这种灵活性意味着您不必每次数据需求发生变化时都重新设计数据库模式。MongoDB 的灵活模式使 AI 代理能够存储复杂的、层次化的代理状态,并且嵌套文档可以动态适应不断变化的代理特征和交互上下文。MongoDB 是在多次交互中维护复杂代理状态的理想选择。它支持版本控制和跟踪代理演化,并且具有无缝暂停和恢复代理上下文的能力。
向量搜索:MongoDB Atlas 支持原生向量搜索,能够快速高效地对向量嵌入进行相似性搜索。这对于将当前查询与历史数据进行匹配至关重要,从而提高诊断准确性并提供更相关的建议。向量搜索可以支持模式识别和上下文检索,从而显著提高 AI 代理的质量和决策能力。向量搜索通过使用相似性算法实现复杂的信息检索,提供更精确的结果,从而减少 LLM 的幻觉。MongoDB 可以高效处理语义匹配、上下文搜索和多维数据分析,这些对于 AI 代理的决策工作流至关重要。
可扩展性、性能和高可用性:MongoDB 设计为可水平扩展,因而能够处理大量实时数据。MongoDB 通过分布式的分片架构实现无缝水平可扩展性,能够满足 AI 工作负载不断增长的数据需求,从而为大规模分布式 AI 应用提供支持。借助 MongoDB,AI 代理可以水平扩展,分布式处理存储和计算负载,保持高可用性,即使在数据量呈指数级增长时也能始终确保一致的性能。MongoDB 副本集提供开箱即用的强大高可用性,为 AI 代理的可靠性和弹性奠定基础。
Coinbase,作为美国最大的加密货币交易所之一,有效利用 MongoDB 显著提升了其平台在 700 个 MongoDB 集群上的可扩展性,并成功应对了海量且难以预测的市场流量激增。
时间序列集合:MongoDB 时间序列集合旨在高效地摄取海量数据,同时具备高性能和可扩展性。这些专用集合使得 AI 代理能够跟踪和分析序列交互、学习模式以及随时间变化的状态,这对于保持上下文、理解行为模式以及实施自适应决策过程至关重要。通过提供原生时间序列优化(例如自动数据压缩、存储效率提升和快速的时间查询响应),MongoDB 允许 AI 代理在不影响计算性能或数据完整性的情况下,维护其交互、学习迭代和性能指标的大量当前和历史记录。
无缝集成:MongoDB 与 LangGraph 等代理式框架无缝集成,加速了复杂且有状态的 AI 代理系统的开发。通过对 JSON 类文档、动态模式和强大索引功能的原生支持,MongoDB 使 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 文件应包含一个包含列名的标题行。
第一列必须命名为“查询”并包含查询。
第二列必须命名为“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 配置文件配置您的代理工作流
转至 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" } }
配置文件更新后,您需要配置环境变量并创建向量嵌入。最后,必须创建向量搜索索引。
请查看自述文件以获取所有步骤的详细说明。
图 3. 逻辑架构
关键要点
代理式 AI 开启了一种全新的软件类型,它能够从根本上改变我们处理数据的方式,从而推动更丰富、更高效的业务数据处理成果。为了在业务应用中利用代理,软件交付团队需要学习:
代理如何在预定的工作流中获取响应指令。
代理如何访问并与 API 和数据库等工具进行交互。
代理如何持久化和管理状态。
其中许多事项都可以视为软件交付团队的基础活动和前期准备工作,而不论代理或代理式工作流将被部署于何种实际用例、工作流程或行业场景。
对于高绩效的软件交付团队来说,使用框架来抽象常见任务和组件是一种常见做法,它不仅能够加快业务软件解决方案的开发和部署速度,还能降低后续维护的复杂性。该代理框架使软件交付团队更容易开始构建代理解决方案,并通过通用、可配置的组件和资产来维护这些解决方案。
在这一框架中工作,不仅可以教会你和你的软件团队如何开始构建代理式解决方案,还能帮助他们建立可重复的模式和组件,从而更轻松地实现业务解决方案的长期扩展与维护。
作者
Julian Boronat,MongoDB
Peyman Parsi, MongoDB
Jeff Needham,MongoDB
Luca Napoli,MongoDB
Humza Akthar, MongoDB