拓冰建站拓冰建站
首页 / 资讯中心 / 正文

金融大模型落地实践:选型、部署、RAG与微调全攻略

简介2024大模型技术及其在金融行业的应用探索PPT面向金融科技从业者、AI产品经理及希望将大模型落地的技术团队系统讲解从技术原理到行业实践的完整链路。内容从ChatGPT带来的研究范式转变切入梳理大模型发展历程、大规模参数与多模态能力特征并对照国家级与地方政策帮助读者快速理解产业环境与合规边界。金融应用部分重点展开智能问答、知识检索、研报撰写、投研问答、合规助手、智能数据分析、智能尽调报告及代码助手等真实场景同时介绍Agent模式与大模型训练/微调流程也强调高质量语料在多样性、真实性与无害性等方面的构建要点。包内含1个pptx文件压缩包约23.25MB已有159人学习适合作为团队内部培训、方案选型及金融AI项目立项前的快速认知参考资料。1. 大模型技术进入金融行业先别急着追参数先回答有没有场景“2024大模型技术及其在金融行业的应用探索.pptx”这个标题如果只看文件名像是一份行业报告。但真按这个方向做项目时就会发现它要回答的不是“大模型能做什么”而是“金融业务里的哪一环值得用大模型重做一遍”。我今年接过两个类似方向的项目一个是银行研报的自动摘要一个是信贷审核的意图识别。做完之后的结论有点反直觉——模型在三周内就能跑通真正的工期花在数据合规、私有化部署和评测集设计上。这篇笔记就沿着这条实际路径展开。适合金融科技团队的算法工程师、架构师以及准备立项的负责人参考。我会把选型、部署、RAG、微调和踩坑都过一遍尽量给出可以直接复用的命令和参数。2. 金融场景下的模型选型与部署比参数更重要的是可控性金融行业用大模型第一关不是准确率而是数据能不能出域。银行、券商、保险的客户信息和交易数据几乎都被要求留在内网。这意味着“私有化部署”不是技术选项而是前置条件。标题里写的“应用探索”探索的核心就是怎么在内外网的边界内把模型用起来。2.1 三条路线对比闭源 API、开源基座与本地部署我一般会把选型收窄到三条路直接调用闭源 API、基于开源基座做私有化部署、或者在本地 GPU 服务器上完整微调。这三条路的边界很清楚。维度闭源 API开源基座 本地部署本地微调数据出境会出境强合规场景不可用不出域不出域定制能力弱只能靠提示词中靠 RAG 和提示词工程强可改行为成本结构按 token 付费长期贵一次性硬件投入硬件 算法人力适合阶段原型验证、非敏感辅助生产系统主力方案特定任务优化闭源 API 在金融里不是完全不能用。比如内部知识问答、文档润色这类不涉及客户数据的辅助场景用它跑原型非常快几乎零门槛。但一旦涉及真实客户信息或交易数据合规评审那一关就过不去。所以我在给金融机构做方案时默认先问一句这个系统跑在哪个网段数据能不能出域。答案决定后面的所有技术选型。开源基座是当前金融落地的主流。常见选择包括 Qwen2.5、Llama 3.1 系列以及国产开源模型。Qwen2.5-7B 是目前很多团队的起跑线显存需求适中中文能力够用社区资料也全。如果业务对长文档理解要求高再往上走 14B 或 72B但硬件成本会翻几倍。标题里的“应用探索”到这一步已经变成了预算和业务价值的对赌。2.2 硬件门槛显存怎么算量化等级怎么选跑模型之前先算显存这是最容易翻车的地方。以 7B 模型为例FP16 半精度下参数占 14GB 左右int8 量化大约 8GBint4 量化大约 5GB。这只是参数权重还要加上 KV Cache 和中间激活所以实际显存需求要再上浮 20% 到 30%。我见过不少团队拿 8GB 显存的卡去跑 7B 模型结果加载就 OOM。如果手里只有消费级显卡优先选 int4 或 int8 量化版本。24GB 显存的卡跑 7B int8 就比较从容了还能留出上下文窗口的空间。如果是 72B 模型即便 int4 量化也需要 40GB 以上的显存基本就是 A100/H100 级别的设备不是每个团队都承担得起。Windows 本地验证时还有一个容易被忽略的点NVIDIA 驱动要切成 TCC 模式而不是 WDDM 模式。WDDM 模式下显卡同时承担显示输出显存容易被占用推理延迟明显偏高。TCC 模式把显卡专用于计算才能跑出真实性能。这个切换在驱动管理工具里就能做但记得切换后显示输出会转移到核显或另一块卡上。2.3 部署框架选择Ollama 适合验证vLLM 适合生产部署阶段我习惯分两级。验证阶段用 Ollama 拉起模型一条命令就能跑通方便业务方先看到效果。生产阶段换 vLLM吞吐量和并发能力完全不一样。# 验证阶段用 Ollama 拉取量化模型并启动服务 ollama pull qwen2.5:7b-instruct-q4_K_M ollama serveollama pull 指定了 q4_K_M 量化等级这是本地验证时性价比最高的格式显存占用低推理速度快。ollama serve 默认监听 11434 端口业务系统可以直接通过 HTTP 接口调用。这个阶段的目的不是压测性能而是让业务方在真实数据上感受模型输出质量判断方向对不对。# 生产阶段vLLM 提供 OpenAI 兼容接口 python -m vllm.entrypoints.openai.api_server \ --model /data/models/qwen2.5-7b-instruct \ --tensor-parallel-size 2 \ --max-model-len 8192 \ --gpu-memory-utilization 0.9vLLM 需要预先下载完整的 Hugging Face 格式模型到本地目录不能直接用 GGUF。tensor-parallel-size 表示用几张卡做张量并行单卡就写 1双卡写 2。max-model-len 是最大上下文长度金融文档常常超长我一般至少设 8192如果显存够可以拉到 16384。gpu-memory-utilization 0.9 表示允许 vLLM 使用 90% 的显存留出一点余量给驱动和监控。vLLM 启动后会在 8000 端口暴露一个 OpenAI 兼容接口之前的业务代码只要改一下 base_url 就能对接这是生产环境最省事的接入方式。2.4 高密度金融文档的上下文处理截断比模型更关键金融文档有个特点信息密度低但关键信息藏得深。一篇招股书几百页核心数据可能散落在不同章节。如果直接把全文塞进上下文不仅显存吃不消模型还会被无关内容干扰反而不如精准截断。我的做法是先做章节切分再按业务规则抽取目标段落。比如做研报摘要先定位“投资建议”和“财务数据”章节只把这两部分拼进上下文。上下文工程在这里比提示词工程更值钱因为 prompt 写得再好输入内容不对全是白搭。所以部署层的原则可以总结成一句模型选型决定上限部署框架决定吞吐上下文截断决定真实效果。这三件事在金融场景里环环相扣跳过任何一环都会在后续返工。3. 把金融知识喂给大模型RAG 与提示词工程的最小落地金融行业的大模型应用绝大多数不是让模型凭空生成而是让它基于内部知识库回答。这就必须用 RAG。原因很简单模型训练时的知识早就过时了而金融行业的信息时效性极高产品条款、监管口径、市场数据都在变。RAG 可以做到不重训模型就更新知识这是金融业务最需要的特性。3.1 为什么金融场景先做 RAG 而不是直接微调很多团队一上来就想微调但金融场景里 80% 的需求用 RAG 就能解决。比如客户问“这款理财产品的赎回费率是多少”答案来自产品说明书而不是模型记忆。RAG 把检索到的原文拼进 prompt模型只做“阅读理解复述”错了能追到数据源改起来也快。微调的适用面窄得多。它适合“行为改变”而不是“知识注入”。比如把模型训练成按固定格式输出信贷审核结论或者让它学会识别特定业务话术。这些是行为层面的变化RAG 做不到。所以我的判断标准很简单知识不足用 RAG行为不对才微调。这个判断能省下大量 GPU 时间和人力成本。3.2 金融文本切分策略不能按字符数一刀切段落切分看起来简单实际是最容易踩坑的环节。金融文档里的条款往往是一条完整逻辑链硬切到不同 chunk 里召回时就会丢失关键前提。最常见的情况是条件句“若客户在募集期内撤单”和结论句“已缴纳的认购款项将全额退回”被切到两个 chunk检索只召回结论模型就给出了绝对化的错误回答。我常用的切分参数是 chunk_size 300 到 500 字chunk_overlap 50 到 80 字。这个量级既能保证语义完整又能控制向量检索的粒度。切分时优先按章节标题和段落边界切不要死板地按字符数切。遇到结构化文本比如产品参数表最好单独处理整表作为一个 chunk 存储。3.3 最小 RAG 管线Embedding、向量检索与重组提示词一个能跑的 RAG 管线至少要包含三个组件embedding 模型、向量数据库、LLM 推理服务。embedding 模型负责把文本转成向量向量数据库负责存储和召回LLM 负责基于召回内容生成回答。# 最小 RAG 检索与回答流程 from sentence_transformers import SentenceTransformer import chromadb import requests # 1. 加载 embedding 模型用于将文档切块转成向量 embed_model SentenceTransformer(BAAI/bge-large-zh-v1.5) # 2. 初始化向量数据库并写入文档 client chromadb.Client() collection client.get_or_create_collection(finance_kb) collection.add( ids[doc_1, doc_2], documents[赎回费率为0.5%持有期超过一年免收, 募集期内撤单认购款项全额退回], metadatas[{source: 产品说明书}, {source: 募集公告}] ) # 3. 对用户问题进行向量化检索 query 撤单了钱怎么办 query_vec embed_model.encode(query).tolist() results collection.query( query_embeddings[query_vec], n_results2 ) # 4. 将召回结果拼入 prompt调用本地 vLLM 服务 context \n.join(results[documents][0]) prompt f请仅依据以下资料回答问题不要自行补充\n{context}\n问题{query} resp requests.post( http://localhost:8000/v1/chat/completions, json{model: qwen2.5-7b-instruct, messages: [{role: user, content: prompt}]} ) print(resp.json()[choices][0][message][content])这个流程里有三个关键点。第一embedding 模型要选中文效果好的bge-large-zh-v1.5 是当前中文场景里比较稳的选择。第二检索结果必须带元数据这样后续回答才能追溯到来源金融场景对可解释性要求很高。第三prompt 里明确要求“仅依据资料回答”这能显著减少模型自由发挥的概率。向量数据库这里用了 Chroma 做示例数据量小、验证足够了。如果文档量达到百万级可以换 Milvus 或 Elasticsearch 的向量检索能力但架构逻辑不变。3.4 召回质量怎么评估命中率与幻觉率RAG 上线前必须做召回评估否则你根本不知道模型回答得好是检索的功劳还是模型自己编的。我做了一个最简单的评测集准备 50 到 100 条真实业务问答标注每条的正确答案应该来自哪份文档。跑完 RAG 后统计两个指标。命中率衡量召回质量答案相关的文档是否被检索出来。这个指标偏低说明切分策略或 embedding 模型有问题。幻觉率用于衡量生成质量模型输出里有没有出现资料中不存在的信息。这个指标偏高说明 prompt 约束不够或者召回了太多不相关的片段。这两个指标不需要复杂的评测框架人工抽检就能跑。但一定要在立项早期就建不然模型换了一版你都无法判断是变好了还是变差了。金融行业项目上线前最怕的不是效果差是效果说不清。4. 微调金融意图识别用 Qwen2.5-7B 跑通一版能上线的 LoRARAG 解决“知识从哪里来”微调解决“行为怎么做”。在金融行业最常见的微调任务是意图识别和输出格式控制。比如信贷审核里需要模型把用户输入分类为“收入证明”“负债查询”“征信异议”等业务类型并输出结构化 JSON。这种任务 RAG 做不了必须微调。4.1 先判断要不要微调行为问题才值得花 GPU我见过一个团队花了一个月微调模型只为了让它回答客服问题时语气更温和。这明显是提示词能解决的问题。微调的成本不只是 GPU 时间还包括数据标注、评测回归和部署变更一套流程下来至少两到三周。所以微调前先问三个问题基础模型通过 prompt 能不能实现RAG 能不能兜底这个行为变更是否值得长期维护如果答案都指向必须改模型行为才进入微调阶段。4.2 数据准备金融对话数据要做什么清洗微调数据质量决定模型上限。金融场景的训练数据主要来自历史客服对话和业务工单拿过来直接训练一定会出问题。我一般做四步清洗去标识化把客户姓名、手机号、身份证号替换成占位符统一标签体系把相似表达映射到同一个意图过滤低质量对话比如客服未解决就被挂断的记录构造负样本明确告诉模型哪些输入不属于任何预设意图。训练数据格式直接决定模型学到的行为。以 Qwen2.5-7B-Instruct 为例一条有效的训练样本应该是一个完整的对话结构包含 system、user、assistant 三段其中 assistant 输出必须是期望的最终格式。只给对话片段不给完整结构模型学到的往往是残缺的回复风格。4.3 用 LoRA 跑通微调一份可直接改参数的命令金融场景不建议全参数微调LoRA 已经足够且训练成本低很多。以 Qwen2.5-7B 为例LoRA 只训练新增的低秩矩阵参数量通常只占全模型的 0.5% 到 1%显存占用也能控制在可控范围内。# 使用 LLaMA-Factory 进行 LoRA 微调 llamafactory-cli train \ --model_name_or_path /data/models/qwen2.5-7b-instruct \ --stage sft \ --dataset fintech_intent \ --finetuning_type lora \ --lora_rank 32 \ --lora_target q_proj,v_proj,k_proj,o_proj \ --output_dir /data/output/fintech_intent_lora \ --num_train_epochs 3 \ --learning_rate 2e-4 \ --per_device_train_batch_size 4 \ --gradient_accumulation_steps 4 \ --logging_steps 10 \ --save_steps 500 \ --cutoff_len 2048这里几个参数值得细说。lora_rank 决定了微调的“宽度”32 是兼顾效果和显存的常用值业务数据量小可以降到 16。lora_target 指定 LoRA 作用的注意力模块Q、K、V、O 四个投影层都选上是默认做法只选部分也能跑但效果会有折扣。learning_rate 用 2e-4这是 LoRA 微调的安全区间太大容易训飞太小收敛慢。per_device_train_batch_size 和 gradient_accumulation_steps 配合控制有效批大小这里实际批大小是 4 乘以 4 等于 16这个值对 7B 模型是合理区间。训练完成后LoRA 权重需要合并回基础模型才能部署或者用支持 LoRA 的推理框架直接加载。# 合并 LoRA 权重为完整模型 llamafactory-cli export \ --model_name_or_path /data/models/qwen2.5-7b-instruct \ --adapter_name_or_path /data/output/fintech_intent_lora \ --export_dir /data/output/fintech_intent_merged合并这一步经常被忽略。不合并的话推理框架每次都需要先加载基座再加载 adapter不仅启动慢还容易在版本升级时出现兼容问题。合并成完整模型后可以直接扔给 vLLM 部署和未微调模型的部署流程完全一致。4.4 微调效果验证不要只看训练 loss训练结束后模型在训练集上 loss 降得很低是正常的但金融场景要的是泛化能力。我会留出 20% 的数据不参与训练作为验证集对比微调前后在验证集上的意图分类准确率和输出格式合规率。这里有一个容易被忽视的点微调会破坏基础模型的通用能力。一个只做过金融意图识别的模型可能再也写不好通用文案。如果你的系统还需要模型处理其他任务建议用 LoRA 而不是全量微调并且把微调后的模型单独部署成一个服务不要替换原有通用模型。5. 金融落地避坑指南四个让我返工的真实案例这一章写的四个案例都是我实际遇到过、并且花了真金白银才解决的坑。每个都按现象、原因、解决三步来写希望能帮你少走一段弯路。5.1 案例一模型一本正经编造数字人工复核才发现现象RAG 系统上线试运行一周业务方反馈“回答很流畅但数字经常对不上”。比如客户问“这款产品去年收益率是多少”模型给出的数字在产品说明书里根本不存在。原因这是典型的幻觉问题。根子在于两个环节召回阶段没有把最相关的文档片段找出来模型被迫用训练时的记忆补全。prompt 里只写了“依据资料回答”但没有约束“资料未提及的信息必须明确说明不知道”。金融数字的容错率极低一段错误的收益率可能引发客诉甚至合规风险。解决我在 prompt 里加了硬性约束要求模型在资料未覆盖时直接输出“资料中未找到相关信息”并且在后处理环节加了数字校验从召回内容中正则提取数字列表与模型输出做比对不一致就拦截回答。这里我给出的建议是金融场景对 RAG 的应用必须把“拒答”作为一种正常行为来设计而不是只追求回答率。5.2 案例二合规评审不通过原因是数据流向说不清现象项目原型已经做完进入合规评审时被问“用户查询语句存在哪里”“向量数据库落在哪个区域”“日志里有没有记录客户ID”。团队答不上来评审暂停两周。原因金融行业的合规关注点不是模型效果而是数据全生命周期。我们当时用 SaaS 版向量数据库做原型虽然数据不出域但合规要求所有数据处理环节必须在境内指定区域完成。这个约束直接否定了原型的架构。解决把向量数据库切换到内网自建的 Milvus所有日志脱敏后落盘查询语句只保留文本特征不保留客户标识。这件事的教训是技术方案设计的第一天就要画出数据流向图。谁拿了数据、存在哪里、谁能访问这三个问题回答不清楚模型再准也上不了线。5.3 案例三上下文窗口越拉越大效果反而变差现象为了让模型理解更长的招股书把 max_model_len 从 8192 拉到 32768。结果长文档问答的准确率不升反降而且推理速度明显变慢。原因这是上下文工程的问题。模型注意力是有限的塞入大量无关文本后关键信息被稀释模型反而更难聚焦。长上下文还会显著增加 KV Cache 显存占用和推理时延这是物理损耗躲不掉。解决我没有继续拉长上下文而是回到 RAG。把招股书切块后只检索最相关的 3 到 5 个片段拼起来不超过 3000 字效果反而好得多。长上下文在金融场景里确实有需求但从成本收益看RAG 是所有方案里最可控的。5.4 案例四模型上线一个月没人用现象系统按计划上线但业务方使用率极低。日志显示每天只有零星的测试调用和上线前的预期差距巨大。原因产品设计时没有考虑真实业务流。模型做得再好如果业务员需要手动打开一个新系统、复制粘贴客户问题、等待回复再手动录入结果这个流程根本没比原来快。我们做的是技术交付不是业务闭环。解决把模型能力嵌入业务员原有的工作台在客户会话窗口内自动弹出辅助建议一键填入回复框。这一步改动让使用率从不到 5% 提升到超过 60%。后来我做金融项目有个习惯先问业务方“你现在的操作流程是什么”把模型嵌入已有流程而不是要求业务方迁就新系统。这算是这篇笔记里最值钱的一条经验。6. 验证与进阶离线评测集与 Agent 化工作流模型上线不是终点持续的验证和演进才是常态。我一般维护两类评测资产一类是离线业务评测集包含一百条左右真实场景问答覆盖各业务类型和难度梯度另一类是线上日志抽检流程每周随机抽取模型输出去人工评价。这两套东西做扎实了模型升级时才有底。离线评测集里我特别强调“边界样本”。比如用户输入混着方言、错别字、口语缩写的场景这些才是金融实际业务里的常态。只拿规整的测试集去验证永远测不出真实水平。每次模型或 RAG 配置变更先跑离线评测集效果不降级再考虑上线。再往前走一步就是 Agent 化。我现在在做的一个方向是把意图识别、工具调用和多步推理组合起来。模型先识别用户要办什么业务再调用查询接口拉数据最后根据返回结果生成回复。这种工作流已经不是单个模型的比拼而是编排能力的比拼。目前主流的多智能体框架都在往这个方向走但金融场景里对每一步都要有日志和可解释性这是与技术能力同样重要的约束。回头看我做的这些项目最大的教训是大模型落地金融纯粹的技术能力只占三分之一另外三分之二是数据治理、流程嵌入和评测体系。模型跑通只是开始真正考验耐心的是后续几个月的迭代和运营维护。希望这些经验和踩过的坑能帮到你。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门