4c2b147793458be6c795c58de4f85e6a7f95adbb
问题(客户实测反馈):同一会话里问「季季盈90天起投多少」和「那它风险高吗」,两次回答 **一模一样**——都是整个产品小节的表格。客户问的是风险,收到的是整张说明书,看起来像 客服没听懂问题。 根因是切分粒度:原来"一个叶子标题 = 一块",产品手册里就是整个产品小节(表格 + 说明) 成一块。这既让两个不同的问题命中同一块,也让整节几百字的向量成了"整节的混合语义", 与"起投多少"这种具体小问题相似度天然偏低(实测该问句向量 top1 仅 0.6291,够不到 0.75 硬门槛,只能靠与次优的差值勉强通过)。 改动三处: 1. 切分:Markdown 表格的每一行额外生成一个**自解释**的小块("南方季季盈90天:起投金额 1万元"),挂在父块 doc_id 下(PROD-007-04),父块照旧保留。知识块 160 → 631。 效果:该问句的命中分从 0.6291 升到 0.869,命中的正是"起投金额"那一行。 2. 检索:命中行级子块时把它的整节父块一并带回(分数按 0.9 折算),供调用方按问句选粒度。 整节块保底占最后一个名额,且不参与 top1/top2 判定——实测它挤到第 2 位会把 gap 从 0.090 压到 0.076,几乎跌破 0.07 的转人工门槛。 3. 客服:命中的是行级子块时,看问句与子块标签是否真的对得上——「起投多少」对「起投金额」 对得上,用那一行;「介绍一下」对不上,换成整节。 过程中两次判据写错并已修正(都固化进了测试):用"含连字符"认子块时,整节块自己的编号 PROD-901 被误判成子块;用"不含两位数字后缀"认整节块时,FAQ 块全被误判成整节块排到后面, 把正确答案挤出 top1、害得「基金赎回几天到账」转人工。 验证:起投/管理费等字段问法给出聚焦的单行答案;"介绍一下"给出整节;FAQ 与政策问法不受 影响(换话题、指代追问等此前修好的场景复测通过); ruff / mypy(113 文件) / 468 unit+contract / 29 integration 全绿。
Description
番茄炒蛋组
18 MiB
Languages
Python
99.9%