向量数据库:大模型的海量记忆体

🏖前言

在大模型爆发以后,有越来越多的公司需要用到专有的数据库,来存放百亿级甚至是千亿级的数据。在此基础上,纷纷涌现出一些企业去探索相关数据库的落地方案。在下面的文章中,就将来聊聊,关于大模型在向量数据库方面的一些落地方案。

一、🛥前情简要

1、Embedding and Vector Search

Embedding这个词翻译过来,就是嵌入。那Embedding指的是,将文本等非向量数据转换为向量形式的过程,即将文本等含义嵌入向量中,用向量表示文本等含义。这些嵌入的向量可以用于比较文本等之间的相似度。嵌入可以是无监督学习过程,例如word2vecGloVe中的词语嵌入,也可以是有监督学习过程,例如在情感分析任务中的句子嵌入。

Vector Search是指使用向量空间模型(Vector Space Model)进行信息检索的过程。在这种模型中,文档被表示为向量,通过计算这些向量的相似度来匹配查询和文档。Vector Search可以用于文本搜索、图像搜索等应用中。

2、LLM Limitations

上面谈到了一些基础的概念,下面来说说大模型目前会遇到的一些限制。所谓大模型,就是大语言模型,现在还远没到多模态。目前大模型遇到两个比较大的限制是:专有领域的数据实时性的数据。专有领域的数据,比如医学法学等领域;而实时性数据,比如我现在在哪里哪里,开了某场发布会,这些可能是大模型没办法实时获取到的。

所以,当大模型在不知道一些事情的基础上,它就会开始胡说八道。去生成一些看似是正确的,但实际不是正确的内容。这也是目前面临的比较大的一个问题。

3、Knowledge Retrieval for LLMs

那为了解决这个问题,OpenAI在3月底的时候,发布了一个插件计划,来解决上面遇到的这两个问题。

可以把自己专有的数据,用Embedding的方式,变成向量。变成向量之后,把这些向量,存到向量数据库里面。

其中这个插件计划里面也举例了一些可以存放的向量数据库:Milvus、Pinecone、Qdrant、Redis、Weaviate or Zilliz。

4、MVP framework:LLM + VectorDB + Prompt

所以,在此之后,我们也去整理了一些东西,就是怎样让上面提到的这些方案变成现实。

最终我们的方案是: MVP framework: LLM + VectorDB + Prompt。翻译过来就是以ChatGPT为首的LLM,加上向量数据库VectorDB,再加上Prompt,去帮助大模型去做知识增强。细致来介绍下👇🏻:

  • 首先,大模型可以看做是一个中央处理器,是一个CPU,它用来处理所有的计算和逻辑推理部分。
  • 第二个是向量数据库,向量数据库主要用来存放大模型不知道的一些信息,一些专有领域的知识和一些实时的数据信息。可以理解为是给大模型做了一个外挂硬盘,像这样子的一个存储方式。所以我们也说,向量数据库是现在对大模型来说,很友好的一个记忆体。
  • 第三个要说的是Prompt。大模型我们可以理解为是一个黑盒子,那我们用户唯一能跟它交流的方式就是Prompt

二、🛳常见向量数据库工具

讲解完向量数据库的一些落地方案后,下面我们来介绍下常见的几种和向量数据库相关的工具。

1、Milvus:为云而生的向量数据库

在使用之前,需要确定自己是需要向量检索服务,还是向量数据库

如果你的数据量只是几十万上百万的数据量级的话,那建议可以不需要用向量数据库这个东西。

向量数据库更多地是面向更大规模的数据量,以及规模更大的业务。但是一旦你的数据量上了亿级、百亿级、甚至更多,那可能用一个专业的向量数据库,会是一个更好的选择。

这个东西就好比我们玩游戏一样,我们平常用手机可以玩游戏,但是就有人喜欢用switchpico等等,这其实就是在使用更加专业的东西,去享受一个更加专业级的服务。

所以,如果你对向量检索有需求的话,那就按照自己的需求,去选择一个合适的向量检索服务或向量数据库就OK了。

2、towhee

(1)简单介绍

除了Milvus之外,还有另外一个项目叫towhee。简要概括来说就是,比LangChain更开箱即用些的应用程序。它也基本上是围绕着LLM + VectorDB + Prompt chained together这样的理念来开发。

(2)Operators & Pipelines

Towhee做的事情是什么呢?它以operator的方式,去把所有的model给serve起来。然后同时,去给我们的一些算法工程师,特别是针对工程能力比较欠缺的工程师,去建立一套完整的pipeline,去帮助工程师解决问题。

简单概括就是:towhee帮你把你的非结构化数据,给embedding成向量,然后后边对接到向量数据库里面,最后去对向量数据库去进行增删改查。

towhee也预置了很多主流的模型,基本上国外的主流模型都已经接上了。在未来的某一天,将会做到中外模型相互切换。

在这里,可以理解为:每一个模型相当于一个算子,直接配置进来进行切换就好了。

3、Zilliz

(1)构建开源+云的非结构化数据处理方案

左边这张图,就是我们提供的一些最基础的工具,这工具就是根据用户自己按需使用即可。

来到右边这张图,要讲解的是ZilliZ CloudZilliZ Cloud为用户提供的是,大而全、且开箱即用的全托管向量检索服务。

(2)Zilliz Cloud:企业级特性

所以我们做Zilliz Cloud的目的主要是,从一个开源级项目企业级应用进化的一个过程。它具有以下几点特性👇🏻:

4、合作伙伴

Zilliz也成为OpenAI首批Plugin的合作厂商。整体生态如下图所示:

三、🏝周边应用

前面说到了很多向量数据库底层的东西,现在来说说一些相关的应用。

1、OSSChat

(1)是什么

有这么一个网站:[osschat.io/。]

在3月25日,openAI发了Plugin的声明之后,我们在短时间内迅速开发了OSSChat

OSSChat可以理解为是一个知识增强的应用。怎么做的呢?

ZilliZGithub上面500⭐️以上的项目都公开抓了一遍,背后的原理是ChatGPT + ZilliZ Cloud

其中ZilliZ做的事情是,把一些你特别想了解的项目,做了一个语义上和文档上的增强。

(2)前后对比

下面来做个举例。比如问了同样一个问题:在Milvus里面,TTL是怎么实现的?

ChatGPT就开始胡说八道了,而经过知识增强的OSSChat,就给出了比较满意的答案。

(3)底层设计

下面梳理一下OSSChat做知识增强的一个大致逻辑。整体来讲就还是,结合向量数据库的能力,给大模型做一个更有力的知识积累和推荐。直白一点说就是,大模型不知道你想要的东西,那你就给它一些相关的东西,让它去学习和进化就好了。设计思路如下图所示👇🏻:

2、GPTCache

(1)是什么

在做了OSSChat的过程中,ZilliZ发现了两个问题。

第一,GPT是按照Token去收费的,而且Token是有长度的,虽然是越来越长,但是永远是有限度的。

第二,大家会发现,ChatGPT在回答你的时候,是一个字一个字蹦出来的。慢的原因有可能是网络因素,也有可能是推理过程中需要较长时间的原因,所以它会一个字一个字蹦出来。

基于这两点,ZilliZ就做了GPTCache这个应用。GPTCache可以理解为,在关系型数据库里面,先帮你ready到一些事情。

(2)整体生成过程

GPTCache整体要做到的事情就是,让你省时省心省力,更快地去生成内容。

比如说你这是个客服系统,然后每天就会有几万个用户在那里问。但其实会发现大多数用户问的问题是一样的,比如说:这个商品包邮吗?你的邮费是多少?……

那这个东西其实,问来问去就是两个问题,在数据库里面要进行mapping的可能也就是这两个问题。

如果每回都要扔给大模型来处理的话,就会浪费掉很多不必要的资源:时间和金钱。

所以我们就会在中间建立一个Cache层,把用户的问题和大模型回答的答案,给存进来。存进来之后,每次用户问新问题,我就先去我的Cache层查询一下,如果命中了,我就直接把Cache里面的答案,扔回给用户。

四、🌁Milvus的开发生态

最后一部分,来聊聊Milvus的一些开发生态。

1、LLM-powered autonomous agent system

在整个agent里面,我们可以看到,向量数据库做的事情就是,帮助大语言模型做到一个很好的辅助作用。

向量数据库更多的是为大模型提供长期的记忆,而这个长期记忆,就帮大模型去更好地做落地应用。

目前的大模型基本都是通用型的,而未来的大模型,更多的是往专有领域发展的

目前ChatGPT都是以一个应用Application的形式在发展,那其实,比如说,你问ChatGPT说你们全家一天三餐吃什么,然后怎么吃更健康,有没有什么健康隐患?这个时候ChatGPT是不会告诉你的,因为ChatGPT没法知道一家人一天三餐都吃了些什么。所以你需要一个私有的、专业的助手去帮你做这件事情 。

那你的私域数据从哪里来呢?那就都来源于向量数据库提供的这些帮助。

2、Features Designed for AIGC Developers

第二部分要谈到的是,针对AIGC开发者设计的一些功能。以下将介绍几个ZilliZ最近在向量数据库方面做的一些新的尝试。

(1)Partition Key

第一个是Partition Key。可以看做是在建表的时候,比如像一些名字、时间等等,帮助用户去做资源的隔离。

因为我们可以看到一些AIGC的场景都是TO C的,我们都是给不同的用户去服务的。那在建表的时候,我们就希望把用户的数据完全地做隔离。原来的方式可能就是一人建立一套表,即一个组织一套向量数据库,但是这样的方式所带来的成本就会非常非常高。那现在就可以用Partition Key的方式,让你在一张表当中,可以去serve不同的用户。

(2)Sparse Vector

第二个要讲的是稀疏向量。以前我们更多用的是稠密向量,也就是比谁跟我们最像。

但其实在很多其他场景里面,我们也会看到稀疏向量。也就是在某些场景下,需要去找跟我们最不相近的东西。

(3)Multi Vectors

第三个要讲的是多维度向量查询。

有时候,一些个体信息会比较复杂,以特斯拉Model S为例,假设我们已经有它所有的信息和图片,那我们可以看到,除了它的名字之外,它的照片、车头、车底和车尾等,都有非常丰富的一些信息。那如果我们把这一辆车,作为一个向量来进行统一管理的话,可能会有一些遗漏。所以,我们可以把这个车,分成不同的向量去表示。

Multi Vectors这个比较适合的场景是,一个对象具有很多多模态的属性。

(4)Vector List

第四个要讲的是:向量组。这个更多使用的场景是视频,未来等到大模型对视频下手的时候,就可能会以这种形式去做。

在之前,向量检索在视频的去重、风控、涉黄等层面,都有非常多的应用。那它是怎么做的呢,大部分是对视频的关键帧去进行抽帧。

如果未来要做的更加精细化的话,会以一秒一帧的形式去进行处理。下图可以看到,一般是以一秒一帧的形式,每张图片会对应放到数组里面,然后最终再对整个向量组,去进行搜索和查询。

五、🚂结束语

文章写到这里,小编突然发现向量数据库的落地原来还能这么玩!

比如,GPTCache可以极大地降低大模型在落地应用时的时间损耗和成本损耗。OSSChat可以给个人、也可以给企业做知识增强。

当然除此之外,向量数据库能做的事情还有很多很多,未来还有很多相关的落地应用值得探索。

那说到这,关于向量数据库的讲解就告一段落啦!

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

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

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

相关文章

高并发内存池——链表设计

自由链表类的设计 由于申请的空间块经过对齐之后大小至少为8,因此可以考虑在未被使用的内存块中取前8字节存储下一个空间的地址 FreeList类初步声明 class FreeList { private:void* _freelistnullptr; //自由链表头指针size_t _size0; //自由链表的长度size_t …

硅纪元AI应用推荐 | 豆包整容成了浏览器,让你的电脑秒变AI PC

“硅纪元AI应用推荐”栏目,为您精选最新、最实用的人工智能应用,无论您是AI发烧友还是新手,都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能,开启智慧新时代! 亲爱的技术宅们、办公高手们&#xff0c…

Spring源码-从源码层面讲FactoryBean接口的使用

一般情况下,Spring通过反射机制利用bean的class属性指定实现类来实例化bean。在某些情况下,实例化bean过程比较复杂,如果按照传统的方式,则需要在标签中提供大量的配置信息,配置方式的灵活性是受限的。为此&#xff0c…

Vulnhub靶场DC-8练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 发现sql注入点2. sqlmap跑数据3. John解密4. 反弹shell5. exim4提权 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-8.zip 介绍: This challenge is a bi…

助人利人,是自己的需要

96天 【明明德即是亲民】 帮助他人、利益他人,不是他人的需要,而是我们自己的需要,我们需要开发自己内心的宝藏 ~ 心学很简单、很平实,但是在精微之处又是深奥且广大,没有下功夫的人难于描述其中的精妙;…

计算机毕业设计:基于SSM的宠物领养系统

私信获取完整代码 一、选题背景介绍 📖☕️🌊📝📚🎩🚀📣 🎩 宠物领养系统:帮助爱宠人士更好的去查看可以领养的宠物,帮助宣传相关保护宠物相关知识 &…

【二叉树 C++DFS】2458. 移除子树后的二叉树高度

本文涉及知识点 二叉树 CDFS LeetCode 2458. 移除子树后的二叉树高度 给你一棵 二叉树 的根节点 root ,树中有 n 个节点。每个节点都可以被分配一个从 1 到 n 且互不相同的值。另给你一个长度为 m 的数组 queries 。 你必须在树上执行 m 个 独立 的查询&#xff…

深入理解计算机系统 CSAPP 家庭作业11.8

回收子进程是书本537页的内容 在tiny.c文件加以下代码,记得重新编译哦 书中提到CGI是在动态内容中的,所以题目的意思应该是在动态内容里面回收 void handler1(int sig) {int olderrno errno;while (waitpid(-1,NULL,0)>0){Sio_puts("Handler reaped child\n");…

Scrapy 爬取旅游景点相关数据(四)

本节内容主要为: (1)创建数据库 (2)创建数据库表 (3)爬取数据进MYSQL库 1 新建数据库 使用MYSQL数据库存储数据,创建一个新的数据库 create database scrapy_demo;2 新建数据表 CR…

开发者的AI革命:我们仍在敲代码,AI为何没有取代我们的工作?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【区块链+绿色低碳】雄韬智慧锂电储能管理系统 | FISCO BCOS应用案例

雄韬智慧锂电储能管理系统(Energy Management System,以下简称 EMS)是雄韬集团响应国家实现新型电力 系统建设,助力“碳达峰、碳中和”目标而自主开发的创新智慧锂电储能系统。 系统采用了 FISCO BCOS 联盟链,融合了物…

放大电路总结

补充: 只有直流移动时才有Rbe动态等效电阻 从RsUs看进去,实际上不管接了什么东西都能够看成是一个Ri(输入电阻) Ri Ui/Ii Rb//Rbe Ui/Us Ri/(RiRs) Aus (Uo/Ui)*(Ui/Us) Au *Ri/(RiRs) 当前面是一个电压源的信号 我们就需要输入电阻更大 Ro--->输出电阻--->将…

Mybatis(四)特殊SQL的查询:模糊查询、批量删除、动态设置表明、添加功能获取自增的主键

实体类: 数据库: 1、模糊查询 方案一: 不适用#{ },’%?%‘ 问号是属于字符串的一部分 不会被解析成占位符,会被当作是我们字符串的一部分来解析,所以我们执行的语句中找不到占位符,但是我们却…

帕金森病(PD)诊断:三种基于语音的深度学习方法

帕金森病(Parkinson’s disease, PD)是世界上第二大流行的神经退行性疾病,全球影响着超过1000万人,仅次于阿尔茨海默症。人们通常在65岁左右被诊断出患有此病。PD的一些症状包括震颤、肌肉僵硬和运动迟缓。这些症状往往出现在较晚…

跟《经济学人》学英文:2024年07月20日这期 Japan’s strength produces a weak yen

Japan’s strength produces a weak yen Currency meddling will prove futile 货币干预将被证明是徒劳的 meddling:干涉;摸弄;(meddle的现在分词形式) futile: 美 [ˈfjuːtl] 无效的;徒劳…

RKNN3588——YOLOv10的PT模型转RKNN模型

一:PT转ONNX 修改yolov10的源码 1. 修改head.py文件,在lass v10Detect(Detect)中的forward添加 # 导出onnx增加y []for i in range(self.nl):t1 self.one2one_cv2[i](x[i])t2 self.one2one_cv3[i](x[i])y.append(t1)y.append(t2)return y# 导出onnx…

(精校版)高校大数据实验室建设解决方案

在当今数据驱动的时代,大数据已成为推动社会发展的核心动力。高校作为培养未来社会精英和科技创新人才的摇篮,迫切需要建设大数据实验室,以应对日益增长的大数据人才需求和科学研究挑战。大数据实验室不仅能够提供先进的教学资源和实践平台&a…

mysql面试(七)

前言 本章节列出了mysql在增删改查的时候,分别会涉及到哪些锁类型,又是如何交互的。 这个章节也是mysql面试基础系列的最后一章,后面准备更新redis数据类型和分布式锁相关问题。如果各位看官有什么问题的话,可以留言。 锁 之前…

leetocde662. 二叉树最大宽度,面试必刷题,思路清晰,分点解析,附代码详解带你完全弄懂

leetocde662. 二叉树最大宽度 做此题之前可以先做一下二叉树的层序遍历。具体题目如下: leetcode102二叉树的层序遍历 我也写过题解,可以先看看学习一下,如果会做层序遍历了,那么这题相对来说会简单很多。 具体题目 给你一棵…

Vue3+Element Plus 实现table表格中input的验证

实现效果 html部分 <template><div class"table"><el-form ref"tableFormRef" :model"form"><el-table :data"form.detailList"><el-table-column type"selection" width"55" align&…