PRD 放进 Dify 了,答的还是不对
最近用 Dify 搭了一个内部知识问答,让产品和研发直接查 PRD 和参数。整篇放进去答不对,答错最多的是模板规则;按模块拆成三五百字、按文档类型打上标签,花了几天,才好一些。拆完以后产品和研发用得挺多,答错这件事也就更要紧了。一段内容脱离原文以后,还能不能把事说清楚。

最近用 Dify 搭了一个内部知识问答助手,给产品和研发自己用。PRD、模板配置规范、模型参数这些分散在飞书里,想找一个答案,经常得先知道它可能在哪篇文档。我想试着把找文件这一步省掉,直接问就能找到对应内容。
开始把整篇文档放进去,结果并不理想。有些回答和问的问题对不上。材料明明有,文件也处理完了,为什么还会这样?
很容易把上传成功当成准备完成。对人来说,一篇文档是连着读的,前面的标题、背景、适用范围,都会影响后面一句话的意思。交给知识库以后,回答时拿到的可能只是其中几段。文件在,不等于需要的那段找到了;找到了,也不等于它单独放在那里就说得清楚。
答错最多的,是模板规则
整篇放进去的时候,答错最多的是模板规则。
模板规则的麻烦在于,它散在好几处。一个模板能用在哪些品类、默认参数是多少、什么情况下不建议用,有的写在 PRD 里,有的写在配置规范里,有的是后来讨论改的,记在另一份文档的某一段。
问一句这个模板适不适合做某类商品,它找到了其中一处,就照着那一处答。答得有根有据,只是那一处不是全部,有时候也不是最新的。
模板规则一答错,照着去配置的人就会配错,后面出来的图不对,再回头找原因,比一开始就问人还费事。
先改的是文档怎么分
后来我按模块手动拆了文档,再按文档类型打上标签,PRD、模板配置规范、参数文档、运营操作说明各是一类。每段控制在大约三百到五百字,整理以后,检索结果比最开始更贴近问题了。
这个长度只是这次用过的处理方式,不是一个普遍适用的参数。真正有用的部分,是开始认真看每一段在说什么,而不是只问一篇文件能不能导进去。
产品资料里本来就有不同用途的内容。有的解释为什么这么设计,有的告诉运营怎么操作,有的记录参数和限制。都和同一个功能有关,回答问题时却未必能互换。问操作步骤,拿出一段方案讨论,可能每个词都相关,实际还是没回答。
标签至少让我能把这些内容分辨开。但加了标签不等于系统一定会按标签筛选。组织资料和配置检索是两步。我不想把这次效果改善完全归给某一个动作,也没有一组足够完整的对照数据,能证明只换标签就提高了多少。
拆了几天,标签按文档类型打
按模块拆文档,前后花了几天。
几天不算长,但它是那种没法并行的活:得一篇篇读,读懂了才知道从哪里切,切完还要看每一段离开原文以后,意思还完不完整。
标签按文档类型打,是因为同样讲一个模板,不同的文档讲的是不同的事。PRD 里是为什么这么设计,配置规范里是具体怎么配,运营操作说明里是用的时候怎么选。问题不同,该找的类型也不同。按类型打标签,至少让我在检查的时候,能看出它找回来的是哪一类。
一段话不能只留下后半句
现在再整理这批文档,我会先检查那些容易被切开的前提。
一段操作说明前面写着仅适用于某个品类,后面才是步骤。模板规则尤其是这样,适用的条件常常写在前面,规则写在后面。检索只带回步骤,回答就可能看着没问题,却用错地方。类似的还有版本说明。讨论中的方案、已经上线的做法、后来改过的规则,都可能用同一组词。只凭关键词相近,把它们一起拿来组织答案,很难指望模型自动知道应该听哪一段。
切分不是把长文变短那么简单。每一小段至少得知道自己属于哪个模块、适用什么条件。遇到只有接着上一段才能理解的句子,就要把必要的背景带上,或者重新整理内容。只追求长度接近,很容易把真正需要连着看的东西拆散。
也不想因此把所有段落都扩得很长。背景太多,操作说明又埋进去了。读完这一段,能不能知道它回答谁的问题、在什么情况下能用,比凑一个固定长度更值得看。
产品和研发用得挺多
拆完以后,产品和研发用得挺多。
用得多,是好事,也是压力。一个只有我在用的工具,答错了,我自己知道;产品和研发都在用,答错一次,可能就有人照着错的答案去做了。
所以常用这件事,让我对答错更在意了。以前觉得差不多就行,现在会想,这个答案要是被研发看到,会不会有人直接照着去改。
答错以后,先看它找到了什么
下次再出错,我会把检查拆开一点。
先看资料里有没有答案。有些问题需要的信息本来就没写下来,反复调整生成指令不会凭空补出正确内容。确认有,再看实际返回的是哪几段。问模板规则答错的时候,我会先看它拿回来的是哪一类文档,是 PRD 还是配置规范。没有找到对应段落,就先查检索这一侧;找对了却答歪了,再看生成时有没有丢条件、混入别的内容。
这样听起来慢一点,但至少不会每次出错都改提示词。把几种问题揉成一个回答不好,很容易一轮改完,好像有所改善,过几天又遇到同样的事情。
我会留一小组真实问题,连着对应原文一起保存。换分段方式、换检索配置以后,用它们重新看一遍。要保留的不只是最后那段回答,还有中间拿到了哪些材料。否则答对一次,也不知道是不是恰好生成得像。
我仍然觉得这个小助手值得做。它把原来藏在文档里的问题暴露出来了。内容没有写清楚,版本没有区分,适用范围靠人记着,平时熟悉的人还能补上,问答助手就没那么容易绕过去。
下次再遇到文档明明有却答不对,先把找回来的那几段展开。先看材料,再看回答。
至于常用能持续多久,我也说不准。工具刚上的时候,大家愿意试;能不能一直用下去,还是看它答得准不准。