ChatLaw:基于LLaMA微调的法律大模型

news2025/3/13 11:08:15

文章目录

  • 动机
  • 数据组成
  • 模型框架
  • 模型评估

北大团队发布首个的中文法律大模型落地产品ChatLaw,为大众提供普惠法律服务。模型支持文件、语音输出,同时支持法律文书写作、法律建议、法律援助推荐。
github地址:https://github.com/PKU-YuanGroup/ChatLaw
Chatlaw官网(体验地址):https://www.chatlaw.cloud/
论文地址:ChatLaw: Open-Source Legal Large Language Model with Integrated External Knowledge Bases

动机

ChatGPT带来的LLM浪潮席卷了各个垂直领域,如医疗,金融等领域,各种垂直领域的大模型层出不穷,如BloombergGPT、本草、华佗、ChatMed等,在法律领域也有LawGPT、lawyer-llama两款初步的开源模型。而这些大模型的做法是使用特定领域的数据来对大模型进行微调或二次预训练,但由于在一些具体业务中对准确性的要求,这种做法并不能真正获得令人满意,较为准确结果,也不足以支撑场景落地的需求。在涉及法律问题时,即使是像GPT4这样最先进的模型,也会出现幻觉和胡说八道的现象。因此,LLM+知识库相结合的技术是迫切被需要的,因为有些问题是适合让类似拥有智能的大模型去回答的,但有些问题是需要传统的硬性检索来做的,让“模型做模型的事,检索做检索的事”,共同组成一个大模型产品。

数据组成

数据主要由论坛、新闻、法条、司法解释、法律咨询、法考题、判决文书组成,随后经过清洗、数据增强等来构造对话数据。详细的参考数据在ChatLaw训练数据demo,以下是数据样例:

questionanswerSubject
如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?依据刑法条文第一百一十四条,如果一个人故意以危险方法危害公共安全,但尚未造成严重后果,将被处三年以上十年以下有期徒刑。因此,如果这个人故意驾车向人群冲撞,但没有造成重大损失,将被处以三年以上十年以下有期徒刑。法律咨询
如果一个邮政工作人员私自开拆了一个邮件,但只是为了查看其中的收件人地址,而并未泄露邮件内容,是否构成什么罪行?构成私自开拆、隐匿、毁弃邮件、电报罪。本罪客观方面有两个特点:一是必须有私自开拆、隐匿、毁弃邮件、电报的行为。所谓私自开拆,是指非法擅自开拆他人邮件、电报,使封缄失效的行为,合法行为不在此限;二是必须有利用职务之便的行为,才能构成本罪。即使只是查看收件人地址也违反了邮政工作人员的职责,属于利用职务之便的行为,因此构成本罪。法律概念
如果某个工人每天工作10小时,那么每周工作时间超过了规定吗?根据《劳动法》第三十六条,每日工作时间不得超过8小时,因此每周工 作时间将超过44小时,超过了规定。法律咨询
甲公司注册资金为120万元,主营建材,乙厂为生产瓷砖的合伙企业。甲公司为稳定货源,决定投资30万元入伙乙厂。对此项投资的效力,下列表述哪一项是正确的? A)须经甲公司股东会全体通过方为有效 B)须经甲公司董事会全体通过方为有效 C)须经乙厂全体合伙人同意方为有效 D)无效按照最新《公司法》的规定,本题无答案。《公司法》第15条规定,公司可以向其他企业投资;但是,除法律另有规定外,不得成为对所投资企业的债务承担连带责任的出资人…法律选择题

数据集构建过程

  1. 从大量原始的法律知识构建数据集。
    主要来自法律新闻、社交媒体内容和法律论坛的讨论。这些数据提供了各式各样的现实世界的法律文本,提供了各种法律话题和讨论的洞见。
  2. 基于法律法规和司法解释构建数据集。
    为了确保法律知识的全面覆盖,将相关法律法规和司法解释纳入数据集中,确保数据集里反映了法律框架并提供准确的消息。
  3. 爬取真实的法律咨询数据。
  4. 从司法考试多项选择题构建数据集。
    作者创建了一套专门为司法考试设计的多项选择题,这些问题涵盖了各种法律主题以及检测用户对法律法规的理解。

上述数据经过严格的清洗过程,例如过滤短文本以及不连贯的回复,确保数据集中只含有高质量文本。除此之外,还使用了ChatGPT进行辅助构造,能基于现有的数据生成一些补充说明。

模型框架

  • ChatLaw:LLaMA模型 + LoRA微调。
  • 关键词LLM:微调一个关键词LLM模型,使模型能根据用户查询获取合适的若干关键词。
  • Law LLM:使用了93w个国家法律判例训练数据训练模型,利用embedding信息,根据算法1(下图)获取与用户查询匹配相应的法律条文和司法解释。

为什么要先找关键词,再进行匹配?

根据用户询问,从垂直领域的文档中抽取相关信息/文本是非常重要的,最初尝试了传统的Mysql/Elasticsearch做索引,效果不行;又尝试了Bert-Embedding+Faiss做向量cosine相似度,取top-k个相关法规,但这一套往往抽不准,尤其用户输入是模糊的时候。

因此提出先找关键字,再用关键字的向量Vector,微调LLM来抽取关键词。

关键词LLM

具体流程如下:
在这里插入图片描述
输入:法规数据库,用户问题

  1. 使用关键字LLM从用户询问中抽取关键字,把每个关键字通过Bert得到K个vector;将用户的输入送到Bert模型,得到整个句子的Query向量

  2. 对每个关键字得到关键字+用户Query的组合vector
    v i = k i ∥ k i ∥ + α s ∥ s ∥ v_i=\frac{k_i}{\left\|k_i\right\|}+\alpha \frac{s}{\|s\|} vi=kiki+αss

  3. 除以 ∣ ∣ k i ∣ ∣ ||k_i|| ∣∣ki∣∣应该代表对向量进行归一化, α \alpha α 对应关键词的超参权重;

  4. 对每个法规,计算法规 l j l_j lj 与刚刚得到的 v i v_i vi 的相似性 s j s_j sj

  5. 最后选择top-k个相似法规。

Law LLM

用937k个国家法律案例来训练Bert,使得能够通过用户query,找到相应到法规与判决解释,结果如下。
在这里插入图片描述

流程总结:首先利用关键词LLM从用户查询中输出若干法律相关的关键词。基于 LawLLM 和 算法1,找到与这些关键词语义向量topk个最相近的法律条文作为领域知识。将用户查询和领域知识投入到微调过的法律语言大模型中,获取最终输出。
在这里插入图片描述
ChatLaw法律大模型目前开源的仅供学术参考的版本底座为姜子牙-13B、Anima-33B,使用大量法律新闻、法律论坛、法条、司法解释、法律咨询、法考题、判决文书等原始文本来构造对话数据。

LLM模型

ChatLaw-13B,此版本为学术demo版,基于姜子牙Ziya-LLaMA-13B-v1训练而来。

  • 优点:得益于姜子牙的优秀中文能力以及对数据清洗、数据增强过程的严格要求,在逻辑简单的法律任务上表现优异。
  • 缺点:对逻辑复杂的法律问答效果不佳,需要用更大参数的模型来解决。

ChatLaw-33B,此版本为学术demo版,增加了训练数据,且基于Anima-33B训练而来。

  • 优点:逻辑推理能力大幅提升。
  • 缺点:因为Anima的中文语料过少,导致问答时常会出现英文数据。

匹配模型

ChatLaw-Text2Vec,使用93w条判决案例做成的数据集基于BERT训练了一个相似度匹配模型,可将用户提问信息和对应的法条相匹配,例如:

“请问如果借款没还怎么办。”

“合同法(1999-03-15): 第二百零六条 借款人应当按照约定的期限返还借款。对借款期限没有约定或者约定不明确,依照本法第六十一条的规定仍不能确定的,借款人可以随时返还;贷款人可以催告借款人在合理期限内返还。”

两段文本的相似度计算为0.9960

基于可商用的模型训练而成的版本会作为后续产品内部接入的版本,对外不开源,可以在这里进行开源版本模型的试用。

模型评估

收集了十年来的全国司法考试题目,并编制了一个测试数据集,包含2000个问题及其标准答案,以衡量模型处理法律多项选择题的能力。 然而,发现模型的准确率普遍较低。在这种情况下,仅仅比较准确率似乎没有什么意义。
因此,建立了一个基于Elo积分的模型竞赛评估机制,受到电子竞技比赛匹配机制和Chatbot Arena设计的启发,以更有效地评估模型处理法律多项选择题的能力。
在这里插入图片描述
结论:
(1)引入与法律相关的问答和法规数据可以在一定程度上提高模型在多项选择题上的性能;
(2)添加特定任务类型的训练可以显著提高模型在该类型任务上的性能。例如,ChatLaw模型表现优于GPT-4的原因是我们使用了大量的多项选择题作为训练数据;
(3)法律多项选择题需要复杂的逻辑推理,因此具有更多参数的模型通常表现更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1427311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决VSCode使用Remote SSH连接远程服务器免密登陆

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📗本文收录于杂项系列,大家有兴趣的可以看一看 📘相关专栏Rust初阶教程、go语言基础系列…

【Redis】Redis集群方案应该怎么做 都有哪些方案

🍎个人博客:个人主页 🏆个人专栏:Redis ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 (1)twemproxy (2)codis (3)redis cluster3.0自带的集群 …

【每日一题】7.LeetCode——合并两个有序链表

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》|《数据结构与算法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢…

C语言系列-联合

🌈个人主页: 会编程的果子君 ​💫个人格言:“成为自己未来的主人~” 目录 联合体 联合体类型的声明 联合体的特点 相同成员的结构体和联合体对比 联合体大小的计算 联合的一个练习 联合体 联合体类型的声明 像结构体一样,联合体也是由…

高并发术语—吞吐量

现在面试一圈,都要讲讲高可用,高并发,高性能,如果不说上两句,对不起自己程序员的身份。 但是小公司哪里有那么大的并发量供你学习和调试呢,还是要从市面上的内容来学习这些概念 响应时间response time 请…

PFA氟气吸收装装置耐强酸PFA气体洗涤装置本底纯净

PFA氢气吸收装置在PFA尾气处理中扮演着重要的角色。PFA(可溶性聚四氟乙烯)是一种聚合物材料,具有良好的化学惰性和耐腐蚀性。在半导体工业过程中,PFA尾气中可能含有氢气等有害气体,需要进行处理以确保环境安全和合规性…

Linux进程信号处理:深入理解与应用(1)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:its 6pm but I miss u already.—bbbluelee 0:01━━━━━━️💟──────── 3:18 🔄 ◀️…

【架构】Docker实现集群主从缩容【案例4/4】

实现集群主从缩容【4/4】 接上一节,在当前机器为4主4从的架构上,减缩容量为3主3从架构。即实现删除6387和6388. 示意图如下: 第一步:查看集群情况(第一次) redis-cli --cluster check 127.0.0.1:6387roo…

前端性能优化:Vue项目打包后app.xxx.js 和 chunk-vendors.xxx.js 文件太大,导致页面加载时间太长

问题场景,如下图,环境上的 app.js 和chunk-vendors.js 两个文件大小,高达3.4M 和 2M ,加载所耗费的时间也很长。 下面说一下如何解决: 1、首先需要安装插件 compression-webpack-plugin,我这里用的是6.1.1…

Java多线程--避免同步机制带来的死锁问题及用Lock锁解决线程安全问题

文章目录 一、死锁(1)说明(2)案例1、案例12、案例23、案例3 (3)诱发死锁的原因及解决方案1、诱发死锁的原因2、避免死锁 二、JDK5.0新特性:Lock(锁)(1)介绍(2…

C++集群聊天服务器 网络模块+业务模块+CMake构建项目 笔记 (上)

跟着施磊老师做C项目&#xff0c;施磊老师_腾讯课堂 (qq.com) 一、网络模块ChatServer chatserver.hpp #ifndef CHATSERVER_H #define CHATSERVER_H#include <muduo/net/TcpServer.h> #include <muduo/net/EventLoop.h> using namespace muduo; using namespace …

Qt6入门教程 15:QRadioButton

目录 一.简介 二.常用接口 三.实战演练 1.径向渐变 2.QSS贴图 3.开关效果 4.非互斥 一.简介 QRadioButton控件提供了一个带有文本标签的单选按钮。 QRadioButton是一个可以切换选中&#xff08;checked&#xff09;或未选中&#xff08;unchecked&#xff09;状态的选项…

深信服技术认证“SCCA-C”划重点:深信服云计算关键技术

为帮助大家更加系统化地学习云计算知识&#xff0c;高效通过云计算工程师认证&#xff0c;深信服特推出“SCCA-C认证备考秘笈”&#xff0c;共十期内容。“考试重点”内容框架&#xff0c;帮助大家快速get重点知识。 划重点来啦 *点击图片放大展示 深信服云计算认证&#xff08…

SG2520CAA汽车用晶体振荡器

爱普生SG2520CAA是简单的封装晶体振荡器&#xff08;SPXO&#xff09;&#xff0c;具有CMOS输出&#xff0c;这款SPXO是汽车和高可靠性应用的理想选择&#xff0c;符合AEC-Q200标准&#xff0c;功耗低&#xff0c;工作电压范围为1.8 V ~ 3.3 V类型&#xff0c;宽工作温度-40℃~…

binder android

文心一言的回答 Binder驱动是Android操作系统中用于进程间通信&#xff08;IPC&#xff09;的机制。它提供了一种高效、跨进程的数据传输方式&#xff0c;使得应用程序的不同组件可以在Android系统上互相通信。 Binder驱动基于Linux内核&#xff0c;其核心组件是一个称为Bind…

git小白之路

初始配置 配置账号密码 git config --list # 设置git的name git config --global user.name "determination" # 设置git的邮箱 git config --global user.email "XXXX.XX.conm" 配置ssh-key ssh-keygen -t rsa -C "usernameemail.com" 添…

活用社交媒体生成二维码:拓展品牌影响力的新时代

社交媒体二维码为品牌在社交媒体平台上的拓展和互动提供了全新的可能性。在这个信息爆炸的时代&#xff0c;如何巧妙地应用社交媒体二维码&#xff0c;成为品牌拓展影响力、与用户建立深度互动的关键。本文将探讨如何精明地应用社交媒体生成二维码&#xff0c;为品牌带来更多的…

来看看思特数字创意产业的科技与狠活儿~ 冰雪大世界图集

01    哈尔滨冰雪大世界以“龙腾冰雪 逐梦亚冬”为主题&#xff0c;为世界各地游客打造一座集冰雪艺术、冰雪文化、冰雪演艺、冰雪建筑、冰雪活动、冰雪体育于一体的冰雪乐园。      02    服务商思特数字创意公司构建“龙腾之韵、雪城乐章、跳动音符、雪映流光”四…

leetcode-35.搜索插入位置

题目 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入…

幻兽帕鲁服务器搭建

获取服务器 有如下方法&#xff1a; 阿里云提供现成的幻兽帕鲁服务器&#xff0c;支持一键部署和升级。购买通用服务器或利用已有的主机&#xff0c;配置幻兽帕鲁服务。 第一种可以零代码实现&#xff0c;本文不作赘述&#xff0c;本文主要介绍如何通过已有的Linux服务器实现…