OCI SWE · Phone Screen System Design

Oracle 视频上传与搜索:直传、转码、转写和向量索引

把题目的 Video Upload + Search 拆成受限直传、异步处理、文本/向量索引与时间戳回链。

题目重点:把题目的 Video Upload + Search 拆成受限直传、异步处理、文本/向量索引与时间戳回链。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 上传者有权限,视频大小与格式上限由产品约定;训练目标是上传后可按语音内容检索到对应视频时间段。
  • LLM 可用于生成摘要或查询扩展,但原始转写和时间戳是可核对证据;不把生成摘要当唯一索引来源。

解题路线

  1. API 创建上传任务并返回有限时效的受限对象存储直传 URL,客户端分片上传且支持断点续传;服务端校验大小、格式、hash、所有权和病毒扫描。
  2. 上传完成事件进入持久队列,异步转码为可播放分片和缩略图,同时提取音轨做带时间戳的转写;步骤以 jobId 幂等重试,状态从 uploaded 到 processing 到 searchable。
  3. 把视频元数据写数据库,转写片段写全文索引,embedding 写向量索引;每个片段保留 videoId、start/end、语言、版本和权限标签。
  4. 查询先校验访问权限,再做关键词与向量混合召回、排序、去重,结果回链到视频时间段;摘要可附引用,检索不到时不编造片段。
  5. 监控上传失败率、转码积压、索引延迟、搜索点击/命中率、权限过滤错误和存储成本;删除视频要清理源文件、分片、索引和缓存。

手动走一遍

用户上传 2GB 视频,客户端直传对象存储;上传完成后异步转码与转写。转写片段“季度预算”出现在 12:40–12:55,搜索结果跳到该时间段。若 embedding 生成失败,全文检索可先上线,后台重试向量索引。

规模与取舍

日上传 V 个视频、平均大小 S,则原始写入约 O(VS),多码率转码和分片会放大存储;转写/embedding 计算随视频时长与片段数增长。查询时延由索引召回、权限过滤和重排预算决定。

易错点与追问

容易失分的边界

  • 大视频经应用服务器中转,造成带宽瓶颈。
  • 上传成功即标可搜索,但异步转写与索引尚未完成。
  • 只存 embedding 不存原文与时间戳,结果无法解释或跳转。
  • 删除时漏清向量索引,导致搜索泄漏已撤销内容。

继续深挖

  • 视频转码成功、embedding 失败时如何对外显示部分就绪状态?
  • 多语言语音、背景噪音和字幕错字如何影响召回评估?
  • 直播或持续上传时如何做增量索引与近实时搜索?
✓已复制微信号!