向量数据库是如何工作的?

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 
  • 原创 | Java 2021 超神之路,很肝~

  • 中文详细注释的开源项目

  • RPC 框架 Dubbo 源码解析

  • 网络应用框架 Netty 源码解析

  • 消息中间件 RocketMQ 源码解析

  • 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析

  • 作业调度中间件 Elastic-Job 源码解析

  • 分布式事务中间件 TCC-Transaction 源码解析

  • Eureka 和 Hystrix 源码解析

  • Java 并发源码

来源:twitter-thread.com/t/ZH/

1655626066331938818

05e06ab630b512f948e4f34e464c9626.jpeg


向量数据库和 Embedding 是当前 AI 领域的热门话题。

Pinecone 是一家向量数据库公司,刚刚以约 10 亿美元的估值筹集了 1 亿美元。

Shopify、Brex、Hubspot 等公司都在他们的 AI 应用程序中使用向量数据库和 Embedding。那么,它们究竟是什么,它们是如何工作的,以及为什么它们在 AI 中如此重要呢?让我们一探究竟。

我们先看第一个问题,什么是 Embedding?你可能在 Twitter 上已经看到这个词被无数次提及。

简单来说,Embedding 就是一个多维向量数组,由系列数字组成 。它们能够代表任何东西,比如文本、音乐、视频等等。我们这里将主要关注文本。

9d8da326b960ebcc92848c7f6d03f59d.jpeg

创建 Embedding 的过程非常简单。这主要依靠 Embedding 模型(例如:OpenAI 的 Ada)。

你将你的文本发送给模型,模型会为你生成该数据的向量结果,这可以被存储并在之后使用。

Embedding 之所以重要,是因为它们赋予我们进行语义搜索的能力 ,也就是通过相似性进行搜索,比如通过文本的含义。

因此,在这个例子中,我们可以在一个向量空间上表示“男人”、“国王”、“女人”和“王后”,你可以非常容易地看到它们在向量空间之间的关系。

fd7ae66da96904a81ca487ab5fc607cb.jpeg

来看一个更直观的例子:

假设你是一个有一大箱玩具的小孩。现在,你想找出一些类似的玩具,比如一个玩具汽车和一个玩具巴士。它们都是交通工具,因此它们是相似的。

这就是所谓的 “语义相似性”—— 表示*某种程度上** 事物具有*相似的含义或想法

现在假设你有两个相关联但并不完全相同的玩具,比如一个玩具汽车和一个玩具公路。它们并不完全相同,但因为汽车通常在公路上行驶,所以它们是相互关联的。

那么,Embedding 为何如此重要呢?主要是由于大语言模型(LLM)存在上下文限制 。在一个理想的世界中,我们可以在一个 LLM 提示中放入无限数量的词语。但是,正如许多人所知,目前我们还做不到。以 OpenAI 的 GPT 为例,它限制在大约在 4096 - 32k 个 token。

因此,由于其 “内存”(即我们可以填充到其 token 的词语的数量),我们与 LLM 的交互方式受到了严重限制。这就是为什么你不能将一个 PDF 文件复制粘贴到 ChatGPT 中并要求它进行总结的原因。(当然,现在由于有了 gpt4-32k,你可能可以做到这一点了)

那么,怎么把 Embedding 和 LLM 关联起来解决 token 长度限制的问题呢?实际上,我们可以利用 Embedding,只将相关的文本注入到 LLM 的上下文窗口中。

让我们来看一个具体的例子:

假设你有一个庞大的 PDF 文件,可能是一份国会听证会的记录(呵呵)。你有点懒,不想阅读整个文件,而且由于其页数众多,你无法复制粘贴整个内容。这就是一个 Embedding 的典型使用场景。

所以你将 PDF 的文本内容先分成块,然后借助 Embedding 将文本块变成向量数组,并将其存储在数据库中。

在存储分块的向量数组时,通常还需要把向量数组和文本块之间的关系一起存储,这样后面我们按照向量检索出相似的向量数组后,能找出对应的文本块,一个参考的数据结构类似于这样:

{[1,2,3,34]: '文本块1',
[2,3,4,56]: '文本块2',
[4,5,8,23]: '文本块3',……}

现在你提出一个问题:“他们对 xyz 说了什么”。我们先把问题“他们对 xyz 说了什么?”借助 Embedding 变成向量数组,比如[1,2,3]。

现在我们有两个向量:你的问题 [1,2,3] 和 PDF [1,2,3,34],然后,我们利用相似性搜索,将问题向量与我们庞大的 PDF 向量进行比较。OpenAI 的 Embedding 推荐使用的是余弦相似度。

ca28fdc5d49eb9224c2e0d272e7960e9.png

好了,现在我们有最相关的三个 Embedding 及其文本,我们现在可以利用这三个输出,并配合一些提示工程将其输入到 LLM 中。例如:

已知我们有上下文:文本块 1,文本块 2,文本块 3。

现在有用户的问题:他们对 xyz 说了什么?

请根据给定的上下文,如实回答用户的问题。

如果你不能回答,那么如实告诉用户“我无法回答这个问题”。

就这样,LLM 会从你的 PDF 中获取相关的文本部分,然后尝试如实回答你的问题。

这就简单的阐述了 Embedding 和 LLM 如何为任何形式的数据提供相当强大的类似聊天的能力。这也是所有那些“与你的网站/PDF/等等进行对话” 的功能如何工作的!

请注意 Embedding 并非 FINE-TUNING。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

3f590096a0b125c40808c707cf201ace.png

已在知识星球更新源码解析如下:

61a800ff3928cc543d112753982064a0.jpeg

b0fc1e26b5b71df539851d7a091c322e.jpeg

46d9ec9fdae1575b6108d3aa0e01abcf.jpeg

3ac333b3484f81946f2b7e5d8e13d660.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“危险!立刻停下所有大型AI研究!”马斯克领衔,1000多名硅谷企业家科学家联名呼吁...

看见更大的世界 打开App APP内打开 华尔街见闻 原创1个小时前 华尔街见闻官方账号 优质财经领域创作者 关注 当全社会都在为AI的进化而欢呼雀跃,全新的、意想不到的风险可能也正在悄悄酝酿。 3月22日,生命未来研究所(Future of Life&#xf…

OpenAI将用新方法来训练模型;英伟达CEO拟本月会见腾讯、字节跳动等企业高管;摩根大通正寻求雇佣更多AI员工丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 176比特“祖冲之号”量子计算云平台上线 5月31日,在中科院量子信息与量子科技创新研究院的指导下,在中科院软件所和中电科十六所的技术支持下,科大国盾量子技术股份有限公司携…

OpenAI CEO 在美国国会首秀:回应对 AI 的一切质疑,主动要求接受监管!

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 从最初只有十来个人的小团队,到如今的 300 人;从起步拿到 10 亿美元启动资金,到创造了估值约为 300 亿美元的 AI 独角兽“神话”,OpenAI 用 GPT 系列、Wh…

LaTeX常用符号及希腊字母

LaTeX常用符号及希腊字母 在LaTeX代码加载包的地方添加 \usepackage{amsmath} LaTeX符号代码效果\rightarrow{}→\leftarrow{}←\xleftarrow[下方公式]{上方公式}\xrightarrow[下方公式]{上方公式}Eg:A \xleftarrow[n]{x>0} B\emptyset∅\in∈\notin∉\subset⊂\supset⊃\…

如何最大限度地利用ChatGPT、Bard和其他聊天机器人

随着生成式人工智能的发展,面向消费者的聊天机器人能够处理不同领域的需求,并提供相应的帮助和建议,如制定商业战略、设计数学学习指南、提供薪资谈判建议,甚至撰写婚礼誓词。而且这只是一个开始。 原文链接:https://w…

你是不是想做影视剪辑奈何不会写文案?我来帮你搞定文案

影视剪辑的本质就是我们进行一系列的主题动作分解组合,完成蒙太奇形象的塑造,影视剪辑主要分为几个步骤: 第一:视频素材准备 第二:文案素材准备 第三:确定剪辑方案 第四:剪辑手段选择 第五&…

电影解说文案怎么写,电影解说文案写作技巧,影视解说新手该怎么写文案

电影解说文案既是文字表达,也是艺术表达。在现代,越来越多的影片制作者不仅要拍出精彩视觉效果的电影,还要拍出让观众深深触动的影片。因此,电影解说文案的写作要求也越来越高。那么,如何写出吸引人的电影解说文案&…

电影解说文案写作技巧

电影解说文案是指在电影放映期间,为了让观众更好地理解电影情节、人物、背景和细节,配以文字解说的一种形式。好的电影解说文案可以让观众更好地理解电影,加深观影体验。下面是一些电影解说文案写作技巧,希望能对您有所帮助。 一、…

Word 2016:您正试图运行的函数包含有宏或需要宏语言支持的内容

新建一个word文档后,发现打开时有以下提示: 需要多点几次才能消去,比较烦人 解决方案: 1、以管理员身份运行Word(在office安装目录下找WINWORD.EXE,或者在开始菜单中右键均可); 2…

word编写宏

1,首先开启宏 2,视图->查看宏 3,创建宏 AutoOpen()函数为打开word自动运行4,保存即可

三步教你Word启用所有宏

此博客为个人博客,不涉及商业用途,仅提供学习参考,内容均来自个人原创以及互联网转载和摘录。 此博客上带有原创标识的文章、图片、文件等,未经本人允许,不得用于商业用途以及传统媒体。网络媒体或个人转载请注明出处…

WORD文档中的宏代码操作(表格批量操作)

编写word宏代码步骤 点击“视图” - “宏” 。 点击“录制宏”,填写宏名称(即函数名),选择保存位置,确定后,鼠标会变成录像带,再进行需要的操作后,点击停止录制,即完成操…

微软word提示:您正试图运行的函数包含有宏或需要宏语言支持的内容

关闭Word提示:您正试图运行的函数包含有宏或需要宏语言支持的内容。而在安装此软件时,您(或您的管理员)选择了不安装宏或控件的支持功能。 解决方法 点击【开始菜单】—选择【控制面板】—找到并打开【程序和功能】(xp的是添加删除)—在里面找到安装好的…

word如何编写宏

1,首先开启宏 2,视图->查看宏 3,创建宏 AutoOpen()函数为打开word自动运行1 4,保存即可 5.然后我们把word关闭,重新打开,结果弹框: 这里注意一点: 只要打开word就会弹框&…

使用宏批量插入图片到Word表格

使用宏批量插入图片到Word表格 创建宏,word 视图-》宏》查看宏》输入名称》创建 宏代码如下: Sub imgTbl()If ActiveDocument.Tables.Count 1 Then 删除上次数据ActiveDocument.Tables(1).DeleteEnd If//获取文件夹,存入数组Dim kr()Set f…

解决插件在word中的宏禁用问题。MathType, Microsoft Office, powerpoint

背景:破解版的Microsoft Office,以及破解版的MathType。启动word后,会出现“宏禁用”的警告,并且MathType插件不可用,MathType对象也无法编辑,需要手动点击警告里的“启用”,主要是每次打开MS都得重新启用。…

打开word出现“您正试图运行的函数包含有宏或需要宏语言支持的内容。”的解决方法

1、Word选项→加载bai项→管理→转到……,转到→把勾勾都取消→确定即可。 2、工具→宏->安全性→可靠发行商,将下方的选择框中的钩清空,再将宏安全性改为最高。 3、可能是初次安装Office时共享里的VBA没安装,可以重新再安装一…

java qq 实现消息发送_java如何实现qq发送消息

有一天,你老婆要你给他发1000次我爱你,怎么实现呢? 相关代码如下 package com.jie; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferabl…

关于一个监听、发送QQ消息的插件的使用部署

先来简单介绍下这个插件,这个插件名为酷Q(coolq),官网点这里,是一群大佬们开发的QQ插件,其中有各种各样的群机器人,可以说是非常的好用了。 下面我简单的说一下他的使用以及在linux上的部署&am…

语音识别的总结(PPT)

暑假实习,收获挺大,感谢老师般的范院! 实习项目是去做一款轻量级、个性化的语音识别软件,于是补了很多语音识别的算法。我把做的一个PPT粘到这里(做工一般,个人较菜),也希望对大家有…