长文里的专业术语,为什么不能一次 LLM 抽完
「召回率」「混合检索」「reranker」反复出现,读者想点词看解释。有谷用 Mention → Concept → Definition 三层模型,离线抽取、在线 Popover,解释可审计、可复用。
读一篇 RAG 工程长文,「召回率」「向量索引」「混合检索」「reranker」反复出现。理想状态:读者点到这些词,立刻看到基于本文语境的解释;下一篇文档遇到同一个概念,解释一致;编辑改了定义,知道会影响哪些页面。
最直觉的实现:全文丢给大模型,返回一张「术语—释义」表。演示很好看,第二篇文档就开始出问题——recall 可能是检索指标也可能是「回忆」;同一个 reranker 被抽出三次、写出三种定义;没有证据链,Popover 不知道标在哪个位置。
术语系统不是一次 LLM 抽取,而是一条持续的知识生产链。
三层模型:别把三件事挤在一张表里
| 层 | 是什么 | 例子 |
|---|---|---|
| Mention | 词面在文档某处的一次出现 | 第 6 章第二段的 reranker |
| Concept | 跨文档共享的规范概念身份 | concept:information-retrieval/reranker |
| Definition | 面向某受众、某时间点的解释版本 | 「面向后端工程师的中文短定义」 |
此外还有 Context Note — 只解释这一次 Mention 在当前段落里的特殊含义,不污染全局定义。比如「混合检索」的通用定义是「组合关键词与语义检索」;但在第 7 章可能特指「BM25 与向量各取 Top-50 再 RRF 融合」——后者写进 Context Note,不写进跨文档 Definition。
这带来直接收益:抽取器升级只重算 Mention;消歧规则升级只重算 Link Decision;定义改版只发布 Definition Revision;前端换 Popover 样式不必重跑 NLP。
为什么「一次返回词表」不够
一次 LLM 调用至少混淆五类决策:是不是术语、出现在哪里、属于哪个概念、解释怎么写、是否值得展示。任一步错了,都不知道该修 Prompt、检索还是界面。
直接词表还有三个工程死角:
- 无法增量更新 — 正文改一段,只能重抽整篇
- 无法复用与纠错 — 多篇文章的「混合检索」不知道是同概念还是别名
- 无法安全渲染 — 只有字符串,没有稳定块锚点,容易标错位置或破坏 DOM
LLM 应当是候选生产者和解释草拟者,不是最终权威。
离线处理 vs 在线阅读
系统分成两个边界清楚的平面:
离线文档处理 — 结构切分、候选发现、价值精排、实体链接、定义草拟、人工审校。允许慢、允许重试,同一文档版本应得到可比较、可复现的结果。
在线阅读平面 — 根据 documentVersion + blockId 拉取已发布 Annotation,客户端解析 quote selector,展示 Popover。不现场调 LLM,也不把草稿定义交给读者。
两者通过 published_release_id 隔离:新模型跑出的结果先进候选集,审校通过后再原子切换。处理任务失败不会拖慢文章首屏,也不会让同一页面刷新两次出现不同解释。
结构感知切分:术语抽取的上游
按固定 2000 字切分会把标题和正文、术语和定义拆开。术语流水线先做结构感知切分——保留章节路径、块类型、列表层级,再在块边界上组窗口。
位置回填分两步:模型输出窗口内原文 quote;系统在未改写的源块中精确匹配,无法唯一定位就进低置信队列,不让模型猜全局坐标。
关键约定:抽取、生成 Selector 和浏览器解析共用同一份 annotationText 序列化——解析标签、合并空白、排除非正文节点。否则同一段内容即使没改字,也会因标签或空白不同而锚定失败。
候选发现:多路召回,统一精排
没有一种方法同时覆盖已知术语、长尾新词、缩写和歧义。生产链用多路召回:
- 词典匹配 — 已知 Alias,精确便宜,漏新词
- 规则与统计 — 「X 是指」「简称为」、TF-IDF 等,可解释但易误选
- NER 与 embedding — 扩大语义候选,不代表已链接成功
- LLM 发现 — 找隐含定义和跨句别名,必须返回原文 quote
合并时保留各路来源;词典命中可作链接先验,LLM 理由供审阅,但都不能单独证明「值得展示且已链接」。
价值精排:不是专业词越多越好
Popover 会打断阅读。给「系统」「数据」「结果」全加解释,既制造噪声,也让真正困难的词失去辨识度。
价值精排从领域性、解释收益、复用潜力、歧义风险四个维度打分,设阈值过滤——「检索」可能不展示,「混合检索」和首次出现的「RRF」才展示。原则是少而有用:每屏有限数量、关键处出现、读者可关闭。
实体链接:名字像只是第一票
对 Mention index,候选可能有「数据库索引」「向量索引」「书末索引」。链接打分综合词面相似、上下文、文档主题、历史先验和同段 coherence;明显矛盾则扣票。最高分不够高或与第二名差距太小,进人工队列或标记 NIL——宁可暂不链接,也不链错概念。
和有谷大脑产品链的关系
术语 Popover 是「读」侧的增强,和入库、问答形成闭环:
- 入库 — PDF、Excel 等格式切出结构块,术语锚定在
blockId上 - 阅读 — 分块渲染 + 稳定 Selector,Popover 不破坏划线锚点
- 问答 — Agent 检索 chunk 作答;术语库帮助读者在读之前或读之中建立概念,减少误读
对企业知识库来说,术语层解决的是「同一概念在不同文档里怎么说、怎么解释、怎么治理」——这是 RAG 回答「对不对」之外的另一维度:读者能不能读懂检索到的原文。