feat(knowledge): 为 C1-C5 各补一条「能买什么产品」的问答

客户实测反馈:「C1 客户能买什么」被引导到人工客服,而知识库里其实有答案。
实测分数:这条问句 top1 只有 0.5633、与次优差 0.0236(低于 0.07 门槛)→ 转人工;
而「C1 保守型客户可以买哪些风险等级的产品」是 0.7794,过了 0.75 硬门槛、能答。
根因是客户与知识库的用词鸿沟:客户说「C1 客户」,知识块标题写的是「C1 保守型」。
短问法少了"保守型"这个锚点就差 0.19 分——而客户不知道 C1 就等于保守型,这正是他要问的。

按 A 方案(数据问题用数据解决)为 C1-C5 各补一条 FAQ,答案全部取自
《个人投资者适当性管理指南》原文,不自行编写:
- 第十二条投资者与产品匹配矩阵(各级别可购买的产品风险等级)
- 第十四条硬匹配规则的跨级禁止要求
- 第十五条豁免规则(C3 买 R4、C4 买 R5 的签署揭示书与持仓上限)

知识块 631 → 636。同时修正 load 脚本自检里过时的期望:这句话现在命中 FAQ 而非
POL-AST(两者是同一份内容,只是 FAQ 的问句措辞更接近客户口语)。

验证:C1-C5 六个等级的「能买什么」问法全部直接回答、无一转人工;
ruff / mypy / 468 unit+contract 全绿。
This commit is contained in:
2026-09-10 22:34:20 +08:00
parent a7135d2549
commit 7b3a72860c
3 changed files with 15 additions and 2 deletions
+4 -1
View File
@@ -37,7 +37,10 @@ COLLECTIONS = ["fin_faq_collection", "fin_product_collection", "fin_policy_colle
# 检索自检用例:(自然语言问题, 期望命中的 doc_id 前缀)
CHECKS = [
("基金赎回到账需要多长时间", "FAQ-0016"),
("C1 保守型客户可以买哪些风险等级的产品", "POL-AST"),
# 分等级的「能买什么」现在由 FAQ 承接(与 POL-AST 的匹配矩阵是同一份内容,
# 但 FAQ 的问句措辞更接近客户口语,所以问这句话时 FAQ 会排在前面)。
("C1 保守型客户可以买哪些风险等级的产品", "FAQ"),
("C1 客户能买什么", "FAQ"),
("南方季季盈90天的起投金额是多少", "PROD"),
("开户需要准备哪些材料", "FAQ-0021"),
("业绩比较基准是什么意思", "FAQ-0019"),