使用案例: 人工智能
产品: MongoDB Atlas、 MongoDB Atlas Vector Search、 MongoDB Atlas Triggers、Voyage AI
合作伙伴: ObjectBox
解决方案概述
联网车辆会持续生成传感器数据,为期望立即获得免提支持的驾驶员提供支持。然而,当停车场、隧道或乡村道路的连接中断时,任何依赖云的助手都会在最关键的时候失效。
该解决方案在边缘运行AI副驾驶,确保在网络中断期间持续提供车内辅助。它使用设备上的 ObjectBox数据库来存储实时车辆遥测数据以及车主手册。然后,它使用不需要活动网络连接的本地 LLM代理处理查询。重新连接后,ObjectBox Sync Server 会自动将此边缘数据同步回MongoDB Atlas。
MongoDB Atlas充当集中式云记录系统。它对手册内容执行向量搜索,维护时间序列集合中的遥测历史记录,并通过Atlas触发器将每个同步快照处理为完全可查询的文档。
参考架构
构建无需互联网连接即可提供准确响应的车载助手的架构分割两层:车载边缘层级和MongoDB Atlas云。
图 1。从请求同步到MongoDB Atlas和Atlas Trigger 输出集合的端到端用户流
边缘层架构
车载边缘层级构成一个独立的运行时,其中 Cockpit、后端、本地代理和 ObjectBox 服务直接在车辆上进行通信。该堆栈使助手能够检索数据并在没有MongoDB Atlas 的情况下进行操作,而当连接恢复时,本地数据将与MongoDB Atlas同步。边缘层级使用以下组件:
Cockpit用户界面:使用 Next.js 构建,此界面显示实时仪表、故障代码滚动条、聊天面板和地图,将所有浏览器调用限制为同源API路由。
Python后端:公开 REST 端点和服务器发送的事件以处理遥测代理、语音到文本和文本到语音转换以及代理编排。
LangChain代理:通过 Ollama 与本地 LLM 通信,管理离散在线和离线执行路径的双重预编译图。
嵌入管道:首先将车辆手册划分为较小的文本块。然后,使用 Voyage AI 的 voyage-4-nano 模型将每个数据块转换为 1,024 维嵌入,并将生成的嵌入与其相应的数据块一起存储。
ObjectBox 服务:由C++提供支持,三个不同的同步客户端在本地存储用户手册数据段及其嵌入、车辆遥测和对话历史记录。
ObjectBox HNSW向量搜索:ObjectBox 针对本地存储的手动嵌入维护 HNSW 向量索引。生成的索引可以直接在车辆上进行近似最近邻搜索,从而允许助手在离线时检索相关手册内容,而无需依赖MongoDB Atlas连接。
遥测生成器:每隔两秒捕获一次 VSS 快照并将其直接保存到本地遥测存储中。
Cloud Tier 架构
MongoDB Atlas充当车辆本地 ObjectBox存储的连接对应方。当连接可用时,它会接收同步的手动数据段和嵌入、车辆遥测和对话历史记录,从而在边缘层级保持离线运行的同时提供基于云的持久性。云使用以下层级:
MongoDB Atlas 群集:维护复制的数据集合,并提供比本地 ObjectBox存储更多的存储容量。与MongoDB Atlas的同步使该解决方案能够保留更多的手册内容、遥测、对话历史和其他长期数据,而不受车辆本地存储容量的限制。
Atlas Vector Search:对同步的手动嵌入进行索引,并在连接可用时提供针对完整手册内容的云端向量搜索。
Atlas Triggers:自动将传入的遥测快照转换为状态文档,同时扩展专用的时间序列历史日志。
请求的执行流程
随着边缘层和云的建立,执行流描述了驱动程序的请求如何在系统中移动,从 Cockpit 到本地后端和代理。当连接可用时,会进行云同步。
当驾驶员打字或说话时,后端将请求流直接提供给代理。代理使用 LangGraph 评估查询并决定调用哪个工具。
汽车手册被分块并嵌入MongoDB Voyage AI 的 1,024 维 voyage-4-nano 模型。相同的嵌入表示本地存储在 ObjectBox 中,并复制到MongoDB Atlas,并为MongoDB Atlas Vector Search 编制索引。在边缘,ObjectBox 的 HNSW索引支持对汽车手册嵌入进行本地近似最近邻检索。在云, MongoDB Atlas Vector Search 针对同步的手册内容提供相应的向量搜索功能。
当请求涉及车辆信息时,代理会确定哪种遥测工具最适合驾驶员的问题并调用它。根据请求,所选工具会从相应的遥测存储中检索当前车辆状态、相关 VSS 信号、故障代码或派生状态信息。如果所选工具返回 DTC,代理可以调用专用转换工具,将代码及其相关信号转换为对受影响系统、含义、严重性和后续步骤的清晰解释。
数据模型方法
文档模型将这些形状存储在一个数据库中:
结构化遥测
图 2。遥测数据模型
点击放大自由文本手册数据段
图 3。汽车手册数据模型
点击放大聊天记录
图 4。聊天对话数据模型
点击放大时间序列遥测数据
汽车的最后状态
图 5。遥测状态数据模型
点击放大
每个遥测快照都是一个文档。快照包含完整的 VSS 车辆树,涉及多个域的 1300 信号,存储为嵌套JSON。该模型在这些领域中不需要固定模式。
ObjectBox 将遥测有效负载存储为字符串。 MongoDBConnector通过 JsonToNative 外部类型将其扩展为Atlas中的原生嵌套文档,因此云查询可通过确切的 VSS 路径解决字段。
集合
这些数据模型共同代表了解决方案的核心领域:可搜索的手册知识、对话历史记录、原始车辆遥测数据、当前车辆状态和历史遥测数据。分离这些数据类型可以实现高效检索,支持实时车辆状态查询,保留对话上下文,并在MongoDB Atlas中保持长期遥测历史记录的可扩展的和可查询性。此解决方案的集合包括:
manual_chunks:用户手册文本块,具有用于向量搜索的 1024 维 Voyage AI嵌入。conversations:聊天历史记录,包括人类和助手的响应以及每个助手用于回答问题的工具。objectbox_telemetry:每个文档的原始快照,从边缘同步。telemetry-status:当前车辆状态,每辆车一份文档,由触发写入。telemetry-data: MongoDB时间序列集合。 Atlas Trigger 会为每个快照附加一条记录,因此随着数据的增长,历史记录查询仍可保持高效。
构建解决方案
检查 GitHub存储库中的 README 以了解完整的实施细节。以下步骤说明了如何创建应用程序:
图 6。驾驶舱用户界面,包含实时仪表、聊天、故障代码滚动条以及在线和离线同步面板
关键要点
保持边缘权威:设备上的 ObjectBox存储在无连接的情况下提供读取和接受写入操作,因此助手可在低连接情况下工作。
在查询所在的位置运行向量搜索: MongoDB Voyage AI嵌入模型(voyage-4-nano,1024 维度)支持边缘上的 ObjectBox向量搜索和云中的MongoDB Atlas Vector Search,因此不同模式下的答案保持一致。
将遥测历史记录存储为时间序列: MongoDB Atlas Trigger 将每个快照写入MongoDB时间序列集合。
将一个快照为一个文档:灵活的文档模型存储 VSS 信号,而无需固定的跨域模式。
设计服务以容许失去连接:边缘在离线时缓冲写入,并在重新连接时与MongoDB Atlas进行协调。
作者
Timothy Marland, MongoDB
Dorottya Nyárády, MongoDB