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

零售货架库存智能

从照片中捕获货架库存,将其存储在MongoDB中,并在联网和离线零售客户端之间同步更新。

使用案例: 边缘和移动、人工智能

行业: 边缘和移动、零售

产品: MongoDB Enterprise Advanced

合作伙伴: PowerSync

零售商需要准确了解货架库存。在大型设施中,团队经常在连接不一致的区域工作,并依赖手动检查来识别需要补货的产品。

了解如何将单个货架图像转换为结构化库存记录。视觉语言模型可识别产品并对其进行计数,而MongoDB Enterprise Advanced则会存储捕获的图像、商品计数和应用程序程序上下文。

MongoDB为跨网络分发清单状态提供了基础。变更流向 PowerSync 提供实时更新,从而将所选字段同步到客户端设备上的本地 SQLite 数据库。当连接中断时,客户端设备会继续使用本地数据离线工作,并在重新连接时进行同步。

这种以MongoDB为中心的工作流程无缝集成了基于图像的捕获、灵活的文档建模和同步零售应用程序。它将货架观察结果转换为库存数据,团队可以在客户端应用程序中使用该数据。

MongoDB Enterprise Advanced充当运营数据层和货架库存的真实来源。

浏览器将架子图像发送到后端应用程序。后端将图像传递给配置的视觉语言模型,验证结构化响应,并将生成的库存文档写入MongoDB。

每个文档都将捕获上下文与检测到的项目一起存储。 MongoDB存储元数据,例如捕获时间、设备、操作符、存储、模型、项目计数、置信度值和生命周期状态。

当您启用媒体持久性时,后端会将原始图像存储在Amazon S3 兼容的对象存储中,并将资产引用保留在MongoDB中。这种设计将大型媒体对象与操作清单记录分开,同时保留它们的关系。

MongoDB变更流会发布 PowerSync 用于将所选清单字段同步到客户端SQLite 数据库的事件。 PowerSync 支持本地应用程序访问权限和连接中断时的同步,而MongoDB仍然是事实来源。

这种架构在保持统一数据基础的同时分离了职责:

  • MongoDB管理运营库存记录。

  • 后端控制写入操作。

  • VLM(视觉语言模型)提取结构化数据。

  • 对象存储会保留原始图像。

  • PowerSync 将MongoDB支持的状态分发给客户端。

从货架图像到同步库存:后端使用视觉语言模型创建MongoDB库存文档。 MongoDB存储操作记录,对象存储保留原始映像,变更流将 PowerSync 同步驱动到客户端SQLite。

图 1。从货架图像到同步库存:后端使用视觉语言模型创建MongoDB库存文档。 MongoDB存储操作记录,对象存储保留原始映像,变更流将 PowerSync 同步驱动到客户端SQLite。

点击放大

将每个架子捕获作为文档存储在 inventory_captures集合中。将捕获上下文和模型生成的清单结果放在一起,以便应用程序程序将每次捕获作为一个单元进行处理和同步。

该文档记录的元数据包括:

  • 捕获时间戳和位置

  • 提交设备和操作符

  • 用于图像分析的模型

  • 捕获的生命周期状态

将检测到的产品嵌入 items大量。每一项都包含产品名称、检测到的计数和模型置信度:

{
"_id": "108d020b-9d3c-4b36-a651-0e1be2b1e899",
"captured_at": "2026-07-02T17:45:08.661249+00:00",
"device_id": "web-o0its21v",
"operator_id": "demo-operator",
"store_id": "store-unknown",
"cv_model": "qwen2.5",
"items": [
{
"name": "Nissin Cup Noodles",
"count": 5,
"confidence": 0.9
},
{
"name": "Popcorn Bag",
"count": 1,
"confidence": 0.9
},
{
"name": "Lays Chips",
"count": 3,
"confidence": 0.9
}
],
"status": "ACTIVE",
"asset": null
}

嵌入检测到的商品可以使模型输出接近生成它的货架捕获。 MongoDB灵活的文档模型使应用程序能够随着模型的发展保留其他项目属性,从而无需为每种可能的产品建立严格的模式。

MongoDB仍然是库存记录的真实来源。当您启用媒体持久性时,PowerSync 将客户端应用程序所需的字段投影到本地 SQLite 数据库中,而原始图像保留在与Amazon S3 兼容的对象存储中。

  • _id:架子捕获的唯一标识符。

  • captured_at:后端收到捕获时生成的 UTC 时间戳。

  • device_id:提交图像的客户端设备的标识符。

  • operator_id:提交捕获的操作符的标识符。

  • store_id:与捕获关联的存储的标识符。

  • cv_model:用于生成清单结果的模型的名称。

  • items:包含检测到的产品、计数和置信度值的嵌入式大量。

  • status:捕获的生命周期状态。启用存储后,流程以 PENDING_UPLOAD 开始,并在原始图像上传后更改为 ACTIVE。

  • asset:可选的对象存储元数据。禁用原始图像存储时,此字段为 null。

使用 Retail-stock-take Github存储库来部署和探索解决方案。

准备具有足够资源的本地Kubernetes环境来运行:

  • 由MongoDB Ops Manager托管的MongoDB Enterprise Server

  • PowerSync

  • FastAPI后端

  • Next.js Web应用程序

  • 与 Amazon S3 兼容的对象存储

  • Ollama 和配置的视觉语言模型

查看存储库中的本地设置指南,了解支持的运行时版本、内存要求、模型要求和预期设置时间。

1

运行设置流程:

./scripts/setup.sh

部署完成后,请验证以下服务是否可用:

  • MongoDB Enterprise Advanced

  • MongoDB Ops Manager

  • PowerSync

  • Next.js Web应用程序

  • FastAPI后端

  • 与 Amazon S3 兼容的对象存储

2

启动本地 Ollama 运行时并拉取解决方案使用的模型:

./scripts/pull-models.sh

在测试图像捕获之前,请确认模型可用。该模型分析货架图像并返回结构化库存数据。

3

打开 Web应用程序并提交架子图像。后端将图像发送到视觉语言模型,验证结构化响应,并将库存文档写入MongoDB。

当您启用媒体持久性时,后端会将原始图像存储在Amazon S3 兼容的对象存储中,并更新MongoDB文档状态。 MongoDB变更流驱动 PowerSync 同步到客户端应用程序。

运行验证工作流程以验证完整的捕获、存储和同步路径:

./scripts/verify.sh

MongoDB充当整个工作流程的中央数据层。存储库文档:

  • 部署组件和设置脚本

  • 视觉语言模型处理

  • 对象存储工作流程

  • 同步路径

  • 从图像中捕获货架库存:使用视觉语言模型将货架照片转换为MongoDB存储和应用程序程序处理的结构化JSON 。

  • 将库存数据建模为MongoDB文档:将捕获的元数据和检测到的商品放在一起,以便每个文档代表一次上架检查。

  • 跨客户端设备同步MongoDB支持的状态:使用MongoDB变更流和 PowerSync 分发选定的库存字段,而无需构建自定义轮询逻辑。

  • 将操作数据与原始媒体分离:将库存数据和图像引用存储在MongoDB中,同时在启用媒体持久性时将原始帧存储在Amazon S3 兼容的对象存储中。

  • 支持断开连接的零售工作流程:使客户端应用程序能够使用本地同步的数据,并在重新连接时协调其状态。

  • Timothy Marland, MongoDB

  • Alberto Camarena Rodriguez, MongoDB

  • Daniel Jamir, MongoDB