
简介作为智慧公安数字化转型的重要参考这份《智慧公安AI大模型数字化平台规划设计方案》PPT面向公安信息化规划者、AI平台架构师及大数据治理团队旨在解决当前公安数据分散、技术迭代滞后、跨警种协作困难等痛点。方案围绕项目背景、总体架构、核心功能、关键技术、实施路径与预期成效展开重点设计了多源数据融合层、AI算法中台层、业务应用服务层并引入动态风险评估、智能告警分级、知识图谱决策、联邦学习与多模态融合等前沿方法具有较强的工程落地指导性。资源为单个PPT文件约3.19MB内容以架构图、模块说明和场景分析为主便于直接用于方案汇报或规划参考。目前已有50人学习下载适合需要快速搭建智慧公安AI大模型建设思路的读者。通过本方案可快速了解从感知、研判到决策、行动的完整赋能闭环并获得各警种协同作战、RPA流程自动化等环节的具体实现思路。1. 智慧公安AI大模型先想清楚这是“业务重构”还是“系统换皮”很多单位拿到“智慧公安AI大模型数字化平台规划设计方案”这类材料时第一反应是“又要上一套新系统”。但如果只看成系统建设这项目大概率会做成“买了一堆GPU、部署了一个对话机器人、最后没人用”。真正的问题不是“有没有大模型”而是“公安业务里哪些环节能被大模型重构”。比如报案笔录的自动结构化、历史卷宗的语义检索、案情研判报告的初稿生成、海量视频结构化描述——这些才是大模型能实打实降本增效的地方。而“数字化平台”的意思是别把AI做成孤岛得让模型能力像水电一样接进已有的警综平台、视频平台、单兵终端。这篇笔记会从方案设计角度把“为什么建、怎么搭、数据从哪来、模型怎么调、上线后怎么验”讲透。2. 平台的整体架构与算力选型先把“底座”想明白再动手2.1 智慧公安大模型平台的四层逻辑架构我一般不建议一上来就聊GPU买几张而是先按“数据—模型—能力—应用”四层把架构画清楚否则后面花在接口扯皮上的时间比训练还多。数据层这是公安行业最特殊的一层。包括警综平台的结构化数据案件、人员、警情、非结构化文档讯问笔录、起诉意见书、历史卷宗、视频图像卡口图片、执法记录仪、音频接警录音。数据层要解决的第一个问题不是“存”而是“能不能碰”。公安数据不出域是底线所以数据层必须支持离线清洗、脱敏和分级授权。模型层面向公安场景通常需要两类模型并行——一类是通用底座模型LLM负责语言理解、生成、推理另一类是视觉/多模态模型负责视频结构化、图片描述、车牌/人脸识别后的语义理解。模型层的关键设计是“统一网关”把不同模型封装成标准接口上层应用不关心底层是开源模型还是商用模型。能力层把模型能力封装成业务组件例如“笔录要素抽取”“案情摘要生成”“法条关联推荐”“卷宗问答”。能力层是给业务系统用的它的接口要尽量简单比如输入一段文本、返回结构化JSON。应用层面向终端用户包括PC端的研判工作台、移动端的警务通、大屏的可视化分析。应用层最重要的是交互设计公安用户没有耐心调prompt他们需要“点按钮、拿结果”。这套分层的好处是每一层可以独立演进。比如模型层今天用70B的开源模型明天换成200B的商用模型只要网关接口不变业务层完全无感。2.2 算力怎么配不追顶配按业务峰值反推算力规划是最容易“拍脑袋”的环节。我见过两种极端一种是只买了2张卡推理排队排到天荒地老另一种是一上来就采购几十台8卡服务器利用率不到10%。比较务实的做法是按“并发推理峰值 周期性训练/微调”两个维度反推推理算力先估算同时在线用户数和单请求的平均耗时。比如一个区的研判中心有50个侦查员同时使用每人平均30秒发一次请求每次请求模型生成需要5秒那么并发就是 50/ (30/5) ≈ 8.3也就是至少需要8路并发。一张主流推理卡如L20或者国产化替代的910B大约能跑2~4路70B量级模型的并发取决于量化精度那推理侧至少要4张卡。训练算力微调不是天天做但一做就吃资源。7B模型用LoRA微调单机单卡A100 80G级别就能跑70B模型用全参微调就需要8卡以上的集群。建议规划时预留“周末微调、工作日推理”的复用策略别单独为训练买一整套集群。一个很常见的错误是“什么模型都想上多少卡都不够”。架构上要做路由简单分类任务走小模型如7B复杂推理才走大模型。在平台方案里这叫做“模型路由策略”能让算力成本降一半。2.3 私有化部署的底线数据不出域下的模型获取路径公安内网环境下直接调用公网API基本不用考虑。可选路径就两条采购商用大模型私有化部署包效果最好、落地最快但贵且需要厂商配合做信创适配。基于开源模型自建这是目前更主流的做法。底座可选范围包括Qwen系列、DeepSeek系列、Baichuan系列等开源权重模型。要注意开源模型不等于“拿来就能用”公安术语、文书格式、法言法语都需要微调或至少做提示词工程。我一般建议“两条腿走路”先用开源模型在测试环境把流程跑通同时商务侧同步询商用私有化方案最后根据效果和预算决定生产环境用哪套。这样不会被单一厂商绑死。3. 从0到1部署用开源模型在公安内网跑通最小系统3.1 环境准备与模型下载内网离线部署的典型两步公安内网通常与互联网隔离所以部署的第一步是把模型权重“搬”进内网。常见做法是在一台有互联网的机器上下载模型文件校验哈希值后刻盘或通过摆渡设备拷入内网。# 以 Hugging Face 上的 Qwen 系列为例内网部署前的外网下载步骤 # 1. 使用 huggingface-cli 下载模型权重 huggingface-cli download Qwen/Qwen2.5-7B-Instruct --local-dir /data/models/qwen2.5-7b --local-dir-use-symlinks False # 2. 下载完成后校验文件完整性SHA256 sha256sum /data/models/qwen2.5-7b/*.safetensors checksums.txt # 3. 打包并记录版本信息 tar czvf qwen2.5-7b-instruct.tar.gz /data/models/qwen2.5-7b/逻辑说明这一步的核心目的不仅是“把文件拷进去”更是把版本、哈希、来源记录在案。公安项目审计严格模型从哪来、有没有被篡改、是什么版本都要能追溯。--local-dir-use-symlinks False是为了避免软链接导致后续打包遗漏常见坑。参数说明下载时建议优先选.safetensors格式的权重它比老的.bin格式更安全且加载更快7B是模型参数量实际部署中可根据GPU显存选择显存不足可以选量化版本如AWQ、GPTQ后面会讲。3.2 用 vLLM 启动推理服务显存、并发和量化参数内网拿到权重后推理服务我一般用 vLLM。不用 Flask Transformers 硬写接口原因是 vLLM 的 PagedAttention 能显著提升并发吞吐这对公安这类“多用户同时查询”的场景非常关键。# 在 单机 8卡如 8x A800 80G上启动 vLLM 推理服务 python -m vllm.entrypoints.openai.api_server \ --model /data/models/qwen2.5-7b \ --served-model-name gongan-llm \ --tensor-parallel-size 8 \ --max-model-len 8192 \ --gpu-memory-utilization 0.92 \ --quantization awq \ --port 8000逻辑说明--tensor-parallel-size 8把模型切分到8张卡上并行推理适合大模型单请求无法放进单卡显存的情况。如果只有单卡就设1。--max-model-len 8192最大上下文长度。公安卷宗动辄几万字但上下文越长越吃显存而且推理速度下降。建议先设8192跑通再根据真实需求调。--gpu-memory-utilization 0.92控制显存占用比例。不要设成1.0要留一点给CUDA上下文和碎片太低又浪费显存。0.9左右是经验值。--quantization awq4bit量化用AWQ格式权重。如果不下量化版就去掉这个参数。参数说明这里的--served-model-name是给上层应用调用的模型别名可以按项目命名如gongan-llm但内网调用方要一致。启动后可以用curl做冒烟测试curl http://127.0.0.1:8000/v1/chat/completions -H Content-Type: application/json -d {model:gongan-llm,messages:[{role:user,content:测试}]}注意8卡只是示例如果只有单卡把--tensor-parallel-size改成1模型换成7B量化版即可。3.3 统一模型网关避免上层业务被单一模型绑架服务起好之后别急着对接业务。先做一个模型网关把所有模型服务的路由、鉴权、日志收口到这里。# 用 Nginx 做简单的 TCP 负载均衡和路由示例配置 stream { upstream llm_backend { server 10.0.1.10:8000; # vLLM 实例1 server 10.0.1.11:8000; # vLLM 实例2如果有多套 } server { listen 8000; proxy_pass llm_backend; } }逻辑说明这个网关注册中心的意义在于——当底层模型从7B升级到70B、或者从开源换成商用私有化时上层业务的调用地址不变。公安系统最怕厂商锁定网关是解耦的关键。参数说明如果业务系统需要区分“摘要模型”和“问答模型”可以在Nginx里按URL路径分流比如/summarize走小模型、/qa走大模型。4. 模型微调与业务对齐让底座模型学会“公安话术”4.1 训练数据从哪来清洗旧卷宗、笔录的完整流程大模型微调第一步不是调参是数据。公安场景的高质量训练数据藏在存量卷宗、历史研判报告、结案报告、起诉意见书里。但这些原始文本不能直接用来微调要去标识符、去敏感信息、做结构化。import re import json def clean_record(text): # 去除卷宗里的页眉页脚、页码、手写批注标记 text re.sub(r第\s*\d\s*页, , text) # 脱敏替换身份证号、手机号、车牌号 text re.sub(r\d{17}[\dXx], [身份证], text) # 身份证 text re.sub(r1[3-9]\d{9}, [手机号], text) # 手机号 text re.sub(r[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]?[A-Z][A-Z0-9]{5}, [车牌], text) # 压缩多余空白 text re.sub(r\s, , text) return text # 构造微调样本指令 原文 期望输出 samples [] for raw in raw_docs: clean clean_record(raw) samples.append({ instruction: 请根据以下案情描述提取案件要素时间、地点、嫌疑人、作案手法、涉案财物。, input: clean, output: ... }) with open(train_data.jsonl, w, encodingutf-8) as f: for s in samples: f.write(json.dumps(s, ensure_asciiFalse) \n)逻辑说明这里的关键不是正则写多漂亮而是“谁来确定期望输出”。很多项目是让算法工程师自己写答案结果模型学的是工程师脑补的话术。正确做法是请一线侦查员或法制民警标注真实结案报告里的“要素”哪怕每份只标一个案件也比算法自己编强。output字段必须来源于真实文书的“结论事实”而不是模型生成的。微调最怕脏标签一个脏样本的破坏力抵十个好样本。参数说明train_data.jsonl每行是一个完整的对话样本格式还可以按Qwen的ChatML格式扩展包括system、user、assistant三段但上面这种instruction/input/output格式经LLaMA-Factory转换后也能直接用。4.2 LoRA 微调的具体参数学习率、秩、轮数怎么定微调这块现在有成熟工具我常用LLaMA-Factory它对中小团队很友好不需要从底层写训练脚本。# 以 LLaMA-Factory 的 CLI 方式启动 LoRA 微调 llamafactory-cli train \ --model_name_or_path /data/models/qwen2.5-7b \ --stage sft \ --finetuning_type lora \ --dataset gongan_train \ --dataset_dir /data/train \ --output_dir /data/output/lora_qwen7b \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 16 \ --learning_rate 2e-4 \ --num_train_epochs 3 \ --lr_scheduler_type cosine \ --lora_rank 16 \ --lora_alpha 32 \ --lora_dropout 0.1 \ --max_length 4096 \ --logging_steps 10 \ --save_steps 500逻辑说明finetuning_type lora只训练低秩适配矩阵原始底座模型权重冻结。好处是显存占用小、训练快、不容易灾难性遗忘。对公安业务来说我们不希望模型在微调后把“通用能力”丢掉LoRA正好能保留底座的大部分常识。per_device_train_batch_size 2配合gradient_accumulation_steps 16等效batch size是 2×1632。注意这不是越大越好。调大batch容易让模型输出“模式化”的套话调太小又会导致训练震荡。32是折中值。learning_rate 2e-4LoRA常用学习率范围是1e-5~2e-4数据量多就调小数据量少就调大。7B模型用2e-4起步过拟合就按0.5倍递减。lora_rank 16秩越高模型对新任务的拟合能力越强但越容易过拟合。公安这种数据量在几千~几万条的场景16够用数据量少于1000条建议降到8。max_length 4096控制单条训练样本的最长长度。公安笔录动辄几千字如果样本超长会被截断信息丢失。这里要根据实际数据分布来设不是越高越好越长越吃显存。参数说明数据集里的dataset名称要与/data/train下的dataset_info.json里配置的键保持一致否则工具会找不到数据。这是一个极常见的报错点。4.3 微调后如何评估不只看Loss要看“要素抽取准确率”微调完别急着上线先做人工评估。我见过不少人只看训练Loss降下去了就以为成功结果生成结果全是“正确的废话”——格式对了、要素丢了。# 简易评估抽取重建“案件五要素”并计算精确匹配率 from difflib import SequenceMatcher def evaluate_extraction(model_output, ground_truth): # model_output 和 ground_truth 均为 dict包含 time/place/person/method/objects五个字段 correct 0 for key in [time, place, person]: # 时间地点人物要求严格一致 if model_output.get(key) ground_truth.get(key): correct 1 # 模糊匹配允许“某年某月”或“某路某号”的微小差异 if SequenceMatcher(None, model_output.get(key,), ground_truth.get(key,)).ratio() 0.85: correct 1 return correct / 6 # 5个字段模糊匹配加成满分1.0逻辑说明这个评估脚本很简单但比看Loss有用的多。因为微调的最终目标是业务指标——笔录里有没有“地名”、有没有“车牌号”而不是文本生成得像不像。正则人工抽检的组合比ROUGE/BLEU这种文本相似度指标更贴合公安场景。参数说明SequenceMatcher的阈值取0.85不是拍脑袋太低会把“朝阳区”和“朝阳路”误判为同一值太高又会让模板化输出全军覆没。这个值可以根据评估结果微调但不要低于0.8。避坑提示如果抽检发现“时间抽取正确但总是格式不统一比如‘下午3点’和‘15时’混用”不要盲目加训练数据。先看看训练样本里output的格式是否统一数据标注口径不一致是这个问题的最常见原因。5. 避坑公安大模型落地的常见翻车点与排查路径5.1 现象模型“胡说八道”——生成的案情摘要里出现了卷宗里没有的细节原因最典型的幻觉问题。大模型的生成机制决定了它会在信息缺失时“补全”内容。公安场景下这个“补全”轻则闹笑话重则误导侦查方向。追根溯源有三类一是底座模型在预训练时被注入了大量小说、新闻数据它习惯了“编故事”二是提示词没有强调“只基于给定材料回答”三是微调数据里混入了模型生成的“伪答案”模型学了“脑补”的坏习惯。解决先跑一个最小测试——输入一段共100字的报案记录在提示词里写明“仅提取输入文本中明确出现的信息不得推测、不得添加任何输入中不存在的细节”看输出是否还胡说。若是微调造成的把训练数据里的“模型生成伪标签”彻底剔除只保留人工标注或真实文书中的结论性语句。生产环境再叠加后文的“检索增强RAG”兜底强制模型只能从外部知识库取答案。5.2 现象内网环境下模型推理慢到没法用——每次问答要等30秒以上原因很多公安内网的服务器是存量利旧设备显卡可能是几年前的型号算力本身不足更常见的是并发拥塞——前端同步调用模型服务一个超时请求占住连接不释放导致后续请求排队。还有一个隐性原因是--max-model-len设置过大比如设了32768哪怕输入只有几百字显卡也为其预留了全部长度的KV Cache显存利用率极低。解决第一步用nvidia-smi看显存是否吃满。如果显存占用接近上限但利用率为0说明请求不进去检查网关和端口。第二步把max-model-len降到与业务匹配的水平比如12800同时开启vLLM的Continuous BatchingvLLM天生自带确认没有关闭。第三步对业务应用层做“超时降级”——设置10秒超时超时直接返回“系统繁忙”不让请求无限堆积。5.3 现象微调后模型变得“又笨又呆”——通用能力明显下降只会标准化输出原因轻微灾难性遗忘。过度使用大learning_rate或训练轮数太多把底座模型的通用能力给“覆盖”了。另一原因是训练数据太单一比如只用了讯问笔录全部样本的句式都是“问…答…”模型将这种固定格式学成唯一生存法则。解决把训练轮数从5调到2~3学习率从2e-4降到1e-5~5e-5并准备一组“通用能力验证集”常识问答、数学计算、开放生成每训练500步跑一次验证一旦通用能力评分下降超过15%立即回滚到上一版LoRA权重。LoRA另一个优势是切换成本极低——不同任务的LoRA可以并行保留需要通用能力时直接不挂载LoRA即可。5.4 现象本地部署的“免费开源模型”效果远不如公网商用模型——差一大截原因这是最常见也最不该踩的坑。开源7B模型的指令跟随和知识储备本来就弱于商用百亿级模型加上微调数据不够、prompt没有针对开源模型的格式进行调整比如Qwen有自己的ChatML格式许多应用直接用OpenAI格式硬套。这不是模型部署错了是模型选型错了。解决预期管理要先行。开源7B模型适合做“要素抽取”“文本分类”“简单问答”不适合做“复杂案情推理”例如“判断是否构成抢劫罪与抢夺罪的区别”。生产环境把复杂推理请求路由给更大参数模型或商用私有化服务开源小模型只做前置分类各司其职。6. 验证与进阶用“检索增强多模态”让平台真正被用起来平台建完、模型调完、避坑也避了最后一步是让技术侧的人学会“验收”和“迭代”。6.1 善用RAG解决“不知道”的问题公安业务里的核心知识是不断更新的法律法规、司法解释、办案程序规定。这些内容靠微调来记住是灾难——法规一改就要重新训练。正确的做法是给大模型外挂一个“知识库”也就是RAG检索增强生成。具体落地上把法规库、判例库、历史案例库做成向量库用户提问时先检索相关条文再把检索结果和问题拼在一起送给大模型作答。这样模型就不会瞎编法条因为它只能依据你给的原文回答。这个设计建议在平台规划的第一天就做好而不是上线后打补丁。因为公安内部的知识资产分级严格不同岗位能看到的知识范围不同RAG恰好能通过权限过滤实现“能看什么就检什么”。6.2 多模态扩展从“读文字”到“看视频”侦查员每天面对大量视频图像大模型平台不能只处理文本。多模态能力建议分两步走第一步接已有的视图库算法人脸、车牌、结构化描述把这些算法的输出结果转成文本描述再交给LLM做汇总研判——这是低成本的“伪多模态”第二步再引入真正的图文多模态模型直接输入一张卡口图片输出“一辆白色SUV车牌模糊副驾驶有遮阳板遮挡”——这在缉查布控、寻人走失场景非常实用。规划时不用一步到位但架构上要预留图片、视频的输入接口。6.3 带着“验收清单”去检查平台我习惯在新模型版本上线前固定跑一遍“最小验收集”十条典型报案笔录能不能正确抽要素、五条案情简介能不能生成合规报告、三条法规咨询能不能给出文号出处、两个超长卷宗能不能在30秒内返回摘要。任何一条不过就打回重调绝不妥协。这套验收集在项目初期就由业务方和建设方共同拟定之后每次模型更新或数据更新都用它做回归。我和团队在这类项目上最大的教训是比模型效果更难搞的是“口径一致”。业务方说的“帮我写个报告”和算法工程师理解的“生成一段文本”完全是两回事。所以每次对接宁可多花一天把边界条件、输入输出示例写清楚也不要等模型上线被业务方一句话打回。希望这篇笔记能帮你在规划智慧公安AI大模型平台时少走几步我已经走过的弯路。本文还有配套的精品资源点击获取