2. 金融知识库基础
在动手搭建金融RAG系统之前,必须先理解“喂给系统的原料”和“系统的工作方式”。金融领域对准确性、时效性和可追溯性的要求远高于通用场景,如果直接套用通用RAG方案,往往会在数字、日期、口径上翻车。本节从金融数据特点出发,梳理知识库类型,讲清RAG的基本概念,并与传统检索做系统对比。
一、金融数据的四大特点
金融数据不是普通的自然语言文本,它带有强烈的结构化与语义约束。理解这些特点,决定了后续切分、向量化、检索策略的设计方向。
- 强时效性:股价、利率、汇率、财报数据随时间快速变化。同一问题在不同日期答案不同,检索时必须携带时间维度,否则会召回过期信息。
- 高精度要求:“营收增长3.5%”与“3.05%”在金融语境下是完全不同的结论。数字、单位、币种、百分比基数都不能被模糊化处理。
- 多源异构:数据来源包括PDF财报、公告、新闻、研报、数据库表、API接口等,格式从纯文本到表格、图表混杂,解析难度大。
- 强专业术语与口径:“净利润”有归母、扣非之分,“不良率”有不同监管口径。术语相近但含义不同,检索时容易混淆。
金融RAG的第一原则:数字与日期不可被语义近似替代。向量检索擅长语义匹配,但对精确数字匹配天然弱势,需要结合关键词或结构化过滤来补足。
二、金融知识库的常见类型
不同知识库类型对应不同的检索与更新策略。实际项目中往往是多种类型混合使用。
| 知识库类型 | 典型内容 | 更新频率 | 检索要点 |
|---|---|---|---|
| 文档型知识库 | 财报、招股书、研报、公告PDF | 低频(季度/事件驱动) | 按章节切分,保留表格结构 |
| 结构化知识库 | 行情数据、财务指标、数据库表 | 高频(实时/每日) | 精确查询,SQL或API直取 |
| 资讯型知识库 | 新闻、快讯、舆情 | 高频(分钟级) | 时间过滤+语义检索 |
| 规则型知识库 | 监管条文、合规规则、产品条款 | 低频但需版本管理 | 条款级切分,保留生效日期 |
三、RAG基本概念与工作流程
RAG(Retrieval-Augmented Generation,检索增强生成)的核心思想是:先检索、再生成。让大模型在回答前先拿到相关知识片段,从而减少幻觉、提升事实准确性。其基本流程如下:
- 索引阶段:将金融文档解析、切分为片段(chunk),通过嵌入模型转为向量,存入向量数据库。
- 检索阶段:用户提问转为查询向量,在向量库中做相似度检索,召回Top-K相关片段。
- 增强阶段:将召回片段与原始问题拼接为提示词(prompt),注入上下文。
- 生成阶段:大模型基于上下文生成答案,并可附带引用来源。
用户问题: "2023年某公司归母净利润是多少?"
↓ 查询向量化
向量库检索 Top-K 片段
↓ 召回: 财报"主要会计数据"章节片段
Prompt 拼接:
[上下文] ...归母净利润为 XX 亿元...
[问题] 2023年某公司归母净利润是多少?
↓ LLM 生成
答案: 根据2023年年报,归母净利润为 XX 亿元(来源:年报第X页)
下面用一张图展示金融RAG的整体数据流与关键控制点:
四、RAG与传统检索的对比
传统检索(如关键词搜索、SQL查询)与RAG并非替代关系,而是互补关系。理解差异有助于在金融场景中做正确的技术选型。
| 维度 | 传统检索 | RAG检索增强生成 |
|---|---|---|
| 匹配方式 | 关键词/布尔/精确匹配 | 语义向量相似度匹配 |
| 输出形式 | 文档列表或数据行 | 自然语言答案+引用 |
| 数字精度 | 高(精确匹配) | 依赖上下文,需额外校验 |
| 语义理解 | 弱,依赖同义词配置 | 强,可理解近义表达 |
| 时效处理 | 需手动加时间条件 | 可结合元数据过滤 |
| 可解释性 | 高,结果直接可见 | 中,需追溯召回片段 |
在金融场景中,最佳实践通常是混合检索:用向量检索解决语义召回,用关键词/BM25解决精确数字与术语匹配,再用结构化过滤处理时间和口径,最后交给大模型生成带引用的答案。
五、常见误区与复盘
- 误区一:把RAG当成万能问答。对于“当前股价是多少”这类实时结构化问题,直接查API比RAG更准更快。
- 误区二:切分时不保留表格和日期。财报中的数字往往在表格里,切碎后语义丢失,导致召回片段无法支撑答案。
- 误区三:只做向量检索。“3.5%”和“3.05%”在向量空间可能非常接近,必须引入精确匹配或重排序。
- 误区四:忽略版本与生效日期。监管条文和财报口径会更新,检索时必须按时间过滤,避免用旧规则回答新问题。
复盘建议:在金融RAG项目中,先明确“哪些问题必须精确、哪些可以语义近似”,再设计检索链路。把数字、日期、口径作为一等公民对待,是避免系统性错误的关键。