3. RAG技术架构
在金融场景中,RAG(Retrieval-Augmented Generation,检索增强生成)并不是一个单一模型,而是一套由多个组件协同工作的系统架构。理解这套架构,是后续动手构建金融知识库、调优检索效果、控制合规风险的前提。本节将拆解RAG的五大核心组件——嵌入模型、向量数据库、检索器、生成器以及编排层,并给出整体工作流程与关键参数。
一、核心原理:RAG为什么需要多组件协作
大语言模型(LLM)的知识来自训练语料,存在两个金融场景难以接受的问题:一是知识截止,无法回答最新监管政策、财报数据;二是幻觉,可能编造不存在的条款或数字。RAG的思路是:在生成之前,先从外部知识库中检索出与问题相关的真实片段,将其作为上下文注入提示词,让模型“看着材料回答”。
因此,RAG的本质是“检索 + 生成”的解耦架构:检索负责从海量金融文档中定位证据,生成负责基于证据组织语言。两者通过向量空间和提示词模板连接。金融场景对可追溯性要求极高,检索到的原文片段本身就是引用来源,这也是RAG优于纯微调的关键。
一句话理解:嵌入模型把文字变成向量,向量数据库负责存储和相似度搜索,检索器负责“提问—召回—重排”,生成器负责“读材料—写答案”,编排层负责把这一切串成流水线。
二、五大关键组件逐一拆解
1. 嵌入模型(Embedding Model)
嵌入模型将文本映射为高维稠密向量,使语义相近的文本在向量空间中距离更近。金融领域建议优先选择中文能力强、支持长文本的模型,如BGE、M3E、text-embedding-3系列。关键参数是向量维度(如768、1024、1536)和最大输入长度(如512、8192 )。维度越高表达能力越强,但存储和检索成本也越高。
2. 向量数据库(Vector Database)
向量数据库负责存储向量、原文、元数据(如文档来源、发布日期、章节),并支持近似最近邻(ANN)检索。常见选择包括Milvus、Qdrant、Chroma、FAISS、pgvector。金融场景尤其需要元数据过滤,例如只检索“2024年之后”“来自证监会”“属于年报”的片段。
3. 检索器(Retriever)
检索器封装了“查询向量化 + 相似度搜索 + 重排”的逻辑。基础检索是向量相似度(余弦、内积),进阶方案包括混合检索(向量 + BM25关键词)、多路召回、Cross-Encoder重排。金融术语(如“可转债”“拨备覆盖率”)对关键词匹配敏感,混合检索往往优于纯向量检索。
4. 生成器(Generator)
生成器通常是大语言模型,接收“系统提示 + 检索上下文 + 用户问题”,输出答案。金融场景要求生成器严格基于上下文,禁止编造,并输出引用编号。可通过提示词约束、温度调低(如0.1)、结构化输出等方式控制。
5. 编排层(Orchestration)
编排层负责串联整个流程,包括文档加载、切分、嵌入、入库、查询改写、检索、重排、提示词组装、生成与后处理。常用框架有LangChain、LlamaIndex,也可用原生代码实现。
三、整体工作流程与关键参数
RAG的完整流程可分为离线索引和在线检索生成两个阶段。离线阶段处理文档,在线阶段响应用户。下表列出各环节的关键参数与金融场景建议值。
| 环节 | 关键参数 | 金融场景建议 | 影响 |
|---|---|---|---|
| 文档切分 | chunk_size / overlap | 512 / 64,表格单独处理 | 过大噪声多,过小语义断裂 |
| 嵌入模型 | 维度 / 最大长度 | 1024维,支持8192 | 维度高精度好但成本高 |
| 向量检索 | Top-K / 相似度阈值 | K=10,阈值0.7 | K大召回全但噪声多 |
| 重排 | 重排模型 / 保留数 | Cross-Encoder,保留Top-5 | 显著提升相关性 |
| 生成 | temperature / max_tokens | 0.1 / 1024 | 低温度减少幻觉 |
四、案例场景:金融研报问答
假设用户提问:“某银行2024年三季度拨备覆盖率是多少?”系统执行如下流程:
- 查询改写:将口语化问题改写为“某银行 2024 Q3 拨备覆盖率”。
- 向量化:用BGE模型将查询转为1024维向量。
- 混合检索:向量召回Top-10,同时BM25召回含“拨备覆盖率”的片段,合并去重。
- 元数据过滤:仅保留来源为“2024年三季报”的片段。
- 重排:Cross-Encoder对候选片段打分,保留Top-5。
- 生成:将Top-5片段与问题组装为提示词,LLM输出答案并标注引用编号。
# 检索配置示例(YAML)
retriever:
type: hybrid
vector_store: milvus
top_k: 10
score_threshold: 0.7
rerank:
enabled: true
model: bge-reranker-large
keep_top_k: 5
generator:
model:
temperature: 0.1
max_tokens: 1024
citation: true
五、常见误区与复盘
误区一:只做向量检索,忽略关键词。金融术语和数字(如“4.5%”“2024Q3”)对精确匹配敏感,纯向量容易漏召回。建议混合检索。
误区二:切分过大或过小。整页切分导致噪声多,逐句切分导致语义不完整。表格、标题应单独处理。
误区三:检索到就一定能答对。若上下文包含矛盾信息,生成器可能混淆。需在提示词中要求“以最新日期为准”并输出引用。
误区四:忽略元数据。金融文档时效性强,缺少日期过滤可能引用过期政策。
复盘要点:RAG调优应分层定位——先看召回是否命中(检索层),再看重排是否把正确片段排前(排序层),最后看生成是否忠实(生成层)。不要一上来就换大模型。