NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

我们如何利用 ChatGLM-6B,在涉虚拟币犯罪判例检索问答领域落地?

  • 2023-11-11
    北京
  • 本文字数:6356 字

    阅读完需:约 21 分钟

大小:3.16M时长:18:23
我们如何利用ChatGLM-6B,在涉虚拟币犯罪判例检索问答领域落地?

在当今科技日新月异的时代,LLM(Large Language Model,大语言模型)作为一种创新性的人工智能技术,已逐渐成为驱动自然语言处理领域及社会科学研究方法变革的重要力量。它以其强大的自然语言理解和生成能力,引领着人工智能领域的新一轮革命,并为多个领域带来应用层面的突破性成果。LLM 为研究人员提供了一种高效、低成本的研究手段,成为改变我们生活、工作、思维方式的重要技术。

 

本文将重点关注 LLM 在法律领域的应用,探讨其如何在涉虚拟币犯罪判例检索问答方面发挥智能化应用价值和潜力,同时也为法律行业的智能化发展提供有益参考和启示。

 

LLM(Large Language Model),即大语言模型,是一种基于深度学习技术的自然语言处理模型,这些模型通常拥有数十亿到数万亿个参数,使用大规模的语料库进行训练,能够学习到自然语言的语法和语义,从而可以生成人类可读的文本,实现自然语言生成、文本分类、文本摘要、机器翻译、语音识别等任务。

 

近年来,自然语言处理(NLP)领域取得了突破性进展,大型预训练语言模型如 BERT、GPT 和 BART 等成为瞩目创新。注意力机制(Attention Mechanism)和 Transformer 网络架构的引入,大幅提升了神经语言模型的能力。BERT 模型开创了“预训练-微调”的成功范式,极大推动了 NLP 的进步,并为 NLP 的工程化应用提供了便利。如今,预训练模型、迁移学习和零样本学习等技术仍在不断发展和演进。2022 年底,ChatGPT 的问世揭示了 LLM 大规模应用的潜力,促使各领域各类基于 LLM 的应用纷纷涌现。

 

在法律领域,LLM 虽无法短期内替代律师角色,但能提升其工作效率,并在合同审核、合同分析、资料查找和法律研究,以及合同起草、法律结果预测、量刑建议和保释建议等场景展现出巨大应用潜力。

 

海外方面,OpenAI 领投了 AI 法律顾问 Harvey 的 500 万美元种子轮融资,全球最大律所已与 Harvey 达成合作,引入其对话式 AI 聊天机器人,可自动化处理法律文件并研究客户案例;Casetext 公司推出了由 GPT-4 支持的 CoCounsel(AI 法律助理),可协助客户快速进行法律研究和准备证词,识别关键文件和信息,还能在客户上传合同和政策需求后,识别关键条款、解决冲突和风险,并提出修改建议;ROSS 公司也与 OpenAI 合作推出了用于法律研究的 API。

 

在国内,最高人民法院提出的“多元解纷和诉源治理”的指导思想,为人工智能在金融法律纠纷解决全流程中发挥重要作用提供了契机。目前,LLM 已涉及的场景包括:法律文书的自动生成、法条文书的语义解析、法律问题问答、案件检索、智能合同管理、法律合规检查。

 

LLM 的引入正以前所未有的方式改变法律领域的面貌,重塑法律行业格局,助力提高工作效率和准确性,为律师和客户开创更加高效、便捷、智能化的法律服务新时代。

 

目前,通用中文 LLM 已有 ChatGLM、Baichuan、Ziya-LLaMA 等模型。在司法领域,已涌现出诸如 LaWGPT、ChatLaw 和 LexiLaw 等具有代表性的模型,致力于利用先进的人工智能算法为法律行业提供智能化的解决方案。

 

为何要做虚拟币判例检索 LLM?

 

在利用当前主流的中文法律专业 LLM 进行涉虚拟币犯罪场景的测试过程中,我们发现其表现效果并不理想。针对涉虚拟币犯罪这一新兴领域,法律专业 LLM 的结果在准确性方面存在显著不足,且“睁眼说瞎话”的模型幻觉现象严重。此外,从用户使用场景来看,判例的关联度高且更新及时的结果更受关注,对此,模型的表现亦难以达到预期。

 

涉虚拟币犯罪属于新兴领域,取证、定罪判罚的界定模糊,需要广泛借鉴。

 

虚拟币作为一种新兴的数字资产,正日益受到全球范围内的关注。然而,伴随着虚拟币的发展,与之相关的各类犯罪活动也呈现出日益猖獗的态势,对全球法律界和司法体系提出严峻考验,传统法律框架在面对涉虚拟币犯罪活动时已显得模糊和不完善。

 

首先,在取证方面,虚拟币交易依托区块链技术进行,其去中心化和匿名特性使得犯罪分子难以被追踪,因此亟须针对这一新兴领域开发更高效精准的取证工具及策略方法;其次,在犯罪行为的界定方面,虚拟币犯罪类型丰富多样,包括诈骗、洗钱、黑客攻击及虚假 ICO(首次代币发行)等,虽然可参考传统犯罪类型,但涉虚拟币犯罪在某些方面具有独特性,有必要对其进行精确界定,以确保在定罪和量刑过程中保持公正和一致性。此外,在审理涉虚拟币犯罪案件时,法官定罪判罚需全面考虑多种因素,如犯罪严重程度、被害人损失、犯罪嫌疑人恶意意图等,以确保判决结果的合理性。

 

面对上述挑战,该领域相关用户迫切渴望拥有一款智能产品,可以帮助快速归纳总结历史判例信息,从而对当前涉虚拟币犯罪场景作出合理分析判断,进而为侦破和取证工作提供指导。

 

涉虚拟币犯罪判例检索 LLM 研发应用

 

鉴于上述结果,我们决定基于用户实际场景需求,快速搭建研发一款面向涉虚拟币犯罪特定领域的灵活实用型检索应用产品。该产品的首要目标是精准实用,杜绝模型幻觉,保证检索结果可为用户提供有针对性的、更高效的犯罪线索和证据整理指导;其次,我们力求低成本快速部署,无需进行 fine-tune(对预训练模型进行微调),无需多轮问答,直接充分利用现有的涉虚拟币犯罪判例库,实现高效应用。

 

项目框架

 

判例检索 LLM 共完成两个任务,一个是基于 Embedding 的判例检索(替换现有关键词匹配的检索方式),可以更有效地检索和匹配相关判例;另一个是基于判例库的法律问答系统,理解用户提出的问题,并在判例库中寻找相关答案。



  1. 文本预处理与意图识别


在项目构建初期,我们对判例库中的文档进行预处理,并生成对应的 Embedding 向量进行存储。在后续的用户的请求过程中,系统直接从矢量数据库中进行向量检索即可,而无须实时调用模型对文本进行 Embedding 编码。该设计旨在提高检索效率,降低实时计算成本,快速准确响应用户需求。


判例库文档处理步骤如下:

 

a. 对判例库里的样本进行预处理和清洗,筛选出具有代表性的判例;

b. 对判例内容进行切分,根据特定策略将长文档切分为若干部分,并保留关键句子(包括案发过程、事实描述、法院观点、判决内容及所依据条款等),组合成高质量文档;

c. 为每个文档生成句级别的 Embedding,将其融合成判例级别的 Embedding,最后将这些 Embedding 存储在矢量数据库(Milvus)中。此过程为一次性任务。


此流程旨在确保判例库中的文档具有高度的代表性和准确性,为后续的向量检索和应用提供可靠的数据基础。在实施检索或问答任务之前,我们还需对“用户输入”进行意图识别。在法律查询场景中,用户的意图主要可分为以下几类:查询案例、查询判决结果、查询法律条款等。在此基础上,为涵盖其他可能的意图,我们还将添加一个“无意图、非法律”的类别,作为“Negative”处理。

 

  1. 判例检索


法律实践在很大程度上依赖于过去的判例,然而判例内容复杂多变,且需结合上下文场景进行理解。传统基于关键词的搜索方法会出现误召回问题。为提高检索效率和准确性,更为有效的方法是通过对查询文本的语义信息进行学习,然后借助判例库的语义表征来做匹配,进而召回相关判例。该方法有助于克服基于关键词搜索的局限性,从而提高法律实践中的检索效果。


此模块提供判例查询功能,通过运用 Embedding 模型将用户输入的查询文本转换为语义向量,再将所得向量与已编码的每个判例文档的语义向量进行相似度计算和排序,从而召回 TopN 向量所对应的原始文本。在判例检索过程中,无需使用大规模模型,我们采用 ChatLaw-Text2Vec 作为基础编码模型,用于生成文本的语义向量。


在获取判例文档的 Embedding 之后,就可以进行检索模块的构建,其主要步骤如下:

 

a. 对用户查询文本进行预处理,并进行意图识别。若意图类别为“查案例”,则向下执行“检索(Retrieval)”分支的任务;

b. 将用户的查询文本生成 Embedding(语义向量),并应用于矢量数据库检索;

c. 获取 TopN 的 Embedding 对应的原判例文本;

d. 展示判例列表,并附上判例链接。

 

  1. 法律问答

 

问答模型是基于检索功能的升级,增加了对问题理解及信息整理归纳的能力。针对用户提出的问题,问答模型充分利用大模型所具备的知识嵌入能力,首先进行判例检索,再基于检索出的判例,应用大模型进行归纳分析,并生成准确的回答。


问答模型的升级步骤如下:

 

a. 对用户查询文本进行预处理,并进行意图识别。若意图类别为“查判决结果”或“查法律条款”,则向下执行“问答(Chatbot)”分支的任务;

b. 将用户的问题文本生成 Embedding(语义向量),并应用于矢量数据库检索;同时,获取 TopN 的 Embedding 对应的原判例文本;

c. 基于对 Query(查询)的理解,生成 Question(基于模板),再将 Question 与候选的语义相关句子一同构成 Instruction(GPT 模型的指令);

d. 使用 GPT 模型,基于生成的 Instruction 生成回答;

e. 展示回答结果,并附上所依据判例的链接。

 

数据准备

 

  1. 语料准备和清洗

 

清洗和标准化数据,包括文本格式、编码、字符集等,步骤如下:

 

a. 进行数据去重,以确保每份判决文书具有唯一性;

b. 分句和筛选,只保留包含关键信息的句子;

c. 组合筛选后的句子,生成结构清晰、内容连贯的新文本段落。


 

  1. 文本向量化


采用预训练的 ChatLaw-Text2Vec 模型,将文本段落转换为稠密向量,并将转换后的向量导入 Milvus 数据库,设置向量字段的索引为 INV_FLAT 类型。

 

 

  1. 向量数据库的构建


构建 Milvus 数据库,用于高效存储向量化的文本数据。确保数据库的高效索引和查询性能,以满足文本检索需求。

 

 

模型训练

 

  1. 用户意图预判断:法律 VS 非法律(二分类)

 

建立一个用于法律意图分类的深度学习模型,使用 BERT 等预训练模型,标注样本量 200 个。对用户提示词进行法律相关和非法律相关的二分类;训练和评估模型,以确保高准确性:

 

a. 如果预判断为“非法律”时,任务终止,并返回“无法为您提供相关帮助”;

b. 如果预判断为“法律”时,则进入四分类意图判断。

 

 

  1. 用户意图分类判断(四分类),确定进入检索(Retrieval)分支或问答(Chatbot)分支

 

为了使问题的范围更精确,四分类模型将用户 Query(查询)在法律相关范围内进一步划分为:案例、定罪、条款、无意图。我们采用了 GPT 方式生成数据集:给定一些初始样本,并设定好目标要求,输入 GPT 来生成训练样本,标注样本量 2000 个。

 

输入样本:

Plain Text

我想做法律搜索的词条分类任务(共3个类别:案例、定罪、条款),请帮我生成一些标注数据。我给你一些样例:

text1: "偷了一只鸡判什么罪", label1: "定罪";

text2: "给我一个区块链欺诈的判决案例", label2: "案例";

text3: "开设赌场罪的判决参考哪法法律法规", label3: "条款"。

生成数据:

Plain Text

text: "杀人罪的量刑标准是什么",label: "定罪"

text: "最高法关于合同违约的判例有哪些",label: "案例"

text: "盗窃罪的相关法律条款在哪里可以找到",label: "条款"

text: "最高法院针对猥亵儿童的判决案例有哪些",label: "案例"

text: "故意伤害罪的构成要件是什么",label: "定罪"

text: "行政违法罚款的法规在哪里可以查到",label: "条款"

text: "法院如何定罪故意杀人案",label: "定罪"

text: "最高法关于合同解除的判例有哪些",label: "案例"

text: "毒品罪的刑罚在哪个法律条款中规定",label: "条款"

text: "最高法院针对贪污犯罪的判决案例有哪些",label: "案例"

……

 

在模型训练过程中,除了设置一些模型的超参数以防止过拟合现象外,我们还对输入数据进行了数据增强(Data Augmention)处理。数据增强主要包括以下两方面:

 

a. 关键词替换:随机对关键词进行替换,以增强模型在具体案件或意图上的泛化能力。例如,“开设赌场犯什么罪”可以被替换为“洗钱犯什么罪”、“开设赌场怎么判”等。

b. 随机 Mask 关键词:对关键词进行随机 Mask 处理,以增强模型对意图词的着重理解。例如,“开设赌场犯什么罪”可以被替换为“[MASK]犯什么罪”、“[MASK]怎么判”等。

 

模型输出结果展示:

 

模型推理

 

在检索阶段,我们采用 Milvus 数据库进行相似度检索,根据用户输入的查询条件,从数据库中筛选出与用户需求相似度较高的文档,并将其作为检索结果返回。

 

 

图 11 模型推理检索阶段

 

在对话生成阶段,我们采用预先构建好的 Instruction 来指导大模型生成相应的回答。

 

 

回答结果:


 

模型研发过程中的难点及解决方法

 

  1. 开源模型选用

 

目前,我们采用的是 ChatGLM-6B 模型进行推理,ChatGLM 模型优势如下:

 

a. 发布时间早:ChatGLM 发布时间较早,使得它一定程度上成为自然语言处理领域的历史见证和技术发展的缩影;

b. 资源要求低:ChatGLM-6B 的部署所需资源相对较低,它可以在各种设备和环境中轻松运行,降低了使用门槛;

c. 非商业化开源使用:ChatGLM 遵循开源协议,允许非商业化使用,这为研究和开发者提供了良好的基础平台;

d. 中文场景优化:ChatGLM 使用海量中文语料数据,并对中文对话场景进行了大量优化,使其在中文场景下拥有出色表现。ChatGLM 在中文自然语言处理领域具有较高的应用价值。

 

其他模型应用劣势:

 

a. LaWGPT:该模型在某些情况下的回答效果不够稳定,尤其在给定参考文档的检索问答场景下,其表现相较于纯生成问答场景并未出现明显提升。

b. ChatLaw:由于模型的基座 Ziya 模型采用了 LLaMA,其参数并未开源,因此无法直接应用。

c. LangChain:该模型支持 ChatGPT 接口调用,但调用速度慢,且费用较高。

d. FastGPT:该模型支持上传知识库文档以及 ChatGPT 接口调用,但费用较高,且在灵活性方面表现较差。

 

  1. 模型训练阶段

 

• 难点 1:判例超长,简单切句造成语义断开

 

在数据处理阶段,我们面临的主要挑战是处理超长文书,这些文书的长度远超过 LLM 所支持的最大输入长度,且大部分文本并未包含关键信息,这对大模型的推理造成一定困难。同时,若单纯按句子级别进行切分,然后筛选,将可能导致语义中断,即多个连续句子在描述同一件事,切割后单个句子与原文档的语义存在一定差异。

 

解决方法:为解决这一问题,我们设计了一系列关键词和表达模板,用于识别提取在描述重要信息的句子。

 

• 难点 2:意图分类训练缺乏数据标注

 

在意图分类模型训练阶段,我们面临的一个重要问题是缺乏相关的标注数据。

 

解决方法:为克服这一挑战,我们设计了一系列半自动化的数据标注与数据增强方法(前面数据层模块已有描述),利用 ChatGPT 的能力,生成较为准确的标注样本。同时,通过数据增强策略对样本进行扩充,从而提高模型的训练质量和性能。

 

  1. 数据处理与存储阶段

 

• 难点 1:单位文件太大,无法读入内存

 

在判例清洗阶段,需处理的大文件体积庞大,这导致文件读取速度缓慢,降低整体效率;当大量数据涌入内存,Jupyter 可能会因内存不足而崩溃,导致程序中断;同时,大量数据也会导致预处理环节耗时较长,进一步影响整个清洗阶段的进度。

 

解决方法:我们采用“数据流读取”的方式逐批次读取数据,以降低内存占用,提高数据读取速度;同时设置“多进程并行执行”数据清洗任务,以进程数量切分数据,处理完成后再按照切分的顺序拼接。

 

• 难点 2:无法实现快速向量检索

 

我们一次性将全量判例数据进行 Embedding 之后,需要存储起来以供服务使用,常规的方法例如存入本地磁盘或者关系型数据库,无法实现快速的向量检索,只能遍历所有数据并计算相似度。

 

解决方法:向量数据库的使用。通过引用向量数据库,实现了基于向量的检索,极大降低查询耗时。

 

应用场景和实战效果

 

我们使用真实的判例数据作为外挂知识库,这使得我们的模型在法律场景下拥有较高的准确率,即当用户在询问涉及“查定罪”、“查条款”以及“查案例”等场景时,模型生成的效果明显优于纯 LLM 的生成结果。此外,LLM 的幻觉问题也随着外挂知识库的引入有所缓解。

 

以下是模型效果:

 

Plain Text从网上爬数据犯什么罪?
复制代码

 

 

Plain Text为赌博人员提供四方支付平台怎么判?
复制代码

 

 

可以看出,模型准确地生成了判定结果、依据条例。

 

当前模型的不足及优化空间

 

(一)提高意图多样性表达的支持

 

在意图识别阶段,我们经过自主生成的数据集进行训练。尽管已对某些意图词进行了数据增强,例如将“如何定罪”替换为“怎么判”、“犯什么罪”、“违法吗”、“合法吗”等同义词、近义词、模糊词,但用户的表达方式千差万别。因此,我们致力于进一步扩展法律场景下各种意图的表达逻辑,了解用户的不同表达方式和需求,以提高模型的泛化能力。

 

(二)复杂推理能力不足

 

目前,我们的模型虽在明确意图的法律问题上表现准确,但在涉及复杂逻辑推理的场景下,能力尚且不足。例如用户提供了一段关于复杂案件经过的描述,但并未明确给出有关案件的结果,这时模型难以提供满意的回答。因此,模型有待优化,上下文理解能力有待强化。

 

(三)推理成本

 

当前,我们选用的是 ChatGLM-6B 模型进行推理。ChatGLM 官方团队还发布了该模型的量化版本(ChatGLM-6B-int4,ChatGLM-6B-int8),这些版本可以显著降低部署和单次推理所需的资源消耗。但经过我们的试用后,发现这些量化版本的效果并不理想,因此未将其纳入使用。鉴于此,我们将继续寻找性价比更高的模型,以满足我们的需求。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-11-11 11:565547

评论 1 条评论

发布
用户头像
“c. LangChain:该模型支持 ChatGPT 接口调用,但调用速度慢,且费用较高” Langchain是个开发框架,什么时候变成模型了?
2023-11-22 10:48 · 北京
回复
没有更多了
发现更多内容

【LeetCode】字符串解码Java题解

Albert

LeetCode 10月月更

Web3流支付迎来新质变,Zebec开放Zepoch节点申请

小哈区块

【一Go到底】第八天---用户输入

指剑

Go golang 10月月更

议题征集|Flink Forward Asia 2022 正式启动

Apache Flink

大数据 flink 流计算 实时计算

Python进阶(三)函数式编程之reduce()

No Silver Bullet

Python reduce 10月月更

Sentinel Go-毫秒级统计数据结构揭秘

柠檬汁Code(binbin0325)

数据结构 源码分析 限流 Sentine 10月月更

七天杀上GitHub榜首!Java并发编程深度解析实战,JUC底层原理揭秘

Geek_0c76c3

Java 数据库 开源 程序员 架构

线下活动 | 龙智Atlassian ITSM 解决方案即将亮相2022全球运维大会上海站

龙智—DevSecOps解决方案

gops GOPS全球运维大会

即时通讯技术周刊(第1期):懒人网络编程系列 [共14篇]

JackJiang

网络编程 即时通讯 IM

leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树(中等)

okokabcd

LeetCode 算法与数据结构

Web3流支付迎来新质变,Zebec开放Zepoch节点申请

西柚子

Docker远程连接设置

程序员欣宸

Docker 容器 10月月更

直呼内行!阿里大佬离职带出内网专属“Redis设计应用实践”学习笔记

Geek_0c76c3

Java 数据库 开源 程序员 架构

文盘Rust -- struct 中的生命周期

京东科技开发者

redis rust 生命周期 Trait Trait Objects

Qt | 按钮控件的使用 QCheckBox

YOLO.

qt 10月月更 C++

代码质量与安全 | 清洁代码(Clean Code)比您认为的更重要

龙智—DevSecOps解决方案

clean code 清洁代码

Surpass Day——Java 多态、final关键字、常量、package、import、访问控制权限修饰符

胖虎不秃头

Java 10月月更 se

关于 Angular view Query 的 id 选择器问题的单步调试

Jerry Wang

typescript 前端开发 angular web开发 10月月更

版本控制 | 一文了解VR内容创作的步骤与关键技术

龙智—DevSecOps解决方案

vr VR/AR

低代码将干掉65%软件开发工作,留给码农的时间不多了!

雨果

低代码

Windows开发工具安装

青柚1943

dapr

攻击面分析及应对实践

vivo互联网技术

安全 风险管理 互联网安全

Qt | 实现网页历史记录和查找功能 QWebEngineView

YOLO.

qt 10月月更 C++

静态代码分析 | 数字驾驶舱时代,如何确保车载信息娱乐系统的网络安全?

龙智—DevSecOps解决方案

网络安全 车载信息娱乐系统 IVI

Surpass Day——Java this关键字

胖虎不秃头

Java 10月月更 se

数据库基础

说故事的五公子

MySQL 数据库 sql

Surpass Day——Java static关键字、继承、方法覆盖

胖虎不秃头

Java 10月月更 se

从SpringBoot启动,阅读源码设计

Java 架构

Python进阶(四)浅谈Python闭包

No Silver Bullet

Python 闭包 10月月更

LinkedList源码分析(一)

知识浅谈

linkedlist 10月月更

SpringCloud版本升级后bootstrap.yml配置不生效

共饮一杯无

Java SpringCloud spring-boot 10月月更

我们如何利用ChatGLM-6B,在涉虚拟币犯罪判例检索问答领域落地?_生成式 AI_中科链源数据平台_InfoQ精选文章