基于亚马逊云科技大语言模型等服务打造企业知识库
背景
大语言模型是自然语言处理领域的一项重要技术,能够通过学习大量的文本数据,生成具有语法和意义的自然语言文本。目前大语言模型已经成为了自然语言处理领域的一个热门话题,引起了广泛的关注和研究。
知识库需求在各行各业中普遍存在,例如制造业中历史故障知识库、游戏社区平台的内容知识库、电商的商品推荐知识库和医疗健康领域的挂号推荐知识库系统等。
本文旨在介绍一些企业知识库的典型实用场景,以及如何使用智能搜索,结合大语言模型,针对企业知识库提供基于搜索的精准问答。
基于智能搜索的大语言模型增强方案介绍
架构图
该平台将包括五大核心内容
1. 智能搜索
传统仅依靠关键词匹配的分词搜索的方式在很多场景下可以提供快速有效的查询,但是也存在一些固有的局限性。例如匹配一些包括停用词在内的无关词汇,无法识别同义词和缺乏抽象能力。为了解决这些问题,本方案中一方面使用意图识别大语言模型,对关键信息进行提取,从而可以有效的避免停用词等无法词汇对搜索造成的干扰。另一方面,引入AI/ML的方法来辅助实现语意搜索。具体来讲,使用同一个向量编码的大语言模型对搜索语句和文档数据库进行语意编码,在检索的过程中,使用knn方法进行向量匹配。以下是一个传统分词搜索与语意向量搜索的对比展示。可以看到,使用向量搜索功能后,可以召回更多自然语意上相近而关键词无关的内容,增加召回范围和提升搜索准确性。
在本方案中,以Amazon OpenSearch和Amazon Kendra为基础构建搜索引擎。提供分词搜索,模糊查询和AI/ML辅助搜索功能。不在局限于某一种搜索方式,而是将所有搜索方法取长补短,进行有机的整合。
智能引导
造成搜索不准确的原因,一方面是由于搜索引擎本身的能力不足,另外一方面的原因是因为搜索的语句不够准确和具体。因此,本方案中提出了一种引导式的搜索机制来帮助检索人员逐步丰富输入的搜索语句,最终达到提升搜索准确性的目的。
以下面制造业大型设备维保知识库的搜索流程为例。该知识库存储历史维修记录,包括故障现象,故障原因,维修方案等字段。
当用户输入检索词“电路”后,除了从知识库中返回与电路相关的条目之外,还会给予一些提示词,例如“门系统”、“控制系统”等,这些词代表与“电路”相关的故障往往伴随可能出现问题的系统,提示用户进一步丰富当前的搜索描述。
当用户进一步输入“主板”后,会将“电路”和“主板”进行联合查询,返回相关的条目,并进一步给出新的提示词。
用户可以重复以上过程,直到搜索出来更为精准的结果。
提示词的获取:根据实际情况,可以采用人工打标、无监督聚类、有监督分类、大语言模型(LLM)等方法进行提取,并提前注入到数据库中。
智能优化
通常情况下,由于知识库的迭代更新,检索的准确率可能会随时时间的推荐逐步降低,一方面是因为我们往往不能保证,数据库和搜索引擎一次性构建完成后就达到很好的效果。另外一方面是因为对于过时的知识没有进行有效的处理。因此,本方案提出以用户行为对搜索引擎进行持续优化。
具体来讲包括两个步骤:
用户行为收集:将历史用户的行为进行收集,例如用户对某个搜索词条的打分。
大语言模型的训练和部署:通过用户行为,整理得到搜索词条和知识库之间的相关度。使用该相关度训练和部署一个重排大语言模型,该重排大语言模型可以根据历史的用户行为,给予用户更加偏好的内容更高的权重得分。
值得注意的是,该大语言模型是基于传统机器学习模型xgboost的,所以所需要的训练数据量和推理所需要的资源都是很小的(例如只需要几十条数据和t3.small机型),因此可以基于不同的用户/用户群训练不同的重排大语言模型,达到千人千面,个性化搜索的目的。
4.智能问答
基于私有知识库进行问答是另外一个广泛应用的场景,例如智能客户聊天机器人系统,IT/HR系统智能问答系统等。
如果仅使用搜索引擎,只能基于问题从数据库中提取与该问题相关的内容,而不能直接给出答案。
如果仅使用大语言模型(Large Language Model,LLM),不能基于私有知识库进行问答。一种可行的方式是将私有知识库和问题直接以prompt的形式直接一次性给到LLM,然后让LLM给出回答。但是受限于LLM Token的限制,无法一次性输入过多的知识库。
因此,在本方案中,将两者结合。如下图所示,当用户提出一个问题后,首先使用搜索提取与问题相关的知识,然后再将问题和提取的知识给到LLM进行总结,最后直接给出问题答案。
5. 非结构化数据注入
可供搜索引擎进行检索的企业知识库是一种结构化的数据,但往往企业的原始知识都是以非结构化的数据进行存储的,来自多个渠道,也包含了多种格式,例如Words,PDF,Excel等。
为了能够帮助企业快速将这些结构化数据利用起来,本方案提供了非结构化数据注入功能,该功能将企业的知识文档进行自动段落拆分和向量编码,建立结构化企业知识库。
大语言模型技术细节
LLM
最近半年,大语言模型(LLM)在自然语言处理领域取得了飞速的发展。大语言模型通常基于Transformer架构,在大规模的网络文本数据上进行训练,其核心是使用一个自我监督的目标来预测部分句子中的下一个单词。亚马逊云科技已推出大语言模型Titan和大语言模型平台Amazon Bedrock,另外还有许多研究机构推出开源大语言模型,如斯坦福大学的Alpaca和清华大学的ChatGLM等。这些大语言模型都具备强大的文本处理能力,广泛应用在智能问答、文本总结、文本生成等场景。
Embedding
各类非结构化数据广泛存在于我们的生活和工作场景,如文本、图片、视频等,为了处理这些非结构化数据,亚马逊云科技通常使用Embedding模型提取这些数据的特征,并把数据特征转化成向量,通过特征向量对这些非结构化数据进行分析和检索。通用的预训练大语言模型都有把文本进行向量化的功能,可以根据不同的场景和语种,选用合适的预训练大语言模型作为Embedding模型。
Intent Detection
搜索意图识别主要功能是分析用户的核心搜索需求,例如在电商场景,用户找的电子产品,是电脑类的,还是手机类的,是家庭场景用的,还是户外场景用的等等,如果意图识别不准,会有很多不相关的商品展现给用户,导致产生非常差的用户体验,因此精准的意图识别非常重要。意图识别主要包括类目预测和实体识别大语言模型,类目预测大语言模型主要采用文本多分类模型,根据平台的用户行为数据,将查询文本预测属于各个类目的概率。实体识别大语言模型将查询文本中的实体词识别出来,实体词是描述商品的维度信息,如品牌、颜色、材质等,通过实体识别大语言模型识别出查询文本的实体词后,再到搜索引擎进行精准查询。
Controlled Text Generation
可控文本生成是在传统文本生成的基础上,增加对生成文本的控制,如指定生成文本的关键词、格式、风格等,从而使生成的文本符合我们的预期,比如生成与某人相同风格的文本,生成有固定内容格式的报告,根据简单的故事线生成完整的小说等等。可控文本生成有对预训练模型finetune、重新训练文本生成模型和重构预训练模型输出结果等方式。在大语言模型推出后,目前可以方便的通过Prompt提示词,指导大语言模型进行可控文本生成,针对不同的场景和文本生成目标,设计不同格式和内容的提示词,生成满足需求的文本。
相关文章:

基于亚马逊云科技大语言模型等服务打造企业知识库
背景 大语言模型是自然语言处理领域的一项重要技术,能够通过学习大量的文本数据,生成具有语法和意义的自然语言文本。目前大语言模型已经成为了自然语言处理领域的一个热门话题,引起了广泛的关注和研究。 知识库需求在各行各业中普遍存在&a…...
FFmpeg 使用
添加关键帧 被压缩过的视频丢失关键帧导致seekTo无效,需要给视频添加关键帧 ffmpeg -i 2.mp4 -c:v libx264 -x264opts keyint5 -y keyint10.mp4修改分辨率 -i /sdcard/bankinfo/-484870439.mp4 -vf scale1920:1080 -threads 5 -preset ultrafast -y /sdcard/ban…...

NLP的使用
参考: Apache openNLP 简介 - 链滴 (ld246.com) opennlp 模型下载地址:Index of /apache/opennlp/models/ud-models-1.0/ (tencent.com) OpenNLP是一个流行的开源自然语言处理工具包,它提供了一系列的NLP模型和算法。然而,Open…...

Navicat DML 操作
在表格种插入 列信息 -- 修改数据 update 表名 set 列名 值1, 列名值2,[where 条件]; -- 注意:如果update语句没有加where 表里对应行的全部信息都会被改; -- 删除数据 delecte from 表名 [where 条件]; 未删除前: 执行删除后为: DQL - 条…...

Springboot-热部署-IDEA2023
方式一:jrebel 方式二: 1、导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <…...

人工智能和AR/VR:AI在AR和VR中扮演什么角色?行业应用有哪些?
增强现实技术和虚拟现实技术(AR/VR)发展前景广阔,备受各大企业关注。事实上,近四分之三的行业领导者表示,他们预计这些沉浸式技术将于未来五年内成为主流。高盛公司报告称,到2025年,AR/VR行业值…...

Linux进程通信之共享内存
文章目录 共享内存原理申请共享内存函数(shmget)参数key生成key值示例申请共享内存 挂接到进程地址空间函数(shmat)去关联函数(shmdt)控制共享内存(shmctl)IPC_STATIPC_RMID ipcs其余进程获取该共享内存进程间通信 进程间通信:IPC,…...

接口自动化测试:pytest基础讲解
为什么要做接⼝测试? 只靠前端测试很难确保很⾼的覆盖率。接⼝测试,可以模拟出各种类型的⼊参,包括⼀些在前端模拟不出来的⼊参,还能根据接⼝⽂档的定义,设计出相对完善的⼊参值,在接⼝层保证质量…...

基于JavaWeb+SpringBoot+Vue医院管理系统小程序的设计和实现
基于JavaWebSpringBootVue医院管理系统小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏[Java 源码获取 源码获取入口 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1微信小程序 2 2.2 …...

收藏这几个开源库,写css你会笑出声
你是否遇到过写css没灵感,写不出酷炫的效果,那这篇文章你一定要看完。知道这几个开源库,它能让你写出炸天的效果并且有效地增加你的摸鱼时长。 1.CSS Inspiration 网址:https://chokcoco.github.io/CSS-Inspiration/#/ CSS Insp…...
给localStorage缓存添加全局监听器
需求:在做单应用页面的时候,每个组件都是独立的,有时候我们a组件里面的东西修改了,需要b组件进行在a组件修改的同时进行响应,就需要监听器,这种时候我们需要定义监听器并且在b组件里面监听,然后…...
blk_mq_init_queue函数学习记录
blk-mq编程,主要要调用两个函数进行初始化工作,blk_mq_init_queue这是第二个。该函数先是申请了struct request_queue结构,这个请求队列后面用于赋值给磁盘那个结构体的相应成员。 struct request_queue *blk_mq_init_queue(struct blk_mq_t…...

高防服务器的工作原理
在当今互联网时代,网络安全问题日益突出,各种网络攻击层出不穷。为了保护企业的网络安全,高防服务器应运而生。那么,你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种…...

2023.11.19使用flask制作一个文件夹生成器
2023.11.19使用flask制作一个文件夹生成器 实现功能: (1)在指定路径上建立文件夹 (2)返回文件夹的路径和建立成功与否的提示 main.py import os from flask import Flask, request, jsonify, render_templateapp F…...
【04】ES6:字符串的扩展
一、模板字符串 模板字符串是可以插入表达式的字符串字面量。模板字符串和传统字符串比较,存在以下特点: 1、使用反单引号 传统字符串字面量使用单引号 ‘’ 或者双引号 “”,模板字符串使用反单引号(backquote) …...

Docker可视化管理界面工具Portainer安装
Portainer是Docker容器管理界面工具,可以直观的管理Docker。 部署也很简单: 官方安装文档地址 1、创建数据卷 docker volume create portainer_data2、下载允许容器 docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restartalways -v /v…...
css实现水波纹效果
css实现水波纹效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><styl…...

一种全新且灵活的 Prompt 对齐优化技术
并非所有人都熟知如何与 LLM 进行高效交流。 一种方案是,人向模型对齐。 于是有了 「Prompt工程师」这一岗位,专门撰写适配 LLM 的 Prompt,从而让模型能够更好地生成内容。 而另一种更为有效的方案则是,让模型向人对齐。 这也是…...
8:kotlin 类型检查和转换(Type checks and casts)
在运行时可以执行类型检查以检查对象的类型。类型转换将对象强制转换为不同的类型 is 和 !is 可以使用is或者!is来判断实例是不是指定的类型 fun main() {var obj : Any "cast"if (obj is String) {println(obj.length) // 4}obj 123if (obj !is String) { pr…...
命令模式 (Command Pattern)
定义 命令模式(Command Pattern)是一种行为型设计模式,它将一个请求封装为一个对象,从而允许用户使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作。主要目的是将命令的发送者和接收者解耦,引…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...