assetLibrary
静态图解 · 全部数据为 MOCK
ASSET → DATA → INDEX → SEARCH

素材怎么进来,
搜索怎么找到它。

跟着两条示例数据,看懂整个过程。

5张业务表
2路检索
8位对外 ID
MAP 01 / 04

先登记,再异步建索引

原文件留在源系统;这里只登记引用。

两个输入 → 一条处理管线
图片 A视频 B对外短 ID
图片 ASOZAI
file_id: N4q8R2s6.jpg
titlenull
tags[]
视频 BIGNIS
file_id: X7b2Lm.mp4
一群人在甲板排队
甲板排队

① 业务登记

保存来源 · 归属 · 权限
assetsasset_sourcesasset_mappingsasset_accessusers
图片UUID A1
视频UUID A2

② 任务可靠接收

后台继续内容理解
与索引构建
✓ ACCEPTED

登记成功

c8a2t7m4v6p3k9d2返回短 ID
无需等待索引完成
异步分支:内容理解 → 关键词 / 语义向量继续看图 03 ↘
MAP 02 / 04

一条素材,写成一行数据

绿格是登记写入;紫格是 Gemini 后续回填。

INCOMING ASSET

传入一条图片素材

来源sozai
file_idN4q8R2s6.jpg
titlenull
tags[]
来源解析:image · 800 × 800(mock)
身份上下文:U1 · 个人可见

assets

素材表
1 条素材 / 1 行
idasset_iduser_idmedia_typebusiness_typegenerated_title
A1c8a2t7m4U1imagematerial小猫歪头照片null → 异步补齐
A1 同一条记录的其他列
descriptiongenerated_tagsmetadata
小猫歪头看向镜头,
背景为白色。
小猫歪头白底{ "width": 800,
"height": 800 }
↔ 横向滑动表格,查看全部列
登记时写入Gemini 异步回填
同一条记录 · 不是新增第二行
A1 / S1 / U1 是内部 UUID 简写;本图仅展示关键列。内部 A1 = point.id  对外 c8a2t7m4
MAP 03 / 04

两条路径,最后都有两套向量

先理解内容,再把文字变成向量;数值与柱形均为示意。

现有文字Gemini → 写回关系库文字 → 双路编码Qdrant
图片 A · 没有标题和标签
01 · 现有文字
titlenull
tags[]
先保存关系记录
暂无 point
图片 → 内容理解

标题:小猫歪头照片

description
小猫歪头看向镜头,背景为白色。
小猫歪头白底
keyword_sparse标题 / 描述 / tags → 分词[101: 1.0, 104: 0.8, …]
semantic_dense内容描述 → text embedding[0.12, −0.08, 0.43, …]
point.idUUID A1
keyword_sparse
semantic_dense
一张图片一个 point
视频 B · 有标题与标签
01 · 现有文字

一群人在甲板排队

甲板排队
已有文字可先搜
A2 → keyword_sparse ✓
视频 + 音轨 → 内容理解

保留原标题

description
人物在甲板上依次排队等待。
人物游戏甲板排队
keyword_sparse标题 / 描述 / tags → 分词[201: 1.0, 202: 1.2, …]
semantic_dense内容描述 → text embedding[−0.20, 0.69, 0.34, …]
point.idUUID A2
keyword_sparse
semantic_dense
整条视频一个 point
同一个 point 的标量payload · 图片 A
asset_idc8a2t7m4user_idU1source_systemsozaispace_idnullmedia_typeimagebusiness_typematerial