【项目实训】法律文书智能摘要系统7

一、概述

本期开发围绕法律文书智能摘要系统进行了两大核心升级:一是新增知识图谱功能模块,实现跨案件关联分析与可视化探索;二是对长程记忆系统进行分层优化,引入HNSW风格导航图,使记忆检索具备可解释性。同时完成了前端风格统一、文书对比逻辑整合、登录状态优化等多项工程改进。系统整体稳定性、用户体验与可解释性均有显著提升。

二、知识图谱功能模块

2.1 功能定位与价值

当文书数量达到几百份以上时,单份文书的卡片模式难以呈现宏观规律。知识图谱页面支持缩放、过滤、搜索,能够帮助用户发现跨案件的关联,适用于法学实证研究场景。

2.2 图数据结构

构建了包含四类节点、五种关系边的知识图谱:

节点类型:

  • 🟠 案由节点(橙色)- 案件分类标识,如"民间借贷纠纷"

  • 🔵 案件节点(蓝色)- 每份文书对应一个节点

  • 🟢 法院节点(绿色)- 审理法院

  • 🟡 当事人节点(黄色)- 原告与被告

关系边:

  • cause_rel:案件属于某案由(案件→案由)

  • judge_rel:法院判决案件(法院→案件)

  • party_rel:当事人参与案件(当事人→案件)

  • similar:同案由案件相似(案件↔案件)

  • cite:案件引用关系(案件→案件)

2.3 核心功能

  • 案由聚类:自动将相似案例通过案由节点关联,支持低/中/高三档聚类精度

  • 主体透视:点击特定当事人(如某保险公司),可查看其涉及的所有诉讼及常见抗辩理由

  • 学术检索:通过图谱搜索,如"寻找所有涉及合同诈骗且证据不足被驳回的案件"

  • 多维度过滤:支持按案由、法院、当事人等条件筛选

  • 关键词搜索与节点高亮联动:搜索结果按类型显示不同颜色标签,点击后主画布对应节点高亮(红色边框+阴影)

  • 图谱自由缩放:力导向布局参数优化,提供"重置视图"按钮

2.4 后端实现

新增以下核心模块:

  • graph_builder.py - 图谱构建引擎

  • clustering.py - 聚类算法(完全重写,基于案件类型分组)

  • cause_extractor.py - 多策略案由提取(关键词匹配、文件名推断、行政案件处理、人名前缀清理)

  • entity_extractor.py - 实体搜索扩展

  • knowledge_graph.py - API路由

案由提取已改为后台自动化流程,无需用户手动触发。

2.5 前端实现

新增页面与组件:

  • KnowledgeGraph.vue - 主页面

  • GraphCanvas.vue - 图谱画布(ECharts力导向图)

  • ClusterPanel.vue - 聚类面板

  • EntityPanel.vue - 主体透视面板

  • graph.ts - API客户端

2.6 关键问题修复

问题 解决方案
数据库字段映射错误(no such column: meta_json) 改用LEFT JOIN extracted_fields及正确列名
sqlite3.Row不支持.get() 改为下标访问 row["key"] or default
节点过度集中超出屏幕 调整力导向参数(repulsion 1500,edgeLength 120,250,gravity 0.06);容器溢出隐藏
案由字段显示无意义文本 新建cause_extractor.py多策略提取;更新LLM提示词
聚类算法依赖不存在的similar边 重写算法,基于案件类型分组,支持三档精度
前端组件typeLabel未定义 添加映射函数,合并script块
搜索无引导、无加载反馈、无联动 添加空状态引导、spinner动画;后端搜索扩展至party+court+cause
聚类按钮无响应、高亮无法清除 添加错误提示与loading状态;增加"清除筛选"UI(✕按钮)

共修复13项关键问题。

三、长程记忆系统分层优化(A-Mem → 分层记忆图谱)

3.1 第一版存在的问题

初期接入A-Mem后,系统解决了"AI助手没有长期记忆"的问题,能够从对话中抽取知识点并召回。但法律场景中的记忆不是平铺的------用户画像、当前案件事实、历史案件经验、通用法律规则、全局办案流程的作用完全不同。单一向量检索池容易将语义相似但层级不合适的内容混入回答。

3.2 记忆分层设计

引入 memory_scope 字段,将记忆分为五类:

层级 含义 示例
用户画像 用户长期偏好和习惯 "用户希望先给结论,再列证据清单"
全局记忆 通用办案流程或系统级经验 "先固定事实,再补证据,再匹配法条"
跨案经验 从多个案件中沉淀的模式 "押金扣减案件中交接照片权重高"
通用法律 法条、规则、一般法律依据 "消费者可就质量问题主张退换修"
历史案件 具体案件事实和证据 "某次电脑花屏纠纷缺少检测报告"

检索时不再只做向量相似度匹配,而是:判断需要哪些记忆层 → 按层检索候选 → 结合语义相似度、关键词重叠、importance、confidence加权 → 合并去重后注入上下文。

3.3 HNSW风格导航图

为了让记忆检索过程可解释,引入了HNSW(Hierarchical Navigable Small World)风格的导航图。

设计目标:当用户点击一个具体记忆节点时,前端能展示"入口点 → 高层索引 → 中间跳转 → L0具体记忆"的完整路径。

实现要点

  • 为每条note通过SHA1哈希确定性分配hnsw_level,高层节点少、底层节点多

  • 每层只连接该层可见节点的近邻,并限制度数(M=4)

  • 搜索时从最高层入口点开始,高层greedy下降,L0层做beam search扩展

  • 后端提供真实检索路径(/nav-path/{note_id}),前端高亮显示,而非前端编造路径

说明:当前实现是面向可视化和解释的工程化方案,并非完整替代ChromaDB的工业级HNSW索引,主要服务于小规模记忆图的解释和调试(几十到几百条note)。

3.4 真实数据抽取链路

为避免前端展示手写demo造成的虚假感,建立了完整的真实生成和抽取链路:

  • 让大模型生成同一用户、多事件的法律咨询剧本(电脑花屏、租房押金、课程退款等)

  • 每一轮对话走真实的 extract_and_store_knowledge

  • 每条note写入SQLite,过程文件保存至 backend/data/mmem_showcase_runs/

前端看到的月度记忆图是系统实际抽取、入库、构图后的结果。

3.5 新增API接口

  • GET /nav-graph - 返回完整HNSW图(nodes, edges, layers, params)

  • GET /nav-path/{note_id} - 对指定note执行真实trace,返回路径高亮数据

  • POST /search - 支持 strategy="layered_nav",融合HNSW路由与向量检索

四、前端风格统一与深色模式修复

4.1 设计令牌体系

创建 variables.css,定义180余项CSS自定义属性,覆盖:

  • 色彩体系:主题色、成功色、警告色、危险色、文字色、背景色

  • 字体层级:超小号至5倍大号全套字号

  • 间距规范:0至24级统一间距

  • 圆角、阴影、层级索引、贝塞尔曲线缓动

4.2 全域样式替换

在20余个组件及页面中,将硬编码十六进制色值批量替换为CSS变量。已优化的组件包括:图谱画布、聚类面板、实体视角面板、AI悬浮工具栏、聊天弹窗、结果展示卡片、法律术语悬浮提示、批量总结弹窗、字段提取展示、对话历史面板、关键词统计云图等。已优化的页面包括:知识图谱页面、文档阅读页面、AI智能助手页面。

4.3 深色模式修复

根因theme.ts 使用 classList.add('dark'),而 variables.css 使用 [data-theme="dark"] 属性选择器,两者不匹配导致深色模式CSS变量从未生效。

修复

  • 修改 setTheme() 使用 setAttribute('data-theme', 'dark')

  • index.html 添加内联脚本,页面加载时立即应用本地存储的主题

  • 移除 App.vue 中多余的 dark class绑定

五、文书对比逻辑整合

5.1 原有问题

系统存在两套独立的文书对比功能:

对比维度 基础文书对比 AI智能文书对比
对比形式 结构化字段层级比对 AI语义深度解析
支持文档数 仅2份 2-5份
AI介入 大语言模型
操作入口 /compare 页面 法智助手页面标签页

两套系统整合性差:字段对比需单独跳转,AI对比需切换标签页,无互通入口,文档选择样式不统一,视觉风格杂乱。

5.2 优化方案

  • 精简路由 :下线独立的 /compare 路由,将所有文书对比功能统一归集至"法智助手"核心页面

  • 组件复用:两套对比模式共用同一套文档选择组件

  • 数据联动:字段比对结果可同步展示在AI智能分析报告旁

  • 视觉统一:全线采用新版深蓝色系设计规范

六、登录状态与用户体系优化

6.1 登录状态存储改进

将token存储从 localStorage(永久保存)改为 sessionStorage(关闭浏览器自动清除),提升安全性。

javascript

复制代码
// 登录成功
sessionStorage.setItem('token', res.data.token)

// 路由守卫
const token = sessionStorage.getItem('token')

6.2 退出登录与注册优化

  • 退出登录:sessionStorage.clear() 并跳转至登录页

  • 注册功能:注册成功后自动调用登录接口,保存token并跳转首页,同时增加错误提示

6.3 全局个人悬浮球

App.vue 中增加右下角悬浮球组件,点击展开个人面板,包含退出登录功能。样式采用固定定位、圆角头像、阴影效果。

七、当前局限与后续计划

7.1 已知局限

  • 知识图谱当前基于关系型数据库构建,规模较大时需迁移至原生图数据库(如Neo4j)

  • HNSW图为可视化和解释层,不是工业级ANN索引替代

  • 记忆抽取仍依赖LLM,可能存在漏抽或误抽

  • 分层规则还需更多真实法律任务验证

  • 图谱当前适合几十到几百条note,更大规模需分页、聚类或按需加载

7.2 后续计划

  • 引入时间轴动态图谱,展示案件引用关系的时序演化

  • 进一步细粒度同步文书对比的数据联动

  • 探索更大规模记忆图的增量更新与按需加载策略

  • 完善法律领域特定实体的识别与链接

八、总结

本期开发完成了知识图谱从0到1的落地,实现了跨案件关联分析与可视化探索;长程记忆系统从"能存能搜"走向"有层级、有路径、可解释";前端建立了统一的设计令牌体系,支持深浅主题无缝切换;文书对比功能整合后减少了用户学习成本;登录状态优化提升了安全性。系统整体更加稳定、易用、可解释,为后续法学实证研究和规模化应用奠定了坚实基础。

相关推荐
SiYuanFeng1 小时前
大厂面试python复习基础100题
python·面试·职场和发展
高洁011 小时前
数字孪生:虚拟调试,真实交付
python·深度学习·机器学习·transformer·知识图谱
江畔柳前堤1 小时前
XZ09_Word和MD格式转换
开发语言·数据库·人工智能·python·深度学习·word
cheems95271 小时前
Git 分支管理
大数据·git
星河漫步Lu1 小时前
Anaconda搭建深度学习虚拟环境
开发语言·python·深度学习
张一西1 小时前
2026 新春快乐破解活动五之windows中级题
python·反编译·nuitka·flag
GEO_youxuan1 小时前
财务报表分析软件哪个好?2026年主流产品实测对比
python
为爱停留1 小时前
我的第一个智能问答:给智能体接上网页 + 流式输出
python
专注VB编程开发20年1 小时前
Python爬虫、提取网页内容,免费调用谷歌翻译接口
爬虫·python·信息可视化