如何优化和提高MaxKB回答的质量和准确性?
目前 ChatGPT、GLM等生成式人工智能在文本生成、文本到图像生成等在各行各业的都有着广泛的应用,但是由于大模型训练集基本都是构建于网络公开的数据,对于一些实时性的、非公开的或离线的数据是无法获取到的,这个导致了在实际应用场景中会发现,通用的基础大模型基本无法满足我们的实际业务需求,普遍都存在着知识的局限性比如专业领域知识缺失,上下文词不达意(一本正经地胡说八道)等。为了解决这些问题,目前主要有两种解决方案:
第一种模型微调(Fine Tune):通过微调更新模型,让模型具备对新知识的理解和认知。
另一种就是RAG(Retrieval Augmented Generation,检索增强生成),将大模型(LLM)与外部知识源检索相结合,提升大模型的问答能力。
而MaxKB就属于RAG范畴,是基于大语言模型的知识库问答系统,那么同样在实际应用中,我们应该如何提高MaxKB回答的质量和准确性?
一、MaxKB实现原理
在回答这个问题之前,我们先了解下MaxKB的实现原理:
基于上述MaxKB的原理图,我们可以将MaxKB整体流程简单概括如下五点:
1、管理员将知识文档整理后上传MaxKB,MaxKB将文档进行分段存储和向量化;
2、管理员为不同的知识库创建应用,并为应用接入大模型;
3、用户在应用中提问,MaxKB依据用户的问题,检索向量库,并返回满足相似度的TOP分段;
4、MaxKB将返回的TOP分段内容,作为提示词中的一部分,并且询问大模型;
5、大模型依据提示词,最终给用户进行回答。
所以,从概括中我们可以理解,这个里面有几个关键点会影响到MaxKB回答质量和准确性:
- 知识文档的合理分类、分段以及保证文档质量。这个是大模型是否给出准确答案的源头,如果源数据就是错的,那么大模型回答的结果也就可想而知了;
- 合理设置应用的向量检索的相似度值和TOP分段数。理论上相似度值越高,TOP分段越少,那么向量检索返回的越准确,但是这样设置也很容易造成向量检索不到数据,会导致回答“知识库中查询不到答案”;
- 进行提示词优化,不同的提示词直接影响到模型生成的输出。好的提示词能够引导模型产生更准确、更相关且更富有创造性的回答;
- 采用更大、更新的大模型引擎来提供更好的性能和回答效果。
二、具体如何优化?
那么如何在MaxKB中如何针对上诉的点进行优化呢?同样主要分为以下几个方面进行:
2.1 知识文档优化层面
知识文档的第一要点就是要保证知识的准确性。比如面向法律条文的知识文档,需要筛选出已经撤销或者更新的条文条款;面向信息技术的,需要筛选因为技术的迭代已经不适用的方案等等。这个是最重要的,不同的知识库类型需要不同的专业知识人员处理。
第二点,文本规范化处理,去除文本中特殊字符、不相关的信息、重复内容或冗余的内容。比如下图关于MeterSphere知识库中就有些无关的信息(因为在MaxKB中采用了自动爬取MeterSphere在线文档),可以在MaxKB关闭或者删除。
比如自动化分段中有些内容不合理的,需要人工处理:
比如针对不合理的内容进行修改优化:
第三点,依据知识类型,将文档归类划分。需要合理地划分不同知识主题的文档,再MaxKB中按照不同知识的类型进行划分不同的知识库进行存储,比如下图分为了MeterSphere知识库和DataEase知识库。企业可以根据现有文档数据,在MaxKB中划分财务知识库、销售知识库、人事知识库、IT知识库等等。
第四点,合理的进行文档分段、分块。需要将文档拆分为一定大小的块,但还能保证文档表达的含义(因为我们知道,MaxKB最终是需要将向量检索到的数据,嵌入到提示词中输入大模型,但是不同的大模型输入的token是有一定容量的,而且如果输入过多,会影响大模型回答的效率和速度,还有更多的资源消耗,如果输入过少,有可能就会导致回答不准确或者查询不到知识点)。所以针对不同文档内容,需要进行合理的分段、分块才行。比如针对知识连贯部分采用大分块较为合适(比如详细描述MeterSphere产品特性的多段文本);而对于信息分散,则可以使用小块进行(比如社交媒体帖子)。如果实在无从下手时,128大小字符为一个分块块往往是最佳选择,可以从这个大小作为基准进行测试。
2.2 向量检索优化层面
目前MaxKB默认向量检索相似度值为0.6,默认引用分段数 TOP分段为3。我们可以结合知识库的数据量的大小,设置不同的搜索模式和调整相似度值、TOP分段。
比如数据量大的场景,可以采用向量检索;数据量小采用全文检索;数据量中场景采用混合检索;然后基于MaxKB回答的效果,适当的调整检索相似度和引用TOP分段数,以此来实现最佳的回答效果。
2.3 提示词优化层面
优质的提示词能够显著提高大模型回答的准确性,这是因为提示词直接影响模型的思考和回应方式。所以很多时候不同的问答场景需要不同的提示词来引导模型,使其能够更好地适应各种应用场景,如编写诗歌、解答复杂问题或模拟特定角色进行对话等。所以在MaxKB中用户也可以针对不同的知识类型进行提示词优化。默认MaxKB中的提示词如下:
比如,我们针对DataEase知识库进行提示词优化成如下部分:
最后通过提示词优化,MaxKB能够给出更加符合我们期望的答案:
2.4 大模型优化层面
MaxKB支持对接主流的大模型,包括本地私有大模型(如 Llama 2)、OpenAI、通义千问、Kimi、Azure OpenAI 和百度千帆大模型等。所以在MaxKB中优化模型最简单的办法就是换更大的接入模型,比如文心一言-3.5模型换成文心一言-4模型,Llama 3-8B换成Llama 3-70B(需要注意的是本地模型参数越多,需要硬件资源也更多)。
第二个办法就是模型微调,但是我们需要了解,模型微调固然效果好,在实际场景中,数据是不停更新的,而模型微调无论是从数据准备、算力资源、微调效果、训练时间等各个角度来看都不是一件简单的工作,也很难保证每次有新数据的产生都进行模型微调,无论财力和时间都不允许,并且有时候微调的效果有时候也不一定理想。
好了,上述就行基于MaxKB进行问答知识库优化的几个方向和要点,你学到了吗?
如何优化和提高MaxKB回答的质量和准确性?的更多相关文章
- Java 性能优化手册 — 提高 Java 代码性能的各种技巧
转载: Java 性能优化手册 - 提高 Java 代码性能的各种技巧 Java 6,7,8 中的 String.intern - 字符串池 这篇文章将要讨论 Java 6 中是如何实现 String ...
- 教你如何提高 PHP 代码的质量
说实话,在代码质量方面,PHP 的压力非常大.通过阅读本系列文章,您将了解如何提高 PHP 代码的质量. 我们可以将此归咎于许多原因,但这肯定不仅仅是因为 PHP 生态系统缺乏适当的测试工具.在本文中 ...
- 如何提高 PHP 代码的质量?第三:端到端 / 集成测试
在本系列的最后一部分,是时候设置端到端 / 集成测试环境,并确保我们已经准备好检查我们工作的质量. 在本系列的前几部分中,我们建立了一个构建工具,一些静态代码分析器,并开始编写单元测试. 为了使我们的 ...
- [MySQL性能优化系列]提高缓存命中率
1. 背景 通常情况下,能用一条sql语句完成的查询,我们尽量不用多次查询完成.因为,查询次数越多,通信开销越大.但是,分多次查询,有可能提高缓存命中率.到底使用一个复合查询还是多个独立查询,需要根据 ...
- CSS性能分析,如何优化CSS提高性能
不负十年后的自己,共勉! 前端性能优化一直是一个比较热门的话题,我们总是在尽我们最大的努力去,提高我们的页面性能,比如减少HTTP请求,利用工具对资源进行合并压缩,脚本置底,避免重复请求,css sp ...
- 使用 Django-debug-toolbar 优化Query 提高代码效率
一段程序执行效率慢,除了cpu计算耗时外,还有一个很重要的原因是SQL的Duplicated过多,使用Django-debug-toolbar能够快速找出哪些地方的SQL可以优化,提高程序执行效率 1 ...
- Linux(Centos )的网络内核参数优化来提高服务器并发处理能力【转】
简介 提高服务器性能有很多方法,比如划分图片服务器,主从数据库服务器,和网站服务器在服务器.但是硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题 ...
- 团队代码中Bug太多怎么办?怎样稳步提高团队的代码质量
最近负责的Android APP项目,由于团队成员变动.界面改版导致代码大幅修改等原因,产品发布后屡屡出现BUG导致的程序崩溃. 经过对异常统计和代码走读,BUG主要集中在空指针引起的NullPoin ...
- 如何提高 PHP 代码的质量?第二部分 单元测试
在“如何提高 PHP 代码的质量?”的前一部分中:我们设置了一些自动化工具来自动检查我们的代码.这很有帮助,但关于我们的代码如何满足业务需求并没有给我们留下任何印象.我们现在需要创建特定代码域的测试. ...
- Web前段优化,提高加载速度 css
前言: 在同样的网络环境下,两个同样能满足你的需求的网站,一个"Duang"的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒, ...
随机推荐
- w3cschool-微信小程序开发文档-工具
微信小程序工具 概览 2020-07-22 15:24 更新 为了帮助开发者简单和高效地开发微信小程序,我们推出了全新的开发者工具,集成了开发调试.代码编辑及程序发布等功能. 扫码登录 启动工具时,开 ...
- Docker与联合文件系统
1. 联合文件系统 概念 UnionFS(联合文件系统)是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次次的提交来一层一层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(u ...
- TCP协议的三次握手-4次挥手
TCP的连接建立是一个三次握手过程,目的是为了通信双方确认开始序号,以便后续通信的有序进行.主要步骤如下: 连接开始时,连接建立方(Client)发送SYN包,并包含了自己的初始序号a: 连接接受方( ...
- 最大流的 Dinic 算法和 ISAP 算法
上期回顾:https://www.cnblogs.com/ofnoname/p/18678895 之前我们已经介绍了最大流问题的基本定义.最大流最小割定理.增广路径与残量网络的构建方法,以及如何利用这 ...
- HPC中常见的调度器介绍
本文分享自天翼云开发者社区<HPC中常见的调度器介绍> 作者:土豆炒肉丝 在高性能计算(HPC)环境中,调度器是负责管理和分配计算资源(如计算节点.处理器核心.内存等)给待执行任务的重要组 ...
- Q:群晖磁盘断电导致,无法访问系统分区
1.群晖磁盘断电导致,无法访问系统分区 2.点击存储空间管理员-总览-点击修复 3.存储空间-文件系统检查-重启 4.重启后正常
- lvm相关命令及/etc/fstab开机挂载
名词解释: PV: 物理卷(physicalvolume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区.磁盘等)比 ...
- Idea下载插件报错
报错内容Plugin Python was not installed: Cannot download 'https://plugins.jetbrains. 解决办法 file -> se ...
- 【忍者算法】从图书馆找书到矩阵搜索:探索二维矩阵中的高效搜索|LeetCode第240题 搜索二维矩阵 II
从图书馆找书到矩阵搜索:探索二维矩阵中的高效搜索 生活中的搜索策略 想象你在一个大型图书馆里找书.这个图书馆的书架是按照两个维度排列的:每个书架从左到右按书名字母顺序排列,从上到下的书架则按照出版年份 ...
- captura怎样解决FFmpeg解析错误问题
captura怎样解决FFmpeg解析错误问题?captura软件里大家在进行屏幕录制的工作得时候都会用到captura软件,软件得功能可以满足大家的需求,可以轻松的录制屏幕,进行屏幕截屏等,但是又小 ...