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

文章目录

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

北大团队发布首个的中文法律大模型落地产品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)法律多项选择题需要复杂的逻辑推理,因此具有更多参数的模型通常表现更好。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

纯html+css+js静态汽车商城

首页代码 <!DOCTYPE html> <html class"no-js" lang"zxx"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&qu…

【前端】快速掌握CSS-flex布局

文章目录 一、标准流二、浮动1. 基本使用2. 产品区域布局(1) HTML标签(2) CSS样式 3. 清除浮动(1) 场景搭建(2) 额外标签法(3) 单伪元素法(4) 双伪元素法(5) overflow法 三、Flex布局1. Flex组成2. 主轴对齐方式3. 侧轴对齐方式4. 修改主轴方向5. 弹性伸缩比6. 弹性盒子换行7. …

手写栈【解析数学表达式,重复字符串解码】

目录 解析数学表达式 字符串解码/智能重复 解析数学表达式 const stock []; // 先进后出&#xff0c;每一次出栈&#xff0c;即一对 () const parenthesesPairPosition {}// 剔除两侧空格 const removeBlank (expression, l, r) > {while (expression[l] ) {l}while…

【算法详解 | 二分查找】详解二分查找 \ 折半查找高效搜索算法 | 顺序数组最快搜索算法 | 递归循环解决二分查找问题

二分查找 by.Qin3Yu 本文需要读者掌握 顺序表 的操作基础&#xff0c;完整代码将在文章末尾展示。 顺序表相关操作可以参考我的往期博文&#xff1a; 【C数据结构 | 顺序表速通】使用顺序表完成简单的成绩管理系统.by.Qin3Yu 文中所有代码使用 C 举例&#xff0c;且默认已使用…

Windows存储空间不足局域网文件共享 Dism备份系统空间不足

问题情景 在日常使用中难免遇到Windows的空间不足的情况&#xff0c;常用办法是清理垃圾释放空间&#xff0c;部分场景例如我们需要使用Dism备份完整系统&#xff0c;所以需要非常大的存储空间不够&#xff0c;如果空间不够什么才是最有效的方案呢&#xff1f; 我们假设身边没有…

【HarmonyOS 4.0 应用开发实战】TypeScript入门之模块化详讲

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

如何在Raspberry Pi上启用SSH并结合cpolar内网穿透实现公网远程访问本地树莓派

文章目录 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址4.5 ssh公网…

Oracle函数使用

ROW_NUMBER函数 ROW_NUMBER() OVER(PARTITION BY column1 ORDER BY column2 DESC) -- 根据column1分组按column2降序排序生成序号&#xff0c;序号由小到大,会生成一个唯一的序号 -- 例如column2中有两列值都为1,那他们的序号会有一个在上一个在下ROW_NUMBER() OVER(ORDER BY …

Redis-持久机制

文章目录 为什么有持久化什么是持久化RDB文件创建SAVEBGSAVE 文件载入 优缺点 AOF日志步骤 对比数据恢复 总结 Redis是一个开源的内存数据结构存储系统&#xff0c;被广泛应用于Web应用中&#xff0c;可以用作数据库和缓存服务器。它具有高性能、高并发、高可用性等特点&#x…

计网——应用层

应用层 应用层协议原理 网络应用的体系结构 客户-服务器&#xff08;C/S&#xff09;体系结构 对等体&#xff08;P2P&#xff09;体系结构 C/S和P2P体系结构的混合体 客户-服务器&#xff08;C/S&#xff09;体系结构 服务器 服务器是一台一直运行的主机&#xff0c;需…

零基础小白到底要不要学习鸿蒙,看完这篇再决定吧~

随着华为鸿蒙系统的问世&#xff0c;不少技术小白在是否学习鸿蒙的问题上犹豫不决。鸿蒙作为华为自主研发的操作系统&#xff0c;拥有许多独特的技术优势和市场前景。但对于小白来说&#xff0c;是否值得投入时间和精力去学习鸿蒙开发呢&#xff1f; 1.鸿蒙系统开发&#xff1…

短视频去水印教程,免费一键获取视频、图片、文案【迅风去水印】

自媒体行业的蓬勃发展&#xff0c;让越来越多的创作者涌入其中。然而&#xff0c;剪辑过程中常常遭遇到一个令人头疼的问题&#xff0c;那就是视频或图片上的水印。这些水印不仅会影响到作品的美感&#xff0c;还可能侵犯到版权。为了帮大家解决这一难题&#xff0c;分享一个免…

新手不会Git也能玩Github吗?

新手不会Git也能玩Github吗&#xff1f; 前言使用Github的准备步骤使用一种访问外网资源的方法&#xff08;这一步才是新手最容易&#xff09;注册账号 创建一个自己的仓库创建完仓库后的界面 搜索你想要的代码类型以搜索坦克大战为例以下载烟花代码为例 总结 前言 说到Github&…

认识 SYN Flood 攻击

文章目录 1.什么是 SYN Flood 攻击&#xff1f;2.半连接与全连接队列3.如何防范 SYN Flood 攻击&#xff1f;参考文献 1.什么是 SYN Flood 攻击&#xff1f; SYN Flood 是互联网上最原始、最经典的 DDoS&#xff08;Distributed Denial of Service&#xff09;攻击之一。 SYN…

使用STM32的FMC/FSMC接口实现多路数据传输和并发操作的设计与应用

在基于STM32的系统中&#xff0c;FMC&#xff08;Flexible Memory Controller&#xff09;/FSMC&#xff08;Flexible Static Memory Controller&#xff09;接口可以用于实现多路数据传输和并发操作。通过合理的设计和应用&#xff0c;我们可以提高系统的数据处理速度和效率。…

XML详解

XML 简介 概述&#xff1a;Extensible Markup Language 可扩展标记语言 可扩展&#xff1a;标签都是自定义的。 功能 数据存储&#xff1a;XML 可以用来存储结构化数据&#xff0c;包括文本、数字、日期等各种类型的数据数据交换&#xff1a;XML 可以作为一种通用的数据交换格…

Elasticsearch(ES) 下载添加IK分词器

上文 通过Web请求对 Elasticsearch(ES) 进行索引的 增删查 操作 我们通过web请求 创建了一个索引 但 目前 我们的索引是不具有分词效果的 我们并没有为索引指定分词器 所以 我们目前加进去的数据 就会保持原样 没有分词的能力 我们执行get查询操作 会发现一个 mappings字段 它…

如何访问 Oracle OKE 集群

OKE是Oracle Cloud提供的托管Kubernetes服务&#xff0c;为用户提供强大而灵活的容器编排平台。在本文中&#xff0c;我们将详细介绍如何有效地与OKE集群进行交互&#xff0c;包括访问集群的不同方式、管理访问权限以及执行常见操作的步骤。 1 安装oci命令 1.1 在Oracle Linux…

算法总结归纳(第十天)(动态规划第三部分)(线性dp)

目录 一、简单线性dp 1、最长递增子序列 ①、题目描述 ②、解题思路 ③、代码实现 2、最长连续递增序列 ①、题目描述 ②、解题思路 ③、代码实现 3、最长重复子数组 ①、题目描述 ②、解题思路 ③、代码实现 4、最长公共子序列 ①、题目描述 ②、解题思路 ③、…

Spring Boot 整合 Redis 使用教程

作为开发者&#xff0c;相信大家都知道 Redis 的重要性。Redis 是使用 C 语言开发的一个高性能键值对数据库&#xff0c;是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是「Remote Dictionary Service」的首字母缩写&#xff0c;也就是「远程字典服务」。 Redis 以超…