【大比武08】利用RAG技术构建档案智能问答系统

news2024/11/17 23:48:09

关注我们 - 数字罗塞塔计划

# 大比武2024

本篇是参加“华夏伟业”杯第二届档案信息化公司业务与技术实力大比武(简称“大比武 2024”)的投稿文章,来自燕山大学档案馆(校史馆)的实际项目,由河北科怡科技开发有限公司联合南京兰征信息科技有限公司燕山大学共同研究实施。除了河北科怡的宁飞之外,燕山大学档案馆的柯铁军对本文也有重要贡献。

在数字化时代背景下,随着ChatGPT的出现,档案管理正经历着一场由数字化到智能化的革命。RAG(Retrieval-Augmented Generation,检索增强生成)技术和LLM(Large Language Model,大语言模型)的结合,为档案领域的智慧应用场景开拓提供了新的动力。

一、RAG技术概述

Retrieval-Augmented Generation

RAG技术的提出是为了解决预训练语言模型在处理知识密集型NLP(Natural Language Processing,自然语言处理)任务时面临的几个关键挑战:

1、知识存储有限

尽管LLM能够存储大量知识,但毕竟样本数据依然有限,只能记住训练数据中的信息。如果遇到模型训练时未见过的知识点,模型可能无法准确回答。

2、知识更新困难

随着时间推移,外部知识在不断更新和变化。但预训练模型完成训练,它的知识就固定了,无法轻易更新。要更新这些模型的知识,通常需要重新进行大规模的预训练,既耗时又耗资源。

3、事实性和准确度

在生成式任务中,如问答或文章生成,模型可能会生成看似流畅但实际上不准确或不真实的内容即幻觉问题,因为它们缺乏对特定事实的直接访问。

4、解释性和透明度

用户通常希望理解模型的决策过程,特别是在涉及事实信息时。纯粹的预训练模型通常很难提供生成决策的依据或解释。

图片

RAG技术需要解决的核心问题

RAG+LLM的核心思想是将LLM的生成能力与信息检索技术相结合,以此提高模型在处理各种问答任务时的准确性和可靠性。其核心组成通常包括三个阶段:检索(Retrieval)、生成(Generation)和增强(Augmentation),具体包括:

检索(Retrieval)

在用户提出问题或执行任务时,RAG系统首先从一个外部的知识库中检索与问题相关的信息。这一步骤涉及到将问题转化为查询,然后使用一个检索模型(如向量空间模型)来查找最相关的文档或信息片段。

生成(Generation)

检索到的信息会与原始问题一起作为输入提供给LLM。这些信息为LLM提供了额外的上下文,帮助模型更好地理解问题,并生成更准确、更丰富的回答或内容。

增强(Augmentation)

RAG框架还包括对检索和生成过程的优化和调整,以提高整个系统的性能。这可能包括对检索结果的重排序、上下文的压缩、模型的微调等。

总的来说,RAG利用外部知识库来补充和增强LLM的内在知识,使模型能够处理那些超出其训练数据范围或需要最新信息的任务。

图片

以上可视作基于端到端训练方法的朴素RAG,后续又发展出高级RAG,以及基于模块化架构的模块化RAG

朴素RAG由于检索源与知识库文本信息不匹配以及检索结果中含有无关知识等问题,在知识密集型任务上的表现不佳;为此,学界提出了包括检索预处理、检索、检索后处理和生成的四阶段高级RAG,通过信息对齐和过滤两个维度改进检索增强架构;模块化RAG将整个RAG流程分解为多个独立的模块,包括但不限于检索、生成、增强和适配器等模块,每个模块负责处理特定的子任务。

LLM通过RAG得到了领域知识扩展,提高了在特定领域的任务表现,领域化落地难度和成本也进一步降低,这也为档案领域落地LLM应用提供了契机。

图片

二、档案智能问答系统的构建

Composition

RAG技术可以帮助LLM更好地理解和回应查档用户的问询,提供更加准确和相关的信息,使得用户既能享用LLM的生成能力,又能保证档案知识的本地安全。

基于RAG+LLM来构建档案智能问答系统是档案智能化应用的重要方向之一。基于RAG+LLM的档案智能问答系统原理图如下所示:

图片

上述原理图可以分为三大模块,一共15个步骤(step1-step15)。

1、档案知识库的构建(step1-step6)

图片

数据收集

数据收集是构建档案知识库的第一步。在收集数据阶段,RAG系统需要注意以下问题:确保收集的数据是高质量的,没有错误、偏见或不准确的信息。数据质量直接影响系统生成答案结果的准确性。

数据预处理

收集到的原始数据往往包含噪声和不规范性,需要进行预处理以提高数据质量。数据清洗工作量大,需要借助数据处理工具和大量人工参与。同样,数据预处理质量非常关键,严重影响后续大模型的问答效果。

文本切分

将档案长文本切分成适合模型处理的小块,同时保证每个文本块的语义独立性和完整性。在处理档案数据时,根据文本的结构和内容特性来制定切分规则尤为重要。切分点应当尽可能地尊重自然语言中的语义单位,如句子、段落或意群。确保每个片段在语义上是完整的,避免将一个意群切割成两个部分,造成档案信息的丢失或不连贯。

2、检索模块的构建(step7-step11)

检索模块是连接档案知识库与用户查询的关键环节。向量数据库的构建、检索算法的选择和优化是确保高效准确检索的核心技术。

图片

向量数据库构建

向量数据库的构建是检索模块的基础。在这个过程中,我们需要将档案知识库中的所有文本块转换为向量表示。这一步通常需要选择一个合适的向量化模型,例如bge-large、bce或text2vec等,用来将文本块转换为固定维度的向量表示,再将其存储在向量数据库中,以便后续的检索操作。

检索算法选择

检索算法的选择是决定检索模块性能的关键。常见的检索算法包括BM25、TF-IDF和混合检索算法等。这些算法各有特点,例如BM25算法能够根据文档的长度对检索结果进行加权,TF-IDF算法则能够根据词频和文档频率对检索结果进行加权。

3、生成答案(step13-step15)

生成答案模块负责将检索到的档案信息整合成用户可理解的回答。查询重构、结果重排序和语义理解是生成答案的关键步骤。

图片

查询重构

查询重构旨在提升检索效果。用户提出的原始查询可能包含一些模糊或不精确的信息,查询重构的目的就是通过扩展用户问题的语义,使其更加精确,或者与知识库中切分的文本长度对齐,从而提高检索的相关性。

结果重排序

向量数据库与向量化的查询文本进行相似度计算匹配,可能会返回多个候选答案,需要将这些候选答案按照相似度进行重排序,以选出最靠前的几个答案。

内容生成

将排序后最靠前的几个结果输入给LLM,让其利用生成能力根据用户问题生成答案。可能涉及多种优化方法,如端到端微调或对比学习等。

除了上述三大模块,特别要提一下的是安全访问控制。在档案系统设计过程中,需要根据用户角色分配不同的访问权限,并通过身份认证确保数据访问安全。同样,在档案智能问答系统构建过程中,我们利用RAG技术结合原有的档案系统角色权限,限定某个角色所能访问的知识库范围,从而实现了基于角色权限访问控制的RAG+LLM技术应用。

三、实施效果

Effects

在燕山大学档案馆(校史馆)的实际项目开发过程中,我们构建了基于RAG+LLM的档案智能问答系统,取得了良好的应用效果。

硬件配置

CPU:Intel Xeon Gold 6271C *2

GPU:Nvidia Geforce RTX 4090*4

内存:256G

软件配置

基座大模型:零一万物Yi-34b-chat

向量化模型:bge-large

开发框架:LangChain

系统测试结果(3倍速录屏):

请在公众号  数字罗塞塔计划 中观看

四、结 语

Epilogue

档案智能问答系统是我们尝试大模型融入档案智能化应用的一次初步尝试,它涉及档案知识库的构建、检索模块的开发、答案的生成以及安全访问控制等多个方面。从实际测试的效果来看,RAG技术和大模型的结合为档案问答系统的智能化提供了强大的支持。由于文章篇幅所限,我们只能对一些基本原理和系统框架进行粗浅的介绍,实际开发过程中碰到的困难和挑战远远不止这些,希望以后有机会再分享给大家。同时我们也在不断探索和优化解决方案,以期实现更好的应用效果。

数字罗塞塔计划公众号致力于成为全国领先的档案信息化知识分享与交流平台。独木难成林,众创力量大!作为中立的第三方平台,我们将努力为广大档案信息化从业企业提供一个展示自身业务与技术专业水平的舞台,共同推动档案行业的进步与发展。

关注我们 - 数字罗塞塔计划

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

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

相关文章

拍摄的视频内容怎么做成二维码?视频在线转换成二维码的方法

怎么把拍的个人才艺视频做成二维码呢?现在扫码看视频是实现内容快速传播的一种常用方式,所以很多人会将自己拍摄的视频制作二维码图片,然后分享给其他人扫码获取内容,对于内容的传播速度及用户体验有很好的提升,在很多…

NTLM Relay Gat:自动化NTLM中继安全检测工具

关于NTLM Relay Gat NTLM Relay Gat是一款功能强大的NTLM中继威胁检测工具,该工具旨在利用Impacket工具套件中的ntlmrelayx.py脚本在目标环境中实现NTLM中继攻击风险检测,以帮助研究人员确定目标环境是否能够抵御NTLM中继攻击。 功能介绍 1、多线程支持…

【开发利器】使用OpenCV算子工作流高效开发

学习《人工智能应用软件开发》,学会所有OpenCV技能就这么简单! 做真正的OpenCV开发者,从入门到入职,一步到位! OpenCV实验大师Python SDK 基于OpenCV实验大师v1.02版本提供的Python SDK 实现工作流导出与第三方应用集…

Java---Cloneable接口---浅克隆和深克隆

在Java中,我们如何实现一个对象的克隆呢? 在Java中实现对象的克隆,我们要用到Cloneable接口。克隆也分为浅克隆和深克隆。 1.实现浅克隆 1.重写clone方法 当我们想直接通过前面已经建立好的对象来调用Object类中的clone方法时,…

vbs执行报错vbs没有文件拓展,双击无法打开

如果看不到文件扩展名需要设置: 无法双击打开vbs 一般为注册表问题 解决办法 将下方代码保存为xxx.reg Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.VBS] "VBSFile" [HKEY_CLASSES_ROOT.VBS\PersistentHandler] "{5e941d80-bf96-…

VBA让按钮消失

要求 用VBA搞小程序,有个录入数据的按钮,点击后进行录入数据的操作,操作完成后这个按钮就是灰的,点不动,这个怎么做? 实现过程 没找到让按钮变灰的方法,退而求其次,让按钮消失。 …

linux部署运维1——centos7.9离线安装部署web或java项目所需的依赖环境,包括mysql8.0,nginx1.20,redis5.0等工具

在实际项目部署运维过程中,如果是云服务器,基本安装项目所需的依赖环境都是通过yum联网拉取网络资源实现自动化安装的;但是对于一些特殊场合,在没有外部网络的情况下,就无法使用yum命令联网操作,只能通过编…

Kunpeng Pro测评使用报告

1. 概述 前段时间,收到两条CSDN的短信,邀请我参加Kunpeng Pro的测评活动。说起来,自己玩过的开发板已经不在少数,而自己作为半导体行业的从业者,手上开发过的芯片也有十几款,小到Arm Cortex-A53&#xff0…

北美互联网裁员太狠了,程序员“做管理上岸”越来越难

北美互联网现在裁员太狠了,“做管理上岸”这种事情在现在这种行业形势已经基本不存在了,这个人管理40人的团队该裁还是裁。 然而硅谷还是中国程序员心中的圣地(华子一定程度上也是很多人的心之所向,技术大厂捞人,前后…

Excel计算两个日期之间差额天数及DATEDIF使用

一.计算两个日期之间的差额天数 1.两个日期直接相减就可以得到两个日期间隔的天数,这里需要注意日期格式哦 日期格式需要为XXXX/XX/XX,不能为XXXX.XX.XX,否则显示Value错误如下。 二.使用DATEDIF函数计算差额天数 该函数只能手写,好像不能自…

应对意外断电:气膜建筑的安全防护与智能管理—轻空间

气膜建筑以其独特的结构和高效的建设方式,广泛应用于各类场馆、仓储设施和临时展馆。然而,当遇到意外断电导致气膜内部无法送风时,如何避免气膜倒塌,确保建筑安全呢? 断电应急响应 气膜建筑配备了先进的智能控制系统&a…

从GIMPLE到RTL

从GIMPLE到RTL 从GIMPLE到RTLGIMPLE序列测试代码:CFG如下所示: 一些典型数据结构RTL生成的基本过程变量展开计算当前函数堆栈(Stack Frame)的初始状态变量展开的初始化对可以展开的变量进行展开操作,生成该变量对应的R…

day17

第一题 本题可以采用快速排序的思想,适应随机数指定和三指针划分数组为三个区域的思想: 其中指针的移动细节如上题故事,如下所示: 当a区域的商都大于k时,我们要查找的k位置元素就在左区域,我们进一步在左区…

适合源代码的加密系统

在信息化高度发展的今天,源代码的安全问题日益受到重视。源代码是企业或组织的核心资产,一旦泄露或被篡改,将会对其造成巨大的经济损失和声誉风险。因此,如何有效防止源代码的泄露和算改成为了企业和组织急需解决的问题。沙盒技术…

Git时光机、Git标签、Git分支、GitHub协作

Git时光机(切换版本) 1.查看提交历史 HEAD指针指向这次分支的最后一次提交 版本信息一行显示【git log --prettyoneline】 2.引用日志【git reflog】 (只在自己的工作区中存在) 非常重要:当HEAD指针进行切换之后&…

有类似注册表编辑器的vb6源码吗?vba注册表编辑器

第一步是要实现注册表功能的读写,所有数据类型,枚举列出所有子项 第二步,树形控件之类显示,可视化修改,查看 第三步,导入导出注册表 第四步,注册表监控,检测哪些注册表项是新建、删除…

【Flutter】交错动画自定义动画Hero动画

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Flutter学习 🌠 首发时间:2024年5月29日 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾 目…

北京大学第一医院与智源研究院共同发布基于可信执行环境的AI医学影像挑战赛

肾动脉狭窄是导致继发性高血压及肾功能不全的常见原因,而目前针对肾动脉狭窄功能学的评估尚处于探索阶段。数据保护和可信计算环境是目前人工智能技术应用于临床研究的一大瓶颈。北京大学第一医院与北京智源人工智能研究院心脏AI 联合研究中心特发布基于可信执行环境…

wps表格样式【笔记】

wps表格样式【笔记】 前言版权推荐wps表格样式第一种方法第二种方法 最后 前言 2024-5-15 19:25:47 以下内容源自《【笔记】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://jsss-1.blog.csdn.net …

【第五节】C++的多态性与虚函数

目录 前言 一、子类型 二、静态联编和动态联编 三、虚函数 四、纯虚函数和抽象类 五、虚析构函数 六、重载,重定义与重写的异同 前言 面向对象程序设计语言的三大核心特性是封装性、继承性和多态性。封装性奠定了基础,继承性是实现代码重用和扩展…