在全球黑胶市场连续 19 年增长、中国实体唱片消费加速复兴的浪潮下,一款名为 UNHEARD 的 App 正在成为百万唱片爱好者的数字入口。依托阿里云 OSS 向量 Bucket 与百炼多模态 Embedding 模型,UNHEARD 构建了“以图搜碟”智能检索系统——拍一张唱片封面,专辑信息即刻呈现。
黑胶复兴时代,唱片爱好者的“甜蜜烦恼”
截至 2025 年,作为全球第四大音乐消费市场,中国也正在迎来后流媒体时代的音乐消费新热潮——越来越多人走进唱片店,翻找那些“未曾听闻”的黑胶唱片。
然而,对于真正沉浸于唱片世界的收藏者而言,热情背后始终伴随着几个挥之不去的痛点。
- 信息密度极高,搜索门槛居高不下。 唱片领域的知识体系极为专业,例如古典唱片信息结构复杂,用传统关键字搜索,输入长、易出错、检索精度低。
- 版本体系庞杂,识别成本高昂。 面对千万级发行版本,仅靠文字难以精准定位不同唱片的年份、国家、介质等具体版本。
- 碎片化信息,缺少统一入口。国内缺乏权威的实体唱片综合信息平台,价格参考与版本对比高度依赖社群经验。
正是在这样的背景下,UNHEARD 应运而生。
UNHEARD:唱片爱好者的数字百科
UNHEARD 是一款专注于服务实体唱片爱好者的收藏管理工具与内容社区,由北京歌尔丹拿科技有限公司打造。与主流音乐媒体平台不同,UNHEARD 不主打“听”,而是围绕实体唱片的发现、识别、管理、交流与交易构建完整生态。其核心用户画像是在 25 至 45 岁,他们深究版本、在意音质,愿意为好内容的稀缺性与精神共鸣支付溢价。
UNHEARD 的核心功能围绕四大场景展开:
1、一拍识碟。 拍封面、扫条码,唱片信息一拍即得。这是 UNHEARD 最具标志性的功能,也是用户日常使用频率最高的入口。打开 App 拍一张封面,即可获得完整的唱片信息、版本历史和社区评价。
2、海量唱片数据库。 平台收录了近 1600 万张发行专辑、250 万个母带以及近 1000 万条艺术家信息,数据维度覆盖作品、艺术家、厂牌、发行年份、介质类型等,支持多维度的精准检索。
3、唱片店地图与线下连接。 全国已有超过 70 家唱片店入驻,覆盖 23 个省 36 个城市。同时,与全国超过 200 家唱片店、市集、主办方等深度联动,将数字用户重新引流回实体空间,重建线下音乐交流场景。
4、垂直音乐社区。 精品专栏、唱片点评、社区热榜,为唱片爱好者打造了一个纯粹、专业的交流空间。
一拍识碟背后的技术密码:阿里云 OSS 向量 Bucket
UNHEARD 最让用户惊艳的功能——“一拍识碟”,其背后正是阿里云 OSS 向量 Bucket 在提供核心支撑。
场景拆解:从“拍照”到“识碟”的毫秒级响应
当用户在 UNHEARD App 中对着一张唱片封面按下快门,一次完整的智能检索在瞬间完成:
- 图片上传与预处理: 上传并优化封面图片,确保检索效率与精度。
- 多模态向量化: 服务端调用阿里云百炼平台的多模态 Embedding 模型,深度理解图像视觉语义并转化为高维向量。
- 向量存储与检索: 转化后的向量数据存储在阿里云 OSS 向量 Bucket 中。OSS 向量 Bucket 是阿里云对象存储 OSS 推出的全新能力,无需客户额外搭建和维护独立的向量数据库。
- 结果关联与呈现: 将检索结果与后端元数据匹配,向用户展示完整的唱片信息、版本列表及社区评价。
为什么选择 OSS 向量 Bucket?
对于 UNHEARD 团队而言,选择 OSS 向量 Bucket 有着清晰的业务逻辑:
1、业务初创阶段,成本与效率优先。 UNHEARD 需要一个能够快速上线、弹性扩展且运维成本可控的向量存储方案。OSS 向量 Bucket 作为 OSS 的原生能力,无需额外部署独立的向量数据库集群,直接复用已有的 OSS 存储基础设施,大幅降低了架构复杂度和运营成本。
2、千万级数据规模,需要稳定可靠的底座。 平台当前已累计数千万行向量数据,且每月以数十万行规模增长。OSS 向量 Bucket 天然继承了 OSS 的高可用、高持久和弹性扩展特性,能够从容应对数据量的持续增长。
3、与 AI 生态无缝衔接。 与阿里云百炼同属一个生态,打通“模型调用-数据存储”全链路,减少了跨系统集成成本。
UNHEARD 用 AI 技术降低了唱片发现的门槛,以向量检索简化了繁琐的文字输入,用数字化工具重新连接了实体唱片与爱好者。阿里云 OSS 向量 Bucket 则为这一愿景提供了一个轻量、高效、可弹性拓展的技术底座。这或许就是 AI 时代理想的技术叙事:技术并非为了替代人的热情,而是让热爱更容易被点燃。
OSS 向量 Bucket 最佳实践:快速构建多模态图片语义检索
OSS 向量 Bucket 用于存储、查询和管理向量数据,基于向量 Bucket 和阿里云大模型服务平台百炼的多模态 Embedding 模型,可以搭建海量图片的智能语义检索系统,实现基于自然语言描述的文搜图能力的最佳实践,适用于电商商品搜索、智能相册、媒体资产管理、AI 语义检索、图片知识库等场景。
使用命令行工具 ossutil 2.0 在多种操作系统中高效管理阿里云对象存储 OSS 资源,向量 Bucket 级命令提供对 OSS 向量 Bucket 的 API 的直接访问,适合开发者、运维人员和企业进行大规模数据迁移和日常运维操作。
Step 1: 创建向量 Bucket & 向量索引
创建向量 Bucket
ossutil vectors-api put-vector-bucket \ --bucket <VECTOR_BUCKET> \ --account-id <ACCOUNT_ID> \ --region cn-beijing
创建向量索引
ossutil vectors-api put-vector-index \ --bucket <VECTOR_BUCKET> \ --index-name <INDEX_NAME> \ --dimension 1024 \ --data-type float32 \ --distance-metric cosine \ --account-id <ACCOUNT_ID> \ --region cn-beijing
Step 2: 生成图片预签名 URL(私有 Bucket 必选)
如果 Bucket 的 ACL 为 private(默认),百炼 API 无法直接访问图片,需要先生成预签名 URL:
ossutil presign oss://<SOURCE_BUCKET>/example.jpg \ -e oss-cn-beijing.aliyuncs.com \ --expires-duration 1h
输出示例:
https://<SOURCE_BUCKET>.oss-cn-beijing.aliyuncs.com/example.jpg?x-oss-credential=...&x-oss-date=...&x-oss-expires=3600&x-oss-signature=...&x-oss-signature-version=OSS4-HMAC-SHA256
批量生成:
ossutil presign oss://<SOURCE_BUCKET>/ -r \ --include "*.jpg" --include "*.webp" \ --expires-duration 1h
Step 3: 调用百炼多模态 Embedding 模型
使用百炼 API 将图片转换为 1024 维向量(模型名:multimodal-embedding-one-peace-v1):
curl -X POST "https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding-v1" \ -H "Authorization: Bearer <DASHSCOPE_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "model": "multimodal-embedding-one-peace-v1", "input": { "image_url": "<PRESIGNED_URL>" } }'
响应中 output.embedding 字段即为 1024 维向量数据。
Step 4: 向量写入
将向量数据写入向量索引。支持 JSON 文件批量写入:
vectors.json 格式:
[ { "data": { "float32": [0.123, -0.456, ...] }, "key": "example.jpg", "metadata": { "source_bucket": ["<SOURCE_BUCKET>"], "image_name": ["example.jpg"] } } ]
写入命令:
ossutil vectors-api put-vectors \ --bucket <VECTOR_BUCKET> \ --index-name <INDEX_NAME> \ --vectors file://vectors.json \ --account-id <ACCOUNT_ID> \ --region cn-beijing 提示: --vectors 支持内联 JSON 或 file:// 前缀读取文件。单次写入建议不超过 10 条。
Step 5: 语义检索
# 用获取的向量执行近邻检索(内联 JSON 方式) QUERY_VECTOR='{"float32":[0.0284,-0.0284,...]}' ossutil vectors-api query-vectors \ --bucket <VECTOR_BUCKET> --index-name <INDEX_NAME> \ --query-vector "$QUERY_VECTOR" \ --top-k 10 --return-distance --return-metadata \ --account-id <ACCOUNT_ID> --region cn-beijing # 列出所有向量 ossutil vectors-api list-vectors \ --bucket <VECTOR_BUCKET> \ --index-name <INDEX_NAME> \ --account-id <ACCOUNT_ID> \ --region cn-beijing # 查询特定向量 ossutil vectors-api get-vectors \ --bucket <VECTOR_BUCKET> \ --index-name <INDEX_NAME> \ --keys example.jpg \ --return-data \ --return-metadata \ --account-id <ACCOUNT_ID> \ --region cn-beijing