ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

金融知识图谱与智能体技术提升问答系统准确率

金融知识图谱与智能体技术提升问答系统准确率

1. 项目背景与核心突破

去年在金融科技领域,我们团队遇到了一个棘手的问题:传统知识库问答系统的准确率长期徘徊在70%左右。每当用户咨询理财产品条款或交易规则时,系统要么给出不完整的答案,要么干脆回复"未找到相关信息"。这种情况在双十一大促期间尤为严重,客服工单量激增了300%。

经过三个月的技术攻坚,我们最终将问答准确率提升到了95.3%的行业新高度。这个突破性进展的关键在于创新性地融合了知识图谱与智能体(Agent)技术,对传统检索增强生成(RAG)架构进行了全面升级。现在系统不仅能准确理解"黄金ETF的交易手续费是多少"这类明确问题,还能处理"我想找个比余额宝收益高但风险差不多的产品"这样的模糊需求。

2. 技术架构演进之路

2.1 传统RAG的局限性

最初我们采用典型的RAG架构:用户问题→向量检索→LLM生成答案。这套方案暴露了三个致命缺陷:

  1. 语义鸿沟问题:当用户问"基金认购和申购的区别"时,系统可能返回开户流程文档,因为向量空间中的距离相近
  2. 多跳推理缺失:对于"去年收益率前三的基金现在还能买吗"这类需要串联多个知识点的查询束手无策
  3. 动态决策困难:无法根据用户画像(如风险偏好)个性化调整答案

测试数据显示,单纯优化嵌入模型或增加检索量,准确率天花板始终在78%左右。

2.2 知识图谱的引入

我们在原有系统上叠加了金融知识图谱层,包含:

  • 实体节点:基金产品、交易规则、风险等级等12000+个
  • 关系边:"包含"、"替代品"、"风险高于"等30余类
  • 动态属性:实时收益率、申购状态等

关键技术突破在于构建了双路检索机制:

def hybrid_retrieval(question): # 并行执行向量检索和图谱查询 vector_results = vector_search(question) graph_results = graph_traversal(question) # 融合策略 if detect_need_multi_hop(question): return prioritize_graph_results(graph_results) else: return rerank_with_graph(vector_results, graph_results)

这种混合检索使复杂问题的准确率提升了41%,特别是对于需要横向对比(如"比较A基金和B基金的费用结构")的场景效果显著。

2.3 Agent的协同增强

知识图谱解决了"知道什么"的问题,而智能体系统则负责"如何用"。我们设计了三级Agent架构:

  1. 路由Agent:分析问题类型,决定调用检索、计算或推荐模块
  2. 验证Agent:检查答案与知识图谱的逻辑一致性
  3. 个性化Agent:根据用户历史行为调整回答详略程度

例如处理"推荐保守型理财产品"时:

  1. 路由Agent识别需要推荐+解释
  2. 检索Agent找出符合R1风险等级的产品
  3. 验证Agent确保推荐产品未下架
  4. 个性化Agent决定是否附加收益率走势图

3. 核心实现细节

3.1 知识图谱构建流水线

金融领域的知识图谱构建面临数据分散、格式不统一的挑战。我们的解决方案是:

  1. 多源数据采集:

    • 结构化数据:MySQL产品库→Neo4j转换器
    • 非结构化数据:PDF说明书→OCR+信息抽取模型
    • 半结构化数据:HTML常见问题→自定义爬虫
  2. 实体对齐算法: 采用改进的SimRank算法解决"货币基金"vs"现金管理工具"等别名问题:

sim(a,b) = 0.5*(∑sim(N(a),N(b))/|N(a)||N(b)|) + 0.3*cosine_embedding(a,b) + 0.2*jaccard(text(a),text(b))
  1. 动态更新机制:
  • 每日凌晨增量更新基础数据
  • 实时监听关键指标变更(如基金暂停申购)

3.2 混合检索系统优化

为提高检索效率,我们设计了分层索引结构:

索引类型数据范围更新频率适用场景
内存索引热点知识实时高频简单查询
图索引实体关系每日多跳推理
向量索引长文本每小时语义匹配

检索过程加入三种增强策略:

  1. 查询扩展:将"黄金ETF"自动扩展为"黄金交易型开放式证券投资基金"
  2. 时间感知:对含"最新"的问题优先返回最近更新文档
  3. 失效过滤:自动过滤已废止的业务规则

3.3 Agent决策流程设计

智能体系统的核心是决策树的动态生成。以理财产品推荐为例:

  1. 接收原始问题:"想找个比余额宝收益高的"
  2. 生成决策树:
    IF 风险偏好未指定 THEN 默认=平衡型 IF 比较基准=余额宝 THEN 收益率阈值=2.3% FILTER 产品状态=可申购 SORT BY 近一月年化收益 DESC LIMIT 3
  3. 执行决策路径,生成带解释的推荐: "根据您的需求,推荐以下产品:
    1. XX现金宝(近七日年化2.8%)
    2. YY天天盈(近一月年化2.65%)..."

4. 实战效果与调优经验

4.1 性能指标对比

上线三个月后的关键数据:

指标传统RAG新系统提升幅度
简单问题准确率82%97%+15%
复杂问题准确率53%89%+36%
平均响应时间1.2s1.8s+0.6s
转人工率25%6%-19%

虽然响应时间略有增加,但通过以下优化控制在可接受范围:

  • 图查询预加载1度邻居节点
  • 向量检索采用HNSW索引
  • Agent决策树缓存

4.2 踩坑实录

问题1:知识图谱更新导致答案不一致

  • 现象:某基金已更名但系统仍返回旧称
  • 解决方案:建立变更传播机制,强制关联答案刷新

问题2:Agent决策死循环

  • 案例:路由Agent与验证Agent互相要求对方先执行
  • 修复:设置最大递归深度+超时熔断

问题3:金融术语二义性

  • 实例:"申购费"在不同产品中指代前端或后端收费
  • 改进:在知识图谱中添加收费类型属性

5. 关键成功要素

这个项目给我最深的体会是:金融领域的知识系统建设必须坚持三个原则:

  1. 可解释性优先:每个答案都能追溯到知识图谱中的具体节点,这对合规审查至关重要
  2. 动态适应性:金融市场规则变化快,系统必须支持低成本的Schema扩展
  3. 人机协同:保留人工干预接口,对敏感问题(如投资建议)强制加入人工审核环节

我们正在将这套架构扩展到保险、信贷等业务场景。一个有趣的发现是:当知识图谱覆盖率达到90%以上时,继续增加数据对效果提升的边际效益会急剧下降,此时优化Agent的决策逻辑反而能带来更大收益。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进