一、RAG技术全景:什么是RAG、为什么金融行业需要RAG、RAG与传统搜索和微调的区别
1.1 先聊聊RAG到底是什么
RAG,全称是Retrieval-Augmented Generation,检索增强生成。说白了,就是给大语言模型装上一个「外挂知识库」。
我习惯这么跟团队解释:
你问大模型一个问题,它如果不知道答案,就会开始「编」。但如果你先从一个可靠的数据库里把相关文档搜出来,再把文档和问题一起丢给大模型,它就能基于真实资料回答。这就是RAG的核心逻辑。
用公式表达就是:
RAG = 检索(Retrieval)+ 生成(Generation)
具体流程分三步:
- 索引阶段:把金融文档(研报、财报、公告)切分成小块,转成向量存进向量数据库
- 检索阶段:用户提问时,把问题也转成向量,去数据库里找最相似的几个片段
- 生成阶段:把检索到的片段和原始问题拼在一起,交给大模型生成答案
核心要点:RAG不是让模型记住所有知识,而是让模型学会「查资料」。
1.2 为什么金融行业特别需要RAG
我在金融科技公司做过几个项目,踩过不少坑。金融行业对RAG的需求,可以说是刚需中的刚需。
原因一:金融知识更新极快
昨天出的央行新规,今天就要能回答。你不可能每出一次政策就重新训练一次大模型。RAG只需要更新文档库,模型自动就能用上新知识。
原因二:金融场景要求「有据可查」
监管机构问「你这个风控结论的依据是什么?」你不能说「大模型告诉我的」。RAG的好处是,答案后面可以附上原文出处。我在项目中就遇到过,合规部门要求每条回答必须带引用链接。
原因三:金融数据高度敏感
客户的交易数据、持仓信息,绝对不能混进大模型的训练集。RAG模式下,私有数据只存在本地向量库里,大模型本身不接触原始数据,安全性高很多。
| 场景 | 传统方式 | RAG方式 |
|---|---|---|
| 回答最新监管政策 | 等模型重新训练(可能滞后数月) | 更新文档库即可(实时生效) |
| 查询某只基金的历史净值 | 模型可能记错或编造 | 从数据库检索真实数据 |
| 生成投资建议并附依据 | 无法提供引用来源 | 自动附带原文片段 |
1.3 RAG vs 传统搜索 vs 微调
很多朋友问我:「RAG和传统搜索引擎有什么区别?和微调又有什么区别?」
我拿一个真实场景来说明:
假设用户问:「2024年三季度,招商银行的净息差是多少?」
传统搜索(比如Elasticsearch):
它做的是关键词匹配。你搜「净息差」,它把包含这个词的文档列出来。但问题是,它不理解语义。如果文档里写的是「NIM(净息差)」,传统搜索可能就漏掉了。
微调(Fine-tuning):
你拿一批金融问答数据去训练模型,让模型记住这些知识。但微调有两个硬伤:一是成本高,一次微调几万到几十万;二是模型会「学死」,如果新数据和老数据冲突,模型会混乱。
RAG:
它结合了两者的优点。用向量检索做语义匹配(比如「净息差」和「NIM」能匹配上),再用大模型做理解和生成。而且文档库可以随时增删改,不用重新训练模型。
我的经验:如果业务场景要求「实时更新」且「答案必须准确」,优先选RAG。如果场景是「让模型学会某种写作风格或分析框架」,微调更合适。
1.4 一张图看懂RAG架构
下面这张SVG图,是我自己画的一个简化版RAG流程。你可以看到数据从原始文档到最终答案的完整链路。
1.5 避坑指南:RAG不是银弹
我曾经踩过的坑:
- 文档切分太粗:一个chunk 2000字,结果检索出来一堆无关内容。后来我改成按段落切,每个chunk控制在300-500字,效果明显提升。
- 向量模型选错:用通用向量模型处理金融术语,比如「多头」「空头」「做市商」,语义匹配一塌糊涂。后来换了金融领域微调过的向量模型,召回率从72%提升到91%。
- 忽略排序环节:检索出来的Top-5结果,直接全塞给大模型。结果大模型被低质量片段干扰。后来我加了reranker(重排序),只把最相关的2-3个片段传给模型。
1.6 什么时候不该用RAG
说实话,RAG也不是万能的。我遇到过几个场景,RAG效果很差:
- 需要深度推理的数学题:比如「计算这个投资组合的夏普比率」,RAG检索不到计算过程,不如让模型自己算
- 高频低延迟场景:RAG需要检索+生成,延迟通常在1-3秒。如果要求毫秒级响应,不如直接用缓存
- 文档质量极差:如果知识库里全是扫描件、手写笔记,OCR都识别不准,RAG就是垃圾进垃圾出
我的建议:做RAG之前,先花一周时间清洗和标注你的金融文档。这一步做好了,后面事半功倍。
公众号:蓝海资料掘金营,微信deep3321