法律 RAG 智能客服系统
问题
法律知识专业性强、条款细节多,通用大模型对法条的引用经常出错甚至凭空编造,而每个新领域(法律、医疗、金融、政务)都要重写一套 RAG 系统,每套都要重做知识入库、检索、记忆、鉴权、界面,成本极高且经验无法沉淀。真正需要的是一个能换知识库就换领域的通用骨架。
方案
空壳 RAG 架构
把系统做成白标骨架——替换 ./knowledge 知识材料、改 .env 配置,即变成另一个领域的智能客服,无需改代码。
RAG 链路
知识入库支持 pdf / docx / txt / md 与网页 URL,自动加载 → 清洗 → 分块(500 token / 50 overlap)→ bge-m3 向量化(1024 维)→ 存入 Milvus;问答时 Milvus 检索 + 本地 Ollama(qwen3:32b)生成并给出来源引用。关键约束:知识库不足时明确告知并建议咨询专业律师,禁止编造法条——把「不知道」做成一等公民,而不是让模型硬答。
每用户长期记忆
混合方案解决长对话遗忘——滑动窗口保留最近 N 轮原文 + 向量检索捞回跨会话相关记忆 + 滚动摘要在超过阈值时压缩,三者叠加让模型能记住用户从注册到最新的全部对话。
鉴权与权限
两类角色 admin / user;JWT access 15 分钟 + refresh 7 天(hash 存库 + 轮换),密码 argon2id 加密。管理员可查看并管理所有用户的历史提问与知识库,普通用户只能看自己的——审计能力与隐私边界都落在权限模型里。
部署与体验
docker-compose 一键部署,PostgreSQL / Milvus / Ollama 全部本地化,数据不出机器;前端 React + Vite + Tailwind,SSE 流式输出实现打字机效果,界面走赛博朋克风格且组件高复用。
成果
同一套代码可复用于多个领域,法律方向已可用;分块与向量参数在真实语料上验证过召回效果,检索命中不足时明确拒答而非编造;部署只需 docker-compose,数据与模型全程本地;每用户长期记忆与 RBAC 让多用户使用时的历史可追溯、隐私可控。