对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

适用于车联网的 Edge AI Copilot

使用案例: 人工智能

行业: 制造和移动、移动和边缘

产品: 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云。

从请求同步到MongoDB Atlas和Atlas Trigger 输出集合的端到端用户流

图 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 快照并将其直接保存到本地遥测存储中。

MongoDB Atlas充当车辆本地 ObjectBox存储的连接对应方。当连接可用时,它会接收同步的手动数据段和嵌入、车辆遥测和对话历史记录,从而在边缘层级保持离线运行的同时提供基于云的持久性。云使用以下层级:

  • 数据复制:ObjectBox Sync Server 连接到云,通过MongoDBConnector将边缘数据存储直接同步到MongoDB Atlas 。同步包括手动数据段、其嵌入、遥测和对话历史记录。

  • 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 以了解完整的实施细节。以下步骤说明了如何创建应用程序:

1

下载项目并查看自述文件以了解所需的配置。

2

配置MongoDB Atlas 群集并配置所需的数据库访问权限。

3

设置本地 ObjectBox 存储和车辆端服务。

4

配置 ObjectBox Sync Server 和MongoDB Connector ,以在本地 Objectbox存储和MongoDB Atlas之间同步数据。

5

填充手动数据段及其嵌入,以便助手可以检索本地和云中的内容。

6

在同步的手动嵌入上配置向量搜索索引,以便Atlas可以执行云端语义检索。

7

配置触发器以进程同步遥测、维护当前车辆状态以及将历史记录附加到时间序列集合。

8

使用存储库的设置说明启动同步服务、后端和 Cockpit应用程序。

9

连接时测试助手,验证其是否离线运行,并确认连接恢复后数据是否同步。

驾驶舱用户界面,包含实时仪表、聊天、故障代码滚动条以及在线和离线同步面板

图 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