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

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

# 大比武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技术和大模型的结合为档案问答系统的智能化提供了强大的支持。由于文章篇幅所限,我们只能对一些基本原理和系统框架进行粗浅的介绍,实际开发过程中碰到的困难和挑战远远不止这些,希望以后有机会再分享给大家。同时我们也在不断探索和优化解决方案,以期实现更好的应用效果。

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

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

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

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

相关文章

Kivy 项目51斩百词 5

MRWord\pages\infopage\info.py def read_random_word(self) def read_random_word(self):"""随机读取一条数据"""sql "SELECT * FROM word WHERE id (SELECT word_id FROM today ORDER BY RANDOM() limit 1)"rows select_data(sq…

AdaBoost 乳腺癌数据挖掘

目录 1.数据集背景 2 集成学习方法 AdaBoost集成过程 3 个体学习器 结果评价 准确率以及混淆矩阵 评估集成学习模型的泛化学习能力 评估集成学习模型的多样性 结论 源码 1.数据集背景 乳腺癌数据集是一个非常经典的二元分类数据集,被广泛应用…

Java线程基础

一、相关概念 1、程序 为完成任务,用某种语言编写的一组指令的集合。 2、进程 进程是指运行中的程序。 进程是程序的依次执行过程,或是正在运行的一个程序,是一个动态过程:有自身产生、存在和消亡的过程。 3、线程 线程是由进程创…

拍视频麦克风什么牌子好?户外无线麦克风哪个牌子好,看本期文章

​无线领夹麦克风,作为现代音频技术的重要代表,已经广泛应用于各种场合。它不仅能提高演讲者的声音质量,还能增加演讲的互动性和生动性。然而,面对市场上众多的无线领夹麦克风产品,如何选择一款适合自己的设备成为了一…

产教协同|暴雨AI算力赋能传媒实践教学

近日,“第七届传媒实践教学创新研讨会暨中国高校影视学会实验教学专业委员会年会”在美丽的山城重庆成功举办。本次大会以“拥抱AI,融合共生”为主题,吸引了来自全国200多所高校、30多家企业以及700多位大视听实践教学产学研用各界专家、学者…

react跨组件通信Context

案例&#xff1a;现在有个父-子-孙组件 需要进行组件通信 import { useState } from "react"; // 创建上下文 const CountContext React.createContext();//子组件 const SonComponent (props) > {return (<div><h2>子组件</h2><Grandson…

便携式应急气象站:应急气象监测装备

TH-BQX5便携式应急气象站&#xff0c;作为现代气象监测的重要装备&#xff0c;以其独特的便携性、高效性和灵活性&#xff0c;在应急气象监测领域发挥着至关重要的作用。这类气象站不仅为灾害预警、环境保护、农业生产等多个领域提供了实时、准确的气象数据&#xff0c;还在突发…

记录一次Redisson使用synchronized和分布式锁不生效的原因

最近在开发的过程中&#xff0c;遇到了一个并发场景&#xff0c;用户进行方案复制的时候&#xff0c;当快速点击两次操作的时候&#xff0c;出现了复制方案重名的情况&#xff0c;实际上是复制方案的方案名称&#xff0c;是由后端根据数据库已有的方案名称和当前要复制的方案名…

Hugging face win使用教程(二)

1. 将环境迁移到win&#xff0c;可以直接下载修改好的cuda环境https://download.csdn.net/download/liangjiubujiu/89368302?spm1001.2014.3001.5503 2. 修改hugging face的缓存路径 3. 重启pycharm 4. 编写测试代码&#xff0c;注意可能由于网络链接问题&#xff0c;需要关…

Parasoft C++Test软件静态分析操作指南_编码规范/标准检查

系列文章目录 Parasoft CTest软件安装指南 Parasoft CTest软件静态分析操作指南_编码规范/标准检查 Parasoft CTest软件静态分析操作指南_软件质量度量 Parasoft CTest软件静态分析_自动提取静态分析数据生成文档 Parasoft CTest软件单元测试_操作指南 Parasoft CTest软件单元…

嵌入式进阶——OLED显示器(SPI)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 SPI协议原理图字库芯片中文显示屏原理API的使用 SPI协议 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种同步串行…

嵌入式要卷成下一个Java了吗?

嵌入式要卷成下一个Java了吗&#xff1f; 根据我十年的嵌入式开发经验&#xff0c;嵌入式开发的工资水平相对 Java 较低。不过&#xff0c;嵌入式开发岗位主要集中在第二产业&#xff0c;尤其是电器、电气、机械汽车、航空航天等行业的“智能制造”领域。这些行业属于重资产行…

JWT身份验证相关安全问题

前言&#xff1a;工作中需要基于框架开发一个贴近实际的应用&#xff0c;找到一款比较合适的cms框架&#xff0c;其中正好用到的就是jwt做身份信息验证&#xff0c;也记录一下学习jwt相关的安全问题过程。 JWT介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行…

线上自由DIY预约小程序源码系统 自由DIY你的界面 带完整的的安装代码包以及搭建教程

系统概述 在当今数字化时代&#xff0c;移动应用成为人们生活和工作中不可或缺的一部分。预约小程序作为一种便捷的工具&#xff0c;为用户提供了高效的预约服务体验。而线上自由 DIY 预约小程序源码系统则为开发者和企业提供了更大的自由度和创造力&#xff0c;让他们能够根据…

Redis篇 String的基本命令

String基本命令 一.setnx,setex,psetex二. 增加删除命令三.append,setrange,getrange,strlen命令1.append2.setrange3.strlen4.getrange 四.String的内部编码方式 一.setnx,setex,psetex setex和psetex设置过期时间 setex设置的过期时间是秒级 psetex设置的过期时间是毫秒级 二…

11.任务状态查询API函数总结

一、任务相关 API 函数预览 二、任务相关 API 函数详解 1. 函数 uxTaskPriorityGet() 此函数用于获取指定任务的任务优先级&#xff0c;若使用此函数&#xff0c;需在 FreeRTOSConfig.h 文件中设 置配置项 INCLUDE_uxTaskPriorityGet 为 1&#xff0c;此函数的函数原型如下所示…

我和jetson-Nano的故事(12)——安装pytorch 以及 torchvision

在jetson nano中安装Anaconda、pytorch 以及 torchvision 1.Pytorch下载安装2.Torchvision安装 1.Pytorch下载安装 首先登录英伟达官网下载Pytorch安装包&#xff0c;这里以PyTorch v1.10.0为例 安装依赖库 sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev liba…

HNU-人工智能-2024期末考试回忆

前言 后知后觉&#xff0c;似乎是别的专业的往年试题拿来复用&#xff0c;我没刷到&#xff0c;比较吃亏。 最后一题把数据改的很恶心&#xff0c;让我cosplay成GPU&#xff0c;算3个5*5的卷积核&#xff0c;简直恶心。根本没时间算完。 整场考试体验还挺差的。主要是老师缝…

FreeRTOS【7】队列使用

1.开发背景 操作系统提供了多线程并行的操作&#xff0c;为了方便代码的维护&#xff0c;各个线程都分配了专用的内存并处理对应的内容。但是线程间也是需要协助操作的&#xff0c;例如一个主线程接收信息&#xff0c;会把接收的信息并发到其他线程&#xff0c;即主线程不阻塞&…

helm离线安装

目录 概述实践 概述 centos 7.x 离线安装 helm 3.14.4 版本 实践 离线包资源下载地址 github [roothadoop01 ~]# tar -xvf helm-v3.14.4-linux-amd64.tar.gz linux-amd64/ linux-amd64/README.md linux-amd64/LICENSE linux-amd64/helm [roothadoop01 ~]# mv ./linux-amd…