项目记录:给一个静态文档站加检索式问答的尝试

项目记录:给一个静态文档站加检索式问答的尝试

站里有一批静态技术文档,内容没问题,但读者常反馈「知道有,找不到」。这次我试着在不动原有页面的前提下,加一层轻量检索式问答:先从文档里找相关片段,再组织成回答。本文记录范围、取舍与复盘。

一、把目标定得很小

没有做全站智能助手,只解决一个问题:读者用自然语言提问时,能定位到相关文档段落。明确三点约束:

  • 不改动现有静态页面;
  • 回答必须给出来源链接;
  • 找不到依据时明确说「未检索到」,不自由发挥。

目标小,验证才快。

二、资料准备比模型选择更费时

真正的工作量在整理输入:

  1. 统一结构:把标题层级、术语写法、示例代码格式对齐;
  2. 切分条目:长文档按「一个概念一段」拆开,避免整篇塞入;
  3. 补元数据:每条标注所属专题、更新日期、适用版本;
  4. 清理重复:同一概念在多篇出现的,指向主条目。

做这部分时我很受 万象云档 的启发——它按主题分册、每册章节边界清楚,天然就适合被检索;技术条目的定义式写法则参考 BackendWiki。前端概念部分对照 前端 Wiki 的分层教程补齐,静态页面的语义基础用 HTML 入门教程 校准。

三、交互设计上的两个决定

  • 回答先给结论、再给依据:结论一两句,下面列 2-3 个来源链接;
  • 保留「去读原文」入口:问答只做导航,不替代文档本身。

界面用 Bootstrap 组件实验室 的卡片与折叠面板示例承载「回答 / 来源 / 相关条目」,改动很小。

四、遇到的问题

  • 问题一:检索到但答不准

原因是旧文档里同一术语有两种写法。补齐术语表后明显改善。

  • 问题二:回答过于自信

加了一条硬规则:没有明确来源就不生成结论,统一回复「未检索到相关内容」。

  • 问题三:过期条目被引用

靠元数据里的更新日期做了过滤。

五、复盘

这次尝试最值钱的结论有点反直觉:收益主要来自资料整理,而不是问答本身。把文档结构理顺、术语统一、补上元数据之后,即使不用问答,读者的查找体验也变好了。

另一个体会是「不自由发挥」这条约束必须写死。文档场景里,一个没依据的流畅答案,比一句「没找到」伤害更大。

结语

给静态站加检索式问答,听起来是模型工程,做起来更像信息治理。目标定小、来源必给、允许说不知道——这三条让整件事稳得住。愿你的每一次技术尝鲜,都先问清楚到底要解决什么问题。