北大法律大模型 ChatLaw 技术解析
随着语言大模型不断向垂直行业领域拓展,北京大学团队发布的法律大模型 ChatLaw 近期引起了广泛关注。该模型旨在解决当前法律服务供需失衡的问题,通过对话方式为普通人提供普惠的法律服务。
1. 模型版本与特性
目前,ChatLaw 主要包含三个版本,分别针对不同的应用场景和性能需求:
1.1 ChatLaw-13B
这是学术 Demo 版,基于姜子牙 Ziya-LLaMA-13B-v1 训练而来。该版本在中文各项表现上良好,适合基础问答。但由于参数规模限制,在处理逻辑复杂的法律问答时效果可能不佳,需要更大参数的模型来支持。
1.2 ChatLaw-33B
同样为学术 Demo 版,基于 Anima-33B 训练而来。相比 13B 版本,其逻辑推理能力大幅提升。不过,由于 Anima 基座模型的中文语料相对较少,问答时常会出现英文数据混入的情况,需进一步优化。
1.3 ChatLaw-Text2Vec
这是一个基于 BERT 训练的相似度匹配模型。它使用了 93 万条判决案例组成的数据集,能够将用户提问信息与对应的法条进行精准匹配,作为检索增强生成(RAG)的关键组件。
2. 核心功能与应用场景
根据官方演示,ChatLaw 支持多种交互方式:
- 文件上传与分析:支持用户上传 PDF、录音等法律材料,帮助归纳和分析关键信息。
- 可视化输出:能够生成思维导图、图表等可视化内容,辅助理解复杂案情。
- 法律文书生成:基于事实描述,自动生成法律建议、起诉状等法律文书草稿。
该项目在 GitHub 上的 Star 量已达到 1.1k,显示出社区对其开源价值的认可。
3. 技术架构与训练细节
3.1 数据来源与构建
ChatLaw 的数据主要由论坛讨论、新闻资讯、法律法规、司法解释、法律咨询记录、法考题目及判决文书组成。数据经过清洗和数据增强后构造为对话数据。通过与北大国际法学院及知名律师事务所合作,确保知识库的及时更新和专业性。
数据示例包括:
- 基于法律法规和司法解释构建的问答对。
- 抓取的真实法律咨询数据。
- 律师考试多项选择题的建构数据。
3.2 模型微调策略
为了训练 ChatLaw,研究团队在 Ziya-LLaMA-13B 的基础上使用低秩自适应(Low-Rank Adaptation, LoRA)进行了微调。LoRA 技术通过在预训练权重旁添加可训练的低秩分解矩阵,显著降低了显存占用和训练成本,同时保持了模型的性能。
此外,研究引入了 self-suggestion 角色机制,旨在缓解大模型常见的幻觉问题。训练过程在多个 A100 GPU 上进行,并借助 DeepSpeed 框架进一步优化了分布式训练效率。
3.3 检索增强机制
在检索阶段,研究团队经历了从传统方法到向量检索的演进:
- 初始尝试:采用 MySQL 和 Elasticsearch 进行检索,但结果不尽如人意,难以处理语义模糊的查询。
- 向量嵌入方案:转而使用预训练的 BERT 模型进行文本嵌入,利用 Faiss 库计算余弦相似度,提取与用户查询相关的前 k 个法律法规。
- 优化策略:针对用户查询模糊不清导致次优结果的问题,研究者利用 LLM 从查询中提取关键字,设计算法提高匹配准确性。
这种混合架构将通识模型、专业模型和知识库融为一体,并在推理时对模型生成内容进行约束,确保生成的法律法规准确无误。
4. 实验评估与结果
4.1 测试数据集
研究收集了十余年的国家司法考试题目,整理出包含 2000 个问题及其标准答案的测试数据集,用于衡量模型处理法律选择题的能力。
4.2 ELO 评估机制
由于各模型在绝对准确率上普遍偏低,单纯比较准确率意义有限。因此,研究借鉴英雄联盟的 ELO 匹配机制,构建了模型对抗的 ELO 评分系统,以更有效地评估模型在法律领域的相对表现。


