向量数据库实战:选型、调优与落地~系列文章15:多模态向量搜索:图片、音频、视频统一检索的工程实现
多模态向量搜索图片、音频、视频统一检索的工程实现 ️本文是《向量数据库实战选型、调优与落地》专栏第 15 篇⏱️阅读时间约 13 分钟 开篇不只是文本2025 年AI 应用早已不局限于文本——淘宝拍照搜同款拍一张照片找到相似商品 抖音内容推荐根据视频内容推荐相似视频 Spotify 歌曲推荐根据音频特征推荐相似音乐 这些背后的核心技术就是多模态向量搜索 多模态 Embedding 模型核心思想多模态模型能把不同类型的媒体文本、图片、音频映射到同一个向量空间中。┌─────────────────────────────────────────────────────────┐ │ 多模态向量空间 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 文本: 一只猫在草地上玩耍 │ │ → [0.12, -0.34, 0.56, ...] │ │ ↕ 距离很近 │ │ 图片: 猫在草地上的照片 │ │ → [0.13, -0.33, 0.55, ...] │ │ ↕ 距离较远 │ │ 图片: ️城市汽车照片 │ │ → [0.89, 0.12, -0.45, ...] │ │ │ │ 文本和图片在同一个向量空间中 │ │ → 可以用文本搜图片也可以用图片搜文本 │ │ │ └─────────────────────────────────────────────────────────┘主流多模态模型模型类型维度支持模态开源CLIP图文512/768文本图片✅SigLIP图文1024文本图片✅ImageBind多模态1024文本图片音频视频深度热成像✅Chinese-CLIP图文中文768中文文本图片✅Jina CLIP v2图文768文本图片✅ 实战图文混合搜索Step 1使用 CLIP 生成多模态向量importtorchfromtransformersimportCLIPModel,CLIPProcessor# 加载中文 CLIP 模型modelCLIPModel.from_pretrained(OFA-Sys/chinese-clip-vit-large-patch14)processorCLIPProcessor.from_pretrained(OFA-Sys/chinese-clip-vit-large-patch14)# 文本向量化defencode_text(text):inputsprocessor(text[text],return_tensorspt,paddingTrue)withtorch.no_grad():text_featuresmodel.get_text_features(**inputs)returntext_features[0].numpy()# 图片向量化defencode_image(image_path):fromPILimportImage imageImage.open(image_path)inputsprocessor(imagesimage,return_tensorspt)withtorch.no_grad():image_featuresmodel.get_image_features(**inputs)returnimage_features[0].numpy()# 测试text_vecencode_text(一只可爱的猫咪)image_vecencode_image(cat_photo.jpg)# 计算相似度fromnumpy.linalgimportnorm similaritynp.dot(text_vec,image_vec)/(norm(text_vec)*norm(image_vec))print(f文本和图片的相似度:{similarity:.4f})Step 2存入向量数据库frompymilvusimportCollection,FieldSchema,DataType# 创建多模态集合fields[FieldSchema(nameid,dtypeDataType.INT64,is_primaryTrue,auto_idTrue),FieldSchema(namecontent_type,dtypeDataType.VARCHAR,max_length20),# text/image/videoFieldSchema(nameoriginal_text,dtypeDataType.VARCHAR,max_length65535),FieldSchema(nameimage_url,dtypeDataType.VARCHAR,max_length1024),FieldSchema(nameembedding,dtypeDataType.FLOAT_VECTOR,dim768),# CLIP 维度]schemaCollectionSchema(fieldsfields)collectionCollection(multimodal,schema)# 插入文本数据text_embeddingencode_text(向量数据库入门教程)collection.insert([[text],# content_type[向量数据库入门教程],# original_text[],# image_url[text_embedding.tolist()]])# 插入图片数据image_embeddingencode_image(tutorial_cover.jpg)collection.insert([[image],[],[tutorial_cover.jpg],[image_embedding.tolist()]])Step 3跨模态搜索# 用文本搜索图片collection.load()query_text教程封面图片query_embeddingencode_text(query_text)resultscollection.search(data[query_embedding.tolist()],anns_fieldembedding,param{metric_type:COSINE,params:{ef:128}},limit5,exprcontent_type image,# 只搜图片output_fields[content_type,original_text,image_url])# 用图片搜索文本query_imageencode_image(some_photo.jpg)resultscollection.search(data[query_image.tolist()],anns_fieldembedding,param{metric_type:COSINE,params:{ef:128}},limit5,exprcontent_type text,# 只搜文本output_fields[content_type,original_text]) 多模态搜索应用场景应用场景查询方式检索目标典型案例以图搜图图片 → 图片相似图片淘宝拍照搜同款以文搜图文本 → 图片匹配的图片素材网站搜索以图搜文图片 → 文本图片描述/相关文档图片内容理解跨模态推荐文本 → 图文混合图文内容小红书推荐视频检索文本/图片 → 视频帧视频关键帧视频内容搜索️ 视频搜索架构┌─────────────────────────────────────────────────────────┐ │ 视频向量搜索架构 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 输入视频 │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ 视频抽帧 │ 每秒抽 1 帧 / 关键帧检测 │ │ └──────┬───────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ 帧向量化 │ CLIP 对每帧生成向量 │ │ └──────┬───────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ 视频向量聚合 │ 平均池化 / 最大池化 │ │ │ │ 将 N 帧向量 → 1 个视频向量 │ │ └──────┬───────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ 向量数据库 │ 存储视频向量 元数据 │ │ │ │ (视频URL、时间戳、标签) │ │ └──────────────┘ │ │ │ │ 查询: 找一段日落的海边视频 │ │ → 文本向量化 → 向量搜索 → 返回匹配视频 │ │ │ └─────────────────────────────────────────────────────────┘⚠️ 多模态搜索的坑坑说明解决方案模型选择不同模型的向量空间不兼容同一集合必须用同一模型中文支持原版 CLIP 中文效果差用 Chinese-CLIP图片预处理尺寸、格式不统一统一 resize 到模型要求向量维度不同模态维度可能不同确认模型输出维度一致存储成本图片/视频占空间只存向量URL原始文件存 OSS 本篇核心要点回顾要点说明多模态模型CLIP/Chinese-CLIP 将文本和图片映射到同一空间跨模态搜索可以用文本搜图片也可以用图片搜文本视频搜索抽帧 → 向量化 → 聚合 → 存储中文场景推荐 Chinese-CLIP 或 Jina CLIP v2存储策略向量存数据库原始文件存 OSS下篇预告《Milvus 分布式部署实战从单机到集群的完整踩坑记录 ️》有问题欢迎评论区讨论觉得有用请点赞收藏 作者高炉炼铁智能化技术研究者专注钢铁冶金与人工智能 交叉领域。 如果觉得有帮助请点赞、收藏、转发版权归作者所有未经许可请勿抄袭套用商用(或其它具有利益性行为)。 关注专栏不错过后续精彩内容

相关新闻

麒麟信安亮相2021中国石油石化企业信息技术交流大会 暨油气产业数字化转型高峰论坛

麒麟信安亮相2021中国石油石化企业信息技术交流大会 暨油气产业数字化转型高峰论坛

由中国石油、中国石化、中国海油、中国中化等主办的“2021中国石油石化企业信息技术交流大会暨展示会”于5月12-14日在北京召开。本次会会议主题为“以新发展理念推动数字化转型,助力油气产业高质量发展”,深度探讨企业在数字化转型中面临的共性问题、在…

2026/7/23 17:44:19 阅读更多 →
GLM-5.2 低价冲击:企业开始认真给 Token 算账

GLM-5.2 低价冲击:企业开始认真给 Token 算账

GLM-5.2 把模型竞争拉回成本账,企业将用路由重新分配智能。企业用 AI 的第一阶段,大家关心的是「能不能用」。第二阶段,问题变成「用一次多少钱」。 最近围绕 智谱 GLM-5.2 的讨论,正好踩中了这个切换点。 讨论里最吸引人的不是又…

2026/7/23 17:43:19 阅读更多 →
ARM Cortex-M4低功耗机制:WFI/WFE唤醒原理与PRIMASK中断延迟实战

ARM Cortex-M4低功耗机制:WFI/WFE唤醒原理与PRIMASK中断延迟实战

1. 项目概述:深入ARM Cortex-M4的睡眠与唤醒机制 在嵌入式系统开发,尤其是电池供电或对功耗敏感的设备中,如何让处理器在无事可做时“聪明地”休眠,并在需要时被精准唤醒,是每个开发者必须掌握的核心技能。ARM Cortex-…

2026/7/23 17:43:19 阅读更多 →

最新新闻

AI时代生存指南:小白程序员如何拥抱大模型,抢占未来职业红利(收藏版)

AI时代生存指南:小白程序员如何拥抱大模型,抢占未来职业红利(收藏版)

文章指出AI正在重构各行各业,简单重复性工作面临被替代风险,但高端岗位因依赖复杂判断和决策得以保留。多数人因侥幸心理、路径依赖和认知偏差陷入被动焦虑,但“人工智能”正催生新职业、重塑现有岗位、变革工作形态,为就业开辟新…

2026/7/23 18:00:23 阅读更多 →
必收藏!程序员小白看懂思科9万人配AI Agent,2026年企业AI转型加速!

必收藏!程序员小白看懂思科9万人配AI Agent,2026年企业AI转型加速!

思科宣布为9万名员工配备AI Agent,引发企业服务圈震动。此举标志着人类商业史上规模最大的一次企业级AI部署,CFO称其为“有生之年最重要的技术转型”。文章解析思科AI Agent的三大核心设计原则:动态模型路由、自建基础设施和全员覆盖&#xf…

2026/7/23 18:00:23 阅读更多 →
交直流微电网优化:BAS-NSGAⅡ算法应用与Matlab实现

交直流微电网优化:BAS-NSGAⅡ算法应用与Matlab实现

1. 项目背景与核心挑战交直流混合微电网作为新型电力系统的重要组成部分,正在经历从实验室研究到工程应用的转型期。这种同时包含交流母线和直流母线的混合架构,能够高效整合光伏、风电等分布式电源,以及蓄电池、超级电容等储能设备。但在实际…

2026/7/23 18:00:23 阅读更多 →
大模型进阶:从“会回答”到“能完成任务”,小白程序员必备收藏指南!

大模型进阶:从“会回答”到“能完成任务”,小白程序员必备收藏指南!

本文深入解析了从简单聊天模型到大模型驱动的Agent系统的转变,核心在于系统架构的革新而非模型升级。Agent通过循环读取状态、选择工具、执行动作并根据结果决策,实现复杂任务处理。文章详细阐述了Agent的六大核心部件,强调循环在复杂任务中的…

2026/7/23 18:00:23 阅读更多 →
金融大模型问答机器人:SFT与GRPO联合训练实践

金融大模型问答机器人:SFT与GRPO联合训练实践

1. 项目背景与核心问题在金融大模型问答机器人项目中,我们面临一个关键挑战:如何在有限的高质量标注数据下,同时完成监督微调(SFT)和基于策略优化的强化学习(GRPO)训练。传统做法需要分别准备两套数据,这不仅成本高昂,…

2026/7/23 18:00:23 阅读更多 →
2026新手AI写小说入门指南:实操方法+工具推荐(附使用技巧)

2026新手AI写小说入门指南:实操方法+工具推荐(附使用技巧)

不少人心里都藏着写小说的念头:脑海里有鲜活的角色、曲折的剧情,可真要打开文档落笔,却处处卡壳——世界观怎么构建才不会前后矛盾?人物怎么塑造才不会单薄扁平?剧情怎么推进才不会拖沓平淡? 很多新手就困…

2026/7/23 17:59:23 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻