跳转到主要内容

热门内容

今日:


总体:


最近浏览:


Chinese, Simplified

category

David Blank Edelman和我们的扶手椅架构师Uli Homann和Eric Charran将专注于大型语言模型(LLM)和向量数据库,以及它们在推动ML和AI方面的作用。

什么是矢量数据库?

Eric将矢量数据库定义为一种存储有关数据多维方面的有意义信息的方式,例如所谓的矢量,矢量是数字的,通常是数字整数,其工作方式非常类似于传统的关系数据库系统。

向量数据库的有趣之处在于,它们可以帮助我们解决不同类型的查询。一种类型的查询类似于“最近的邻居”。例如,如果Spotify知道Eric Charran喜欢Def Leppard,他也喜欢这首歌,那么根据Spotify可能拥有的多个维度,有哪些最接近的其他歌曲非常非常相似,以便推荐这首歌。它的工作方式是,它只是使用向量之间的数字距离来找出这个问题的答案。

Uli补充道,人工智能背景下的矢量数据库正在有效地使用文本,并将文本转换为这些数字表示。例如,如果你进入Postgres社区,Postgres团队已经在Postgres中添加了一个插件,你可以在其中获取任何文本字段,将其转化为向量,然后你可以获取该向量并将其嵌入LLM。
矢量已经存在很长一段时间了,因为它是神经网络模型的一部分,在一天结束的时候,这些也是矢量。现在这是特定于数据的,因为它不仅仅是数据库,虽然数据库将很普遍,但你会看到搜索系统也将其搜索索引公开为向量。

例如,Azure Cognitive Search就是这样做的,Uli理论上其他搜索系统也会这样做。例如,你可以将该索引作为OpenAI系统或Bard或任何你喜欢的AI系统的一部分。

矢量数据库是实现人工智能系统的一种方法,另一种方法是嵌入。

矢量数据库与自然语言处理

让我们来看看矢量数据库在现实世界中是如何使用的,以及在NLP中使用嵌入。例如,以单词嵌入、句子嵌入为例,使它们成为特定的整数基,这样LLM实际上可以将它们包含在用于训练它的信息语料库中。这是一个向量数据库用例,另一个用例是前面的“最近邻”示例。

如果你还记得,对于最近邻居用例,如果我有这个特定的项目,对象输入,离它最近或最远的东西是什么。这可以包括图像和视频检索,获取非结构化数据,但将其矢量化,这样你就可以找到它,对它进行表面处理,并进行所有重要的比较。这也可以包括异常检测和地理空间数据,然后是机器学习。

嵌入在LLM的上下文中意味着什么?

LLM主要在互联网上接受培训,所以如果你在看Bard或OpenAI,他们会得到一份互联网副本作为知识库,从概念上讲,它是如何工作的——它被矢量化并放入LLM中。

现在这是一套很好的知识,如果你使用ChatGPT或Bing聊天或类似的东西,你将有效地访问互联网。这很好,但大多数LLM都是静态的,例如,OpenAI模型是在2021年的某个时候编译的。如果你在没有任何助手的情况下向模型询问2022年的一个事件,它不会知道,因为从概念上讲,它是用不包括2022年事件的知识编译的。

因此,现在发生的事情是,例如,你从互联网上引入模型,有效地让这些LLM理解“哦,有一些超出我所知的东西”并将其引入。这种情况将适用于例如互联网搜索。

如果你是一家企业,你关心全球知识,但你希望你的企业的特定知识也能成为搜索的一部分。因此,如果像埃里克这样的人在他的新公司寻找特定的东西,公司的知识也可以为他所用。这就是所谓的数据基础,你用你的企业拥有的数据建立模型,并扩展知识,而嵌入就是实现这一点的一种技术。

嵌入简单地说,将这个知识向量折叠到更大的模型中,这样每次运行查询时,这个嵌入都将是系统在响应您之前评估的查询的一部分。Eric的想法是,向量数据库存储了互联网上网页信息语料库中的概念的基于整数的表示,它允许你将附近的概念链接在一起。

如果LLM是在这些向量和嵌入上训练的,那么它就是这样真正理解概念的。这是语义概念的矢量化,然后它们之间的距离方程允许模型将这些东西缝合在一起并做出相应的响应。

使用LLM的单样本或多样本训练

LLM团队现在拥有技术和工具,可以轻松地通过嵌入将向量存储和向量数据库引入模型。一个技巧是确保使用正确的工具来帮助您,但是在这样做之前,您可以使用提示工程将您正在寻找的示例数据输入到模型中。即时工程的一部分是所谓的单杆或多杆训练。作为提示的一部分,您会说:“我期待着这样的输出。”

然后系统会考虑到这一点,并说“啊,这就是你想要的”,并做出同样的回应。你可以给它提供相当多的样本数据,这就是我希望你看到的,这显然比做嵌入和其他事情便宜得多,因为这是提示的一部分,因此在进行嵌入之前应该首先考虑。

公司最终会使用嵌入,但你应该从一次和多次训练开始,因为如果你给出正确的提示,这些模型中有很多知识可以被引导出来。

LLM微调


微调是采用模型并尝试开发适合用途的数据集的方式。无论是您下载、使用或已经训练的预编译模型,都需要进行额外的训练循环,以便它在适合用途的数据集上进行训练,这样您就可以基本上调整它,使其以您想要的方式做出响应。

微调元素是基于目标驱动数据集的迭代训练循环来调整模型的参数。关键部分是你带来特定的数据集,并对模型进行一层训练。你正在向通用模型添加更多的约束,它正在使用你的数据来影响你所处特定领域的训练本身,例如医疗保健或工业自动化领域。微调对幻觉也有很大帮助,因为你告诉系统这是你需要注意的,它会有效地适应并更精确。


LLM和单次或多次训练的局限性

有两件事是大型语言模式真正不擅长的。一件是数学,所以不要让它为你做微积分,这是行不通的。到目前为止,第二件事是,你不能将LLM指向结构化数据库,让系统自动理解这是模式,这是数据,并要求它产生良好的响应。还有更多的工作要做。


目前最先进的技术是,您可以有效地构建垫片或解决它;您可以编写代码,然后将这些代码集成到提示中。例如,OpenAI有一种方法可以让你在提示中调用一个函数,例如,该函数可以带回关系或结构化数据。


从单杆或多杆训练中,您可以将结果集(不能太大)输入到提示中。还有基于管道的编程,这将在本场景中进行解释。

  • 你是一家保险公司。
  • 大卫是保险公司的客户,他想了解自己的索赔情况。
  • 你进入你的网站,输入聊天信息,我首先需要知道的是大卫是谁?在我的CRM系统中,你会知道谁是David,他有什么保险,什么索赔是公开的,等等……这都是CRM系统中的结构化信息,也许还有索赔管理系统。
    • 第一阶段是解析语言,例如David使用GPT输入的文本,并提取相关信息,然后通过结构化的API调用将其提供。
    • 你会得到推迟的结果。
  • 然后,使用提示工程和单次和多次训练创建您真正想要用于响应的提示。
  • 然后,系统会生成您想要的回复:“嗨,大卫,很高兴再次见到您,这是索赔的状态
  • 在这种情况下,您只使用了两次OpenAI模型,而不仅仅是一次。

总之,您首先使用它来理解语言并提取调用结构化API所需的内容,然后将结构化系统的响应反馈到提示中,以便它生成您要查找的响应。

越来越多地采用矢量索引

Eric提出,作为一名架构师,我如何确定我是否需要一个专用的矢量数据库,或者我可以使用这些称为矢量搜索索引的东西?另一个问题可能是,我如何构建一个系统,以便帮助LLM开发人员更好地工作或更高效地工作?


Eric认为,我们正在达到一个过渡点,在这个过渡点上,矢量数据库曾经是矢量的关系数据库管理系统(RDBMS),并回答与矢量相关的查询。


他看到许多lake house平台和传统的数据库管理系统都采用了矢量索引,这样开发人员就不必拾取数据并将其移动到另一个特定的地方,对其进行矢量化和存储。现在,关系数据库管理系统或lake house的这些组件可以在数据所在的位置上创建矢量,例如在delta表上。这是一个建筑方面的考虑,它应该让建筑师感到高兴,因为世界上最难移动的东西是数据,而建筑师讨厌这样做。

矢量数据库的体系结构考虑因素


另一个体系结构方面的考虑是如何实际实现矢量化?它是写操作的ETL方案吗?是否存在与矢量化本身相关的逻辑?当你试图为你的组织创建一个平台时,所有这些信息都是重要的。
如果你正在创建自己的基础模型,那么矢量化以及数据矢量化(如果嵌入)的过程变得非常重要。
您还必须担心是否允许存储基于您所在行业的特定信息,如金融服务、生命科学、健康,以及在数据进入矢量化过程之前可能需要扫描和标记的所有不同信息。


架构师需要考虑的另一个问题是,尽管矢量化是一项关键技术,但我们现在已经看到了真实的数据,在这种情况下是微软,矢量化并不是唯一必要的问题答案。微软已经看到,从响应的角度来看,对于开放的人工智能系统来说,搜索索引加上矢量化实际上比矢量或索引的查询更快、更可靠。

在开发解决方案时,在这种情况下,你应该更灵活地说,“我将如何去获取这些数据?”有时这是多种技术的组合,而不仅仅是一种有效或最高效的技术。


Uli的架构是对你所拥有的工具的理解,并真正选择它是什么,理想情况下不要寻找非黑即白的答案,因为世界大多是灰色的,选择正确的工具一起可以得到正确的答案,而不是单一的工具或技术。

Resources

 

Related episodes

 

本文地址
最后修改
星期六, 五月 11, 2024 - 22:40
Article