14 — 知识库与 RAG

Vocal10n 在三处使用领域知识:

  1. STT 术语文件:将术语注入 Whisper initial_prompt,提升领域词识别率。
  2. 翻译词汇表 / Corrector:在翻译前替换或规范源文本术语。
  3. 幻觉过滤列表:丢弃已知错误的 Whisper 输出。

三者都可在 KB 页vocal10n.ui.tabs.kb_tab)统一管理。

STT 术语文件

来源:vocal10n.stt.filters + 组件 term_file_list.py

  • 文件位于 stt_terms/(如 context_gaming.txt)。
  • 每行一个术语,# 可写注释。
  • 可同时选择多个文件,取并集后注入 initial_prompt,并受 stt.initial_prompt_capacity(默认 200)限制。
  • KB 页支持拖拽添加、当前文件内联编辑、容量占用显示(提交 6a45a0c)。

另有音素索引文件(也在 stt_terms/)供识别后音素纠错使用。

翻译词汇表

来源:vocal10n.llm.corrector + vocal10n.llm.rag

  • 默认文件:knowledge_base/glossary_general.txt
  • 格式:每行一项,key = canonical translationkey -> canonical(两种都支持)。
  • 行为:
    • 小词表(条目数 ≤ translation.rag_threshold,默认 100):完整词表直接内嵌到 prompt。
    • 大词表rag.py 用本地 embedding 建索引,每次只检索 top-K 相关词条注入(提交 d34045f)。

可从 Translation 页挂载多个知识库,合并后会去重。

过滤列表

config/filters.txt 是 regex/字面短语列表,供幻觉过滤器丢弃命中项。可通过 vocal10n.ui.widgets.filter_list_editor 在应用内编辑(提交 890b782)。常见条目覆盖静音场景 Whisper 的模板幻觉文本。

为什么分开管理

STT 术语与翻译词汇表目标不同:

  • STT 列表用于声学解码偏置,确保术语先被识别出来。列表应保持较短,避免 prompt 污染。
  • 翻译词汇表用于目标语规范化,可更大规模,这也是引入 RAG 的主要场景。

将两者分离可独立调参互不干扰,KB 页负责统一展示和操作入口。