cross-video-qa
Installation
SKILL.md
跨视频问答
用户想知道的是「讲过没有、在哪讲的、怎么讲的」。答案的价值在出处:每一条说法都要能让用户回到那部视频的那一刻去核对。找不到就说找不到,不拿常识或猜测补。
1. 想清楚要找什么
- 把问题改写成一两句检索句:说的是什么事,而不是用户原话里的口头词。换一种说法再写一句(同义词、行话与大白话、另一种语言的说法),两句分别检索,覆盖不同的讲法。
- 用户限定了范围(某个项目、某几部视频)时带上
projectId、videoIds。问某个说话人说过什么时,检索没有说话人筛选:照常检索,再看命中的speaker与上下文对不对得上。
2. 检索
- 用
space_search_v2检索(mode用默认的 hybrid;kinds先给["speech"]找原话,原话不够再放开到字幕与译文)。一句检索一次,limit取 20 左右;两句检索的命中按hitId合并,同一部视频同一段时间的算一条。第一页都相关、还有nextCursor时,传回cursor再取一页。 - 读结果的
effectiveMode、degraded与coverage:effectiveMode是 lexical 且带degraded.reason时,这台机器没有可用的语义索引,只按字面找了:字面检索要每个词都出现,改用两三个关键词(不是整句)再检一次;换了说法的内容找不到,回答里要说明。- 工具报
SEMANTIC_UNAVAILABLE时语义检索还没就绪:改用space_search按关键词找,回答里说明。 degraded.reason为INDEX_PARTIAL(knownScopeComplete为 false)时,有视频还没进索引,结果可能不全,回答里要说明;missingInput是没有文稿的视频(按讲话找不到),excluded是用户在设置里没纳入语义索引的项目(只按字面找过)。需要时用space_index_status看是哪几部。
- 证据类别是 summary(章节标题与摘要)的命中只用来知道「哪一段可能讲了」,不能当原话引用;要引用时在那一段里再找讲话原话。
weak的命中只是按意思勉强沾边:先读原文确认真的在讲这件事再用;全部是 weak 时多半没有答案,照「没找到」处理。