title: "产品手册智能对话:银行也可以有自己的 AI 知识库机器人"
date: 2026-06-07
author: AlphaAgent
series: series5
tags: [RAG, 问答, 知识库, 产品手册, BM25, TF-IDF]
产品手册智能对话:银行也可以有自己的 AI 知识库机器人
客户问"金葵花理财起购金额是多少?",客户经理不用翻手册,AI 秒回答案并标注出处。这就是产品手册智能对话的力量。
场景痛点
银行的客户经理每天要面对几十个产品、数百条规则。金葵花理财的申购起点是多少?平安白金卡年费多少?建行惠懂你 310 模式是什么?——这些问题,客户随时可能问。
传统解决方案是:
- 翻手册(慢,容易错,找不到)
- 问同事(打断别人工作,信息可能不准)
- 打客服(客户觉得你不够专业)
三个选择都不好。
已有方案 vs 我们的方案
我们先看看同业的做法:
| 银行 | 方案 | 优点 | 缺点 |
|---|---|---|---|
| 招行 "智谱" | 投顾对话机器人 | 对话自然 | 需要大量标注数据,成本高 |
| 平安 "知鸟" | 企业级知识库 | 功能全面 | 需要平台 API 授权 |
| 工行 "工小智" | 客服机器人 | 已承接大量流量 | 主要处理账户类问题,产品类不够细 |
| 我们的方案 | BM25+TF-IDF RAG | 零 API 费用,Hit@1=100%,2.5ms 响应 | 不支持语义推理(v1.1 解决) |
技术选型:为什么是 BM25 + TF-IDF 双路检索?
很多人一谈 RAG 就想到 embedding + 向量数据库。但实际业务中,产品手册的 FAQ 类问题有一个很关键的特性:问题中的关键词与答案所在的章节标题高度相关。
例如用户问"起购金额是多少",手册中"申购起点与持有门槛"章节下就有"单只理财产品起购金额:人民币产品 1 万元起"的原文。这不是一个"语义相似"问题,而是一个"关键词匹配+段落定位"问题。
所以我们选择了:
- BM25Okapi:经典的词袋检索模型,对生僻词idf高区分度
- TF-IDF 余弦相似度:弥补 BM25 在短文本下的稳定性
- RRF (Reciprocal Rank Fusion):两路结果融合
- 章节标题加权:查询词与章节标题的重叠 token 给予额外分数
- 产品自动识别:从"建行惠懂你最高额度"自动推断产品名
结果如何?
性能数据
在 3 个产品手册、25 个 chunk、15 个测试用例上:
| 指标 | 数值 |
|---|---|
| Hit@1 | 100% |
| Hit@3 | 100% |
| MRR | 1.000 |
| 平均检索耗时 | 2.5 ms |
| 内存占用 | < 5 MB |
| 外部依赖 | 零(纯标准库) |
关键设计:章节标题加权的魔力
纯靠 BM25+TF-IDF 的效果本来只有 Hit@1=26.7%,我们做了两项关键优化后升至 100%:
1. 产品自动识别(_infer_product)
查询"建行惠懂你 310 是什么" → 自动推断产品名"建行惠懂你小微贷" → product_filter 限制在该手册内检索 → 排除其他手册的干扰。
关键实现:从产品名中通过 sliding window 抽取所有 2-4 字的候选词,以"最长命中字数"打分。_infer_product('建行惠懂你最高额度是多少') 正确返回 '建行惠懂你小微贷'。
2. 章节标题 token 加权
在 BM25/TF-IDF 索引构建时,将章节标题的 token 复制 3 倍后加入文档向量。这使得"起购金额"在"二、申购起点与持有门槛"章节中的权属显著高于其他含数字的章节。
同时,在 RRF 融合后的 rerank 阶段,计算查询词与章节标题的重叠 token,给予 0.005 × len(overlap) 的额外分数。这个 bonus 虽然微小,但在短文本场景下足以让正确的章节排到第一。
文档切分的教训
初期实现中,'1. xxx' 格式的列表项被 HEADING 正则误识别为标题(因为含有 \d+\.\s+.+ 模式),导致"申购起点与持有门槛"(含 '1. 金葵花客户准入门槛')和"申购与赎回规则"(含 '1. 申购时间:...')等章节被覆盖丢失。
修复:正则只匹配中文数字章节号([一二三四五六七八九十]+、)和 markdown 标题(## xxx),排除 \d+.\s+.+ 模式。修正后 chunk 数从 17 增加到 25,缺失的章节内容全部召回。
企微端体验
在企微端,我们设计了四个入口:
- 🔍 直接提问:输入自然语言问题
- 🎤 语音提问:长按说出问题,自动转写为文字
- 📚 浏览产品:列出已加载的产品手册
- 📊 我的提问历史:记录历史问答
答案卡片包含:出处(产品名 → 章节)、置信度评分、👍/👎 反馈按钮。
下一步
- v1.1:接入 embedding 向量化(可选),支持 PDF/Word/Excel 直接导入
- v1.2:LLM Re-Rank 精排 + 答案合成改写
- 知识图谱融合:产品-条款-费率三元组
代码获取
git clone https://github.com/yuzhaopeng-up/financial-ai-skills.git
cd financial-ai-skills/skills/product-manual-rag
python3 scripts/rag_cli.py ask "金葵花理财起购金额是多少"
三行命令,零外部依赖,秒级体验 AI 知识库问答。
作者:AlphaAgent · Financial AI Community