🚀 免费试用 Zilliz Cloud,完全托管的 Milvus,体验 10 倍的性能提升!立即试用>

milvus-logo
LFAI
  • Home
  • Blog
  • 建立由 Milvus 向量数据库支持的智能衣柜定制系统

建立由 Milvus 向量数据库支持的智能衣柜定制系统

  • Engineering
July 08, 2022
Yiyun Ni

cover image 封面图片

如果您正在寻找一款能完美装入卧室或试衣间的衣柜,我敢打赌,大多数人都会想到量身定制的衣柜。然而,并不是每个人的预算都能达到那么多。那么,现成的衣柜又如何呢?这类衣柜的问题在于,它们很可能达不到你的期望,因为它们不够灵活,无法满足你独特的存储需求。此外,在网上搜索时,用关键字来概括您要寻找的特定类型的衣柜相当困难。很有可能,你在搜索框中输入的关键字(例如:带珠宝托盘的衣柜)与搜索引擎中的定义(例如:带嵌入式抽拉托盘的衣柜)大相径庭。

不过,有了新兴技术,问题就迎刃而解了!家具零售集团宜家(IKEA)提供了一种流行的设计工具PAX 衣柜,用户可以从许多现成的衣柜中进行选择,并定制衣柜的颜色、尺寸和内部设计。无论您需要的是悬挂空间、多个搁板还是内部抽屉,这个智能衣柜定制系统总能满足您的需求。

要使用这款智能衣柜设计系统找到或打造理想的衣柜,您需要

  1. 指定基本要求--衣柜的形状(普通型、L 型或 U 型)、长度和深度。
  2. 指定您的存储需求和衣柜内部结构(例如,需要悬挂空间、拉出式裤架等)。
  3. 添加或删除衣柜的抽屉或搁板等部件。

然后,您的设计就完成了。简单方便!

pax system 大同系统

使这样的衣柜设计系统成为可能的一个非常关键的组件是向量数据库。因此,本文旨在介绍用于构建由向量相似性搜索驱动的智能衣柜定制系统的工作流程和相似性搜索解决方案。

跳转到

系统概述

为了提供这样一个智能衣柜定制工具,我们首先需要定义业务逻辑,了解物品属性和用户旅程。衣柜及其组件(如抽屉、托盘、衣架)都是非结构化数据。因此,第二步就是利用人工智能算法和规则、先验知识、物品描述等,将这些非结构化数据转换成计算机可以理解的数据类型--向量!

Customization tool overview 定制工具概述

有了生成的向量,我们需要强大的向量数据库和搜索引擎来处理它们。

tool architecture 工具架构

定制工具利用了一些最流行的搜索引擎和数据库:Elasticsearch、Milvus 和 PostgreSQL。

为什么选择 Milvus?

衣柜组件包含非常复杂的信息,如颜色、形状和内部结构等。然而,将衣柜数据保存在关系数据库中的传统方法远远不够。一种流行的方式是使用 Embeddings 技术将衣柜转换成向量。因此,我们需要寻找一种专门用于向量存储和相似性搜索的新型数据库。在探究了几种流行的解决方案后,Milvus向量数据库以其卓越的性能、稳定性、兼容性和易用性被选中。下图是几种流行的向量搜索解决方案的比较。

solution comparison 解决方案比较

系统工作流程

System workflow 系统工作流程

使用 Elasticsearch 按衣柜尺寸、颜色等进行粗略过滤。然后,过滤后的结果通过 Milvus 向量数据库进行相似性搜索,并根据结果与查询向量的距离/相似性进行排序。最后,根据业务洞察力对结果进行合并和进一步完善。

数据流

衣柜定制系统与传统的搜索引擎和推荐系统非常相似。它包括三个部分

  • 离线数据准备,包括数据定义和生成。
  • 在线服务,包括召回和排序。
  • 基于业务逻辑的数据后处理。

Data flow 数据流

离线数据流

  1. 利用业务洞察力定义数据。
  2. 利用先验知识定义如何将不同组件组合成衣柜。
  3. 识别衣柜的特征标签,并将特征编码为.json 文件中的 Elasticsearch 数据。
  4. 通过将非结构化数据编码成向量来准备召回数据。
  5. 使用向量数据库 Milvus 对上一步获得的召回结果进行排序。

offline data flow 离线数据流

在线数据流

  1. 接收用户的查询请求并收集用户资料。
  2. 通过确定用户对衣柜的要求来理解用户的查询。
  3. 使用 Elasticsearch 进行粗搜索。
  4. 根据 Milvus 中向量相似度的计算方法,对粗搜索得到的结果进行评分和排序。
  5. 在后端平台上对结果进行后处理和整理,生成最终结果。

online data flow 在线数据流

数据后处理

每个公司的业务逻辑各不相同。您可以应用贵公司的业务逻辑对结果进行最后润色。

系统演示

现在让我们来看看我们建立的系统是如何实际运行的。

用户界面(UI)显示衣柜组件不同组合的可能性。

每个组件都按其特征(尺寸、颜色等)贴上标签,并存储在 Elasticsearch(ES)中。在 ES 中存储标签时,需要填写四个主要数据字段:ID、标签、存储路径和其他支持字段。ES 和标签数据用于细粒度召回和属性过滤。

es ES

然后使用不同的人工智能算法将衣柜编码成向量集。向量集存储在 Milvus 中,用于相似性搜索和排序。这一步骤可返回更精细、更准确的结果。

Milvus Milvus

Elasticsearch、Milvus 和其他系统组件共同构成了定制设计平台的整体。在回忆过程中,Elasticsearch 和 Milvus 中的特定领域语言(DSL)如下。

dsl DSL

寻找更多资源?

了解 Milvus 向量数据库如何为更多人工智能应用提供动力:

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

扩展阅读