我们可以使用 Milvus 搭建多模态 RAG 应用,用于产品推荐系统。用户只需简单上传一张图片并输入文字描述,Google 的 MagicLens 多模态 Embedding 模型就会将图像和文本编码成一个多模态向量。然后,使用这个向量从 Milvus 向量数据库中找到最相似的亚马逊产品。
🎨🔍 Milvus 魔法:图像搜索和智能购物!
您是否曾经希望只需上传一张图片并简单描述你想要的东西就能找到对应的产品?我们现在可以帮您实现这个想法!🛍️✨
以下是我们搭建的应用示例的使用流程:
📸 拍摄一张照片并输入您想要搜索的内容 🧙♂️ Milvus 会将您的输入转换成一个特殊的"多模态向量"(很神奇吧?) 🕵️♀️ 这个输入向量将扮演超级侦探的角色,在 Milvus 向量数据库中进行相搜索 🎉 随后,系统就能够根据您的图片和描述在亚马逊上找到对应的产品
本文将展示如何使用 Milvus 搭建多模态 RAG 应用。
多模态产品推荐系统使用的技术
Milvus 是一款开源的分布式向量数据库,可用于存储、索引和搜索向量,十分适合生成式 AI 应用。凭借其混合搜索、元数据过滤、重排(Reranking)等功能,以及能够高效处理万亿级向量数据的能力,Milvus 是 AI 和 ML 应用的首选解决方案。您可以直接本地运行 Milvus 可以本地运行或部署集群版 Milvus,抑或是使用全托管的 Milvus 服务——Zilliz Cloud。
Streamlit 是一个开源的 Python 库,简化了创建和运行 Web 应用的过程。Streamlit 能够助力开发人员使用简单的 Python 脚本构建和部署仪表板(dashboard)、数据报告和简单的机器学习接口,免去深入学习 CSS 或 JavaScript 框架(如 Node.js)等 Web 技术的麻烦。
python download_images.py
每行产品数据包含商品元数据(如:类别名称、平均用户评分)以及产品缩略图和大图的 URL。
本文示例仅针对每个产品的大图生成向量。
MagicLens 是由 Google DeepMind 开发的图像检索模型。本指南介绍如何设置环境并下载 MagicLens 的模型权重。更多信息,请前往 MagicLens 的 GitHub 仓库。
$ conda create --name magic_lens python=3.9
conda activate magic_lens
clone https://github.com/google-research/scenic.git git
cd scenic
pip install
pip install -r scenic/projects/baselines/clip/requirements.txt
$ pip install --upgrade "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
$ pip install --upgrade "jax[cuda11_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
cd .. This will take you back to the main directory where you cloned the demo.
$ gsutil cp -R gs://gresearch/magiclens/models ./
python index.py
运行 Streamlit Server 实现前端界面
$ streamlit run ui.py
使用 Streamlit 应用: 在终端输入以下指令,运行应用
streamlit run ui.py
上传用于产品搜索的图片。 输入文字描述。 点击 "搜索" 从 Milvus 向量数据库中查找相似产品。 点击 "Ask GPT" 获取 AI 产品推荐。
搜索功能:使用多模态 Embedding 模型 MagicLens 将您的查询图片和文本转换为向量。此时使用的模型与此前批量将产品图片转换为向量并存储在 Milvus 向量数据库中的模型相同。然后 Milvus 执行近似最近邻(ANN)搜索,查找与您输入向量最接近的 top_k 个产品图片向量。 Ask GPT 功能:调用 OpenAI 的 GPT-4o mini 多模态生成式模型,从搜索结果中取出前 25 张图片,将它们放入 Prompt 中,并传入模型。然后 GPT-4o mini 将选择最推荐的产品图片并提供推荐理由。