上周帮朋友的游戏团队看素材管理方案,他们的痛点让我很有共鸣:库里十万条广告视频,找一个"角色被手指弹飞"的片段,翻了半小时没找到,最后重新拍了一条。
刚好看到 JoyCastle(乐堡互娱)跟亚马逊云科技合作的案例,用 Amazon Nova Multimodal Embeddings 解决了这个问题。拆解一下方案。
素材库变成"素材沼泽"
做过游戏广告投放的都知道,素材是命根子。JoyCastle 作为一家全球化移动游戏公司,日下载量超百万,全球玩家过亿。每月新增数千条广告视频,库里已经堆了超过十万条素材。
问题来了:找素材比做素材还慢。
传统的管理方式就是人工打标签+关键词搜索。标签是运营同事一条一条手动标的,标准不统一,搜索也只能匹配关键词。你搜"角色被手指弹飞",系统直接懵了------因为没人打过这种标签。
更要命的是跨模态检索。创意同事手里有一张参考图,想找风格类似的视频片段,传统系统压根不支持。结果就是大量优质素材沉在文件夹里,团队宁可重新拍也不愿意翻找。
Amazon Nova Multimodal Embeddings:统一向量空间
JoyCastle 跟亚马逊云科技游戏行业解决方案团队合作,基于 Amazon Nova Multimodal Embeddings 搭了一套智能素材管理系统。
核心思路:把文本、图片、视频、音频全部映射到同一个语义向量空间,实现跨模态语义搜索。
跟传统方案对比一下:
| 对比维度 | 人工标签+关键词 | LLM自动打标 | Nova Multimodal Embeddings |
|---|---|---|---|
| 标注成本 | 高(纯人工) | 中(需定义Prompt) | 低(无需标注) |
| 搜索灵活性 | 受限于预定义标签 | 受限于预定义Prompt | 支持任意自然语言查询 |
| 跨模态搜索 | 不支持 | 不支持 | 原生支持文本↔图片↔视频↔音频 |
| 实时性 | 依赖标签完整性 | 批处理,延迟高 | 毫秒级向量检索 |
| 可扩展性 | 线性增长 | 推理成本高 | 一次Embedding,长期复用 |
Nova Multimodal Embeddings 有个杀手级特性:视频智能分段(Segmented Embedding)。它能自动把长视频切成 1-30 秒的片段,每个片段独立生成向量。这跟广告素材的使用方式天然匹配------创意团队要的从来不是整条视频,而是其中某个 5 秒的精彩片段。
架构拆解
整个系统基于亚马逊云科技的 GMM(Gaming Material Manager)方案,核心组件:
- Amazon Bedrock:提供 Nova Multimodal Embeddings 模型访问,支持同步和异步调用
- Amazon OpenSearch Service:向量数据库,HNSW 索引 + 毫秒级 KNN 检索
- Amazon Lambda:无服务器计算,处理 Embedding 生成和搜索请求
- Amazon S3:存储原始素材文件
- Amazon SQS + DynamoDB:异步任务编排与状态追踪
两条核心工作流:
素材入库:素材上传 S3 → Lambda 触发 → Bedrock 生成 Embedding → 存入 OpenSearch
素材检索:用户输入(文本/图片/视频/音频)→ Bedrock 生成查询向量 → OpenSearch KNN 搜索 → 返回相似素材+时间戳
向量维度怎么选
Nova Multimodal Embeddings 基于 Matryoshka Representation Learning(MRL)训练,提供四种维度:
| 维度 | 英文精度 | 中文精度 | 适用场景 |
|---|---|---|---|
| 3072 | 89.3 | 78.2 | 对检索质量要求极高的核心场景 |
| 1024 | 85.7 | 68.3 | 大多数业务场景(推荐) |
| 384 | --- | --- | 大规模部署、延迟敏感 |
| 256 | --- | --- | 成本优化极端场景 |
JoyCastle 的实践建议:广告素材场景用 SEGMENTED_EMBEDDING 模式 + 5 秒分段长度 + 1024 维度,精度和成本平衡点刚刚好。
多模态搜索怎么用
系统支持这些搜索方式:
- 文搜视频/图片/音频:输入"角色被手指弹飞的画面",语义匹配而非关键词匹配
- 以图搜图/视频:上传参考图,找视觉风格相似的素材
- 以视频搜视频:上传一段片段,找内容或风格相近的其他素材
- 以音搜索:通过音频特征检索相似素材
所有模态映射到统一向量空间------"赛车"这个文本描述会在语义空间中跟包含赛车画面的视频自然靠近。
搜索结果精确到视频片段级别,返回具体的起止时间戳和相似度评分。支持 AUDIO_VIDEO_COMBINED 模式,同时理解画面内容和音频信息。
实测效果
基于 170 个游戏广告素材(130 条视频 + 40 张图片)测试:
- 96.7% 召回成功率------目标内容被成功检索到
- 73.3% 高精度召回------目标出现在 Top 2 结果中
- 跨语言能力------中文查询 78.2 分,英文查询 89.3 分(3072 维度)
代码示例:快速上手
python
import boto3
import json
# 初始化 Bedrock Runtime 客户端
bedrock = boto3.client('bedrock-runtime', region_name='us-east-1')
# 文本生成 Embedding
def get_text_embedding(text, dimension=1024):
response = bedrock.invoke_model(
modelId='amazon.nova-embed-multimodal-v1:0',
body=json.dumps({
"inputText": text,
"embeddingConfig": {
"outputEmbeddingLength": dimension
}
})
)
result = json.loads(response['body'].read())
return result['embedding']
# 视频分段 Embedding(异步)
def get_video_segment_embedding(s3_uri, segment_seconds=5):
response = bedrock.start_async_invoke(
modelId='amazon.nova-embed-multimodal-v1:0',
modelInput={
"inputVideo": {"s3Uri": s3_uri},
"embeddingConfig": {
"outputEmbeddingLength": 1024,
"videoEmbeddingConfig": {
"embeddingType": "SEGMENTED_EMBEDDING",
"segmentLengthInSec": segment_seconds
}
}
},
outputDataConfig={"s3OutputDataConfig": {"s3Uri": "s3://your-bucket/output/"}}
)
return response['invocationArn']
# 使用示例
embedding = get_text_embedding("角色被手指弹飞的画面")
print(f"向量维度: {len(embedding)}")
python
# OpenSearch KNN 搜索
from opensearchpy import OpenSearch
client = OpenSearch(
hosts=[{'host': 'your-domain.us-east-1.es.amazonaws.com', 'port': 443}],
use_ssl=True
)
def search_similar(query_vector, top_k=10):
body = {
"size": top_k,
"query": {
"knn": {
"embedding_vector": {
"vector": query_vector,
"k": top_k
}
}
}
}
response = client.search(index="media-assets", body=body)
return response['hits']['hits']
# 搜索与查询语义相似的素材
results = search_similar(embedding)
for hit in results:
print(f"素材: {hit['_source']['filename']}, "
f"相似度: {hit['_score']:.4f}, "
f"时间段: {hit['_source'].get('start_time', 'N/A')}-{hit['_source'].get('end_time', 'N/A')}")
从搜索到全链路智能化
JoyCastle 跟亚马逊云科技正在推进下一步:
- 智能切分:结合投放效果数据(转化率、点击率),自动识别高效素材片段
- 自动拼接:用自然语言描述需求,系统自动完成检索→分析→去重→拼接
- 自动投放测试:打通广告创编模块,形成"检索→拼接→投放→反馈→优化"闭环
动手试试
完整源码和部署脚本已开源:
bash
git clone https://github.com/aws-samples/nova-multimodal-embeddings-gmm
cd nova-multimodal-embeddings-gmm
# 按 README 部署
如果你的团队也在为素材管理头疼,这套方案值得试试。特别是游戏、电商、短视频这些素材密集型行业,多模态搜索带来的效率提升是质变级的。
参考:JoyCastle 素材资产智能化之路:基于 Amazon Nova Multimodal Embeddings 的广告素材管理实践