企业数据,大语言模型和矢量数据库

在这里插入图片描述

随着ChatGPT的推出,通用人工智能的时代缓缓拉开序幕。我们第一次看到市场在追求人工智能开发者,而不是以往的开发者寻找市场。每一个企业都有大量的数据,私有的用户数据,自己积累的行业数据,产品数据,生产线数据,市场数据,等等一应俱全。这些数据都不在基础大语言模型的记忆里,如何有效的用起来是目前通用人工智能在企业端的重要课题。

我们可以将私有数据作为微调语料来让大语言模型记住新知识,这种方法虽然可以让大模型更贴近企业应用场景更高效使用私有数据,但往往难度较大,另外企业数据涵盖了文本,图像,视频,时序,知识库等模态,接入单纯的大语言模型学习效果较差。我们今天来聊聊另一种更常见的方案,通过矢量数据库提取相关数据,注入到用户prompt context(提示语境)里,给大语言模型提供充分的背景知识进行有效推理。【如图一所示】

在这里插入图片描述

图一 基于数据提取的大语言模型应用架构

矢量数据库允许任何对象以矢量的形式表达成一组固定维度的数字,可以是一段技术文档,也可以是一幅产品配图。当用户的提示包含了相似语义的信息,我们就可以将提示编码成同样维度的矢量,通过矢量数据库查寻K-NearestNeighbor(近邻搜索)来获得相关的对象。Approximate NearestNeighbor(近似近邻搜索)作为矢量数据库的核心技术之一,在过去的十年里获得了长足进步。它可以通过损失一定的准确度在高维空间里快速搜索近邻矢量,比如NGT算法可以在接近一千维的矢量空间达到万次查询,而准确度不低于99%。如图二所示不同的算法展现了不同的妥协效果。
在这里插入图片描述

图二 查询QPS和返回准确度(召回)之间的妥协。数据集为fashion-mnist采用了784维矢量,
测试基于单个CPU的统一环境,测试时间为2023年四月。

这种语义搜索的方法起源于大语言模型时代之前,起初是为了降低企业搜索的工程复杂度,提升搜索结果的相关性,因为矢量本身和神经网络高度契合,也成为大语言模型应用的标准配置。甚至出现如Memorizing Transformer 和 KNN-LM这样的架构将近邻搜索算法和大语言模型结合来成功构造快速external memory(外部记忆)。

但是这样的架构依然存在一个重要的问题:从用户的提示生成矢量,通过近邻搜索找到有关数据,这两方面的矢量相似度高并不一定代表语义的相关性也高,因为两方的矢量可能并不在同一语义空间。如果企业数据的语义空间和大语言模型有比较大的区别,图一所示的架构就可能无法有效的关联重要数据而降低了可用性。这种语义空间差别在处理多模态数据时尤其明显,比如从文本到图像的对齐【如图三】,从文本到知识图谱的对齐【如图四】。同时,图像,视频,知识图谱,文档等等都蕴含大量的信息,压缩到单一矢量大大损失颗粒度,从而降低了近邻搜索的有效性。

如果将这些对象碎片化处理,再由大语言模型进行整合,除了复杂的碎片化工程,这种方法大大增加了提示语境的长度要求。尽管大量的研究工作已经从计算效率上解决了语境长度的瓶颈,比如Linear Transformer,Reformer,到最近的LongNet,理论上1B的Token已经是可行的,但实际的效果却显示当前的大语言模型并不能很好的利用长语境来获得相关信息【如图五】。归根结底将大量背景信息有效高效的投射到文本语义空间从而让后端的大语言模型可以更好发挥依然是目前应用开发的一大难点。
在这里插入图片描述

图三 图像文本通过交叉注意力机制对齐。借用BLIP2架构图
在这里插入图片描述

图四 知识图谱和文本通过交叉注意力机制对齐。借用动态知识图谱融合模型
在这里插入图片描述

图五 相关的文档在提示语境中的位置会极大影响大语言模型的能力。来自于最近的研究

语义空间的投射可以看作是一个alignment(对齐)任务。在粗颗粒度上,单一矢量的空间对齐可以通过学习投射矩阵来实现【如图六所示】。这个投射空间小,可以用较少的标注数据训练,从而大大提升搜索结果的相关性,也已经成为业界广泛使用的技术。而细粒度的对齐工作依然是目前技术突破的焦点,从Perceiver IO,CLIP到BLIP2,我们也渐渐看到交叉注意力机制的通用对齐能力【如图三,四】,特别是大规模的无监督学习半监督学习大大提升了对齐的泛化能力。把这些对齐算法和矢量数据库结合起来提供快速高效的细粒度对齐将会极大提升大语言模型应用的用户体验,也是我们值得期待的方向。

在这里插入图片描述

图六 粗粒度对齐

总体而言,通过矢量数据库将企业内部数据和大语言模型结合起来拥有广泛的应用场景,但技术挑战也仍然很大,我们今天讨论的这些技术点仅仅是诸多挑战中的一两个环节,还有很多没有触碰,后面有机会和大家继续探讨。

参考资料:
1.https://github.com/erikbern/ann-benchmarks
2.https://arxiv.org/pdf/1911.00172.pdf
3.https://arxiv.org/pdf/2203.08913.pdf
4.https://arxiv.org/pdf/2006.16236.pdf
5.https://arxiv.org/pdf/2001.04451.pdf
6.https://arxiv.org/pdf/2307.02486.pdf
7.https://arxiv.org/pdf/2301.12597.pdf
8.https://arxiv.org/pdf/2306.08302.pdf
9.https://arxiv.org/pdf/2307.03172.pdf
10.https://finetunerplus.jina.ai/
11.https://github.com/krasserm/perceiver-io
12.https://arxiv.org/pdf/2103.00020.pdf
13.https://arxiv.org/pdf/2301.12597.pdf

作者简介:

缪 旭 九章云极DataCanvas公司首席AI科学家

二十余年人工智能研究和管理经验,深耕人工智能的技术实现和应用,发表多篇学术文章,并拥有多项授权发明,专注将可推理可解释的人工智能、大模型、大规模实时机器学习、知识图谱等前沿AI技术加速应用于各行各业。

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

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

相关文章

【Linux进程篇】进程概念(1)

【Linux进程篇】进程概念(1) 目录 【Linux进程篇】进程概念(1)进程基本概念描述进程-PCBtask_struct-PCB的一种task_ struct内容分类 组织进程查看进程通过系统调用获取进程标示符通过系统调用创建进程——fork初识 作者&#xff…

2023软件设计师中级备考经验分享(文中有资料链接分享)

先摊结论吧,软考中级设计师备考只是备考半个月(期间还摆烂了几天),然而成绩如下: 我自己都没想到会这么好的成绩。。。 上午题:推荐把软考通APP里的历年真题刷3-4遍,直接刷真题,然后…

分享一些精选的开源框架与代码!

今天主要是收集并精选了一些自己所了解和学习过的优秀的嵌入式开源框架代码和项目,不太了解的就不推荐给大家了,因为开源的东西实在是太多了,鱼龙混杂,所以取其精华去其糟粕是迫在眉睫的大事~ 当然也不要总是沉浸在开源的东西之中…

光伏、储能一体化监控及运维解决方案

前言 今年以来,在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速,装机容量均大幅度增长,新能源发电已经成为新型电力系统重要的组成部分,同时这也导致新型电力系统比传统的电力系统更为复杂&#xff0…

基于多任务学习卷积神经网络的皮肤损伤联合分割与分类

文章目录 Joint segmentation and classification of skin lesions via a multi-task learning convolutional neural network摘要本文方法实验结果 Joint segmentation and classification of skin lesions via a multi-task learning convolutional neural network 摘要 在…

idea 里 controller service impl mapper xml 切换跳转快捷键

首先在controller层,对着接口点方法的方法上按着ctrl和鼠标左键,你会进入service层。 对着方法ctrlaltb不按鼠标,你会进入impl层。service层的方法上按ctrl和鼠标左键会回到controller,ctrlaltb不按鼠标也会进入到impl层,impl上的…

vue echart3个饼图

概览:根据UI设计需要做3个饼图且之间有关联,并且处理后端返回的数据。 参考链接: echart 官网的一个案例,3个饼图 实现思路: 根据案例,把数据处理成对应的。 参考代码: 1.处理后端数据&am…

谐音标注外语发音的学习方式,早该终结了!

语言学习的热潮席卷全国,在多数80、90后记忆里尤为深刻,部分对外语过敏的同学,就像溺水的鱼,使劲扑棱也无济于事,难受但是死不了,在懵懂的年纪就被“摧残”了整个青春。 记忆中遇到记不住读音的单词&#x…

Python模块psycopg2连接postgresql

目录 1. 基础语法 2. 基础用法 3. 多条SQL 4. 事务SQL 1. 基础语法 语法 psycopg2.connect(dsn #指定连接参数。可以使用参数形式或 DSN 形式指定。host #指定连接数据库的主机名。dbname #指定数据库名。user #指定连接数据库使用的用户名。…

DEVICENET转ETHERNET/IP网关devicenet协议

捷米JM-EIP-DNT,你听说过吗?这是一款自主研发的ETHERNET/IP从站功能的通讯网关,它能够连接DEVICENET总线和ETHERNET/IP网络,从而解决生产管理系统中协议不同造成的数据交换互通问题。 这款产品在工业自动化领域可谓是一大利器&…

对原型、原型链的理解

在 JavaScript 中是使用构造两数来新建一个对象的,每一个构造函数的内部都有一个 prototype 属性,它的属性值是一个对象,这个对象包含了可以由该构造西数的所有实例共享的属性和方法。当使用构造函数新建一个对象后,在这个对象的内…

计算机网络(1) --- 网络介绍

目录 1.介绍协议 基础知识 协议 协议分层 OSI七层模型 2.TCP/IP五层模型 3.网络传输的基本流程 1.基本知识 协议报头 2.局域网通信的基本流程 3.网络传输流程 局域网分类 跨路由器传输 数据包封装和分用 4.网络中的地址管理 1.IP地址 2.MAC地址 3.区别 1.介绍…

每天一个电商API分享:淘宝/天猫关键字搜索店铺列表 API

淘宝/天猫搜索店铺列表 API 是一个强大而灵活的工具,可以帮助开发者在自己的应用中集成淘宝/天猫搜索店铺列表的功能。通过这个 API,开发者可以获取指定关键词下的店铺列表,并根据自己的需求自定义搜索条件。该 API 提供丰富的参数选项&#…

【爬虫案例】用Python爬取iPhone14的电商平台评论

用python爬取某电商网站的iPhone14评论数据, 爬取目标: 核心代码如下: 爬取到的5分好评: 爬取到的3分中评: 爬取到的1分差评: 所以说,用python开发爬虫真的很方面! 您好&…

redis 高级篇4 分布式锁

一 redis架构图 1.1 redis的架构图 1.2 分布式锁满足条件 1.独占性;2.高可用;3.防死锁;4.不乱抢;5.重入性 二 分布式锁的案例情况 2.1 分布式锁1:单机分布式部署 描述: 使用lock锁和synchronized,单机…

狄耐克带着爱与希望,踏上了又一段关于奉献的旅程

路在脚下, 狄耐克紧盯科技前沿, 聚焦国家发展战略和人民美好生活需要, 在智慧社区和智慧医院领域 敢于筑梦、勇于追梦、勤于圆梦; 心系远方, 狄耐克真情投入奉献事业, 将爱与希望的种子撒向全国各地…

基于C语言 --- 自己写一个三子棋小游戏

C语言程序设计笔记---019 初阶三子棋小游戏(开源)1、arr_main.c程序大纲2、arr_game1.h3、arr_game1.c3.1、 自定义初识化函数 InitBoard( ) 和 自定义显示函数 DisPlayBoard( )3.2、 自定义玩家下棋函数 PlayerMove( )3.4、 自定义电脑下棋函数 ComputerMove( )3.5、 输赢判断…

【Linux下6818开发板(ARM)】SecureCRT串口和交叉编译工具(巨细版!)

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…

【前端知识】React 基础巩固(四十)——Navigate导航

React 基础巩固(四十)——Navigate导航 一、Navigate的基本使用 新建Login页面,在Login中引入Navigate,实现点击登陆按钮跳转至/home路径下: import React, { PureComponent } from "react"; import { Navigate } from "reac…

Windows环境下安装及部署Nginx

一、安装Nginx教程 1、官网下载地址:https://nginx.org/en/download.html 2、下载教程:选择Stable version版本下载到本地 3、下载完成后,解压放入本地非中文的文件夹中: 4、启动nginx:双击nginx.exe,若双击…