Press "Enter" to skip to content

Tag: vectors

“深入挖掘 Rust 编写的矢量数据库 Qdrant”

介绍 Vector数据库已经成为存储和索引非结构化和结构化数据表示的首选位置。这些表示是由嵌入模型生成的向量嵌入。向量存储已成为开发带有深度学习模型的应用程序的重要组成部分,尤其是大型语言模型。在向量存储的不断发展中,Qdrant是最近推出的一个功能齐全的向量数据库。让我们深入了解一下。 学习目标 熟悉Qdrant的术语,以更好地理解它 深入研究Qdrant Cloud并创建Clusters 学习如何创建我们的文档的嵌入并将它们存储在Qdrant Collections中 探索在Qdrant中查询的工作原理 在Qdrant中调试过滤器,以检查其工作原理 本文作为Data Science Blogathon的一部分发表。 什么是嵌入? 嵌入是一种以数字形式表示数据的方式,即以n维空间中的数字或数值向量的形式表示不同类型的数据,如文本、照片、音频、视频等。嵌入使我们能够以这种方式对相关数据进行分组。使用特定模型可以将某些输入转换为向量。Google创建的一种广为人知的嵌入模型是将单词转化为向量(向量是具有n维的点),称之为Word2Vec。每个大型语言模型都有一个嵌入模型,用于生成LLM的嵌入。 嵌入的用途是什么? 将单词转换为向量的一个优点是可以进行比较。当拿到两个单词作为数字输入或向量嵌入时,计算机可以进行比较,尽管它无法直接比较它们。可以将具有可比较嵌入的单词分组在一起。因为它们彼此相关,诸如“王”、“皇后”、“王子”和“公主”这些术语将出现在一个聚类中。 从这个意义上讲,嵌入帮助我们找到与给定术语相关的单词。这可以用于句子,我们输入一个句子,提供的数据返回相关的句子。这为许多用例奠定了基础,包括聊天机器人、句子相似性、异常检测和语义搜索。我们开发的用于根据我们提供的PDF或文档回答问题的聊天机器人利用了这种嵌入概念。所有生成式大型语言模型都使用这种方法,以获得与他们提供的查询相关联的内容。 什么是向量数据库? 如前所述,嵌入是各种数据的表示,通常是非结构化数据以数字格式在n维空间中。那么我们该如何存储它们呢?传统的关系型数据库管理系统(RDMS)不能用于存储这些向量嵌入。这就是向量存储/向量数据库发挥作用的地方。向量数据库的设计目的是以高效的方式存储和检索向量嵌入。有许多不同的向量存储器,它们通过所支持的嵌入模型和用于获取相似向量的搜索算法的种类而有所不同。 什么是Qdrant? Qdrant是一种新型的向量相似性搜索引擎和向量数据库,采用Rust语言构建的可用于生产的服务。Qdrant具有用户友好的API,用于存储、搜索和管理具有元数据的高维点(点就是向量嵌入),这些元数据称为载荷。这些载荷成为有价值的信息,提高搜索精度,并为用户提供有见地的数据。如果您熟悉其他向量数据库,如Chroma,Payload类似于元数据,它包含有关向量的信息。 Qdrant是用Rust编写的,即使在负载很重的情况下也是快速可靠的向量存储。Qdrant与其他数据库的区别在于它提供的客户端API数量。目前,Qdrant支持Python、TypeScript/JavaScript、Rust和Go。它使用HSNW(层次可导航小世界图)进行向量索引,并提供了许多距离度量,如余弦、点和欧氏距离。它还提供了一个内置的推荐API。 了解Qdrant术语 要顺利开始使用Qdrant,熟悉Qdrant向量数据库中的术语/主要组件是一个好习惯。…

Leave a Comment

如何使用向量数据库构建LLM应用程序?

介绍 在人工智能领域,大型语言模型(LLMs)和生成型AI模型,如OpenAI的GPT-4、Anthropic的Claude 2、Meta的Llama、Falcon、Google的Palm等,已经彻底改变了我们解决问题的方式。LLMs使用深度学习技术来执行自然语言处理任务。本文将教你如何使用向量数据库构建LLM应用程序。你可能已经与类似亚马逊客服或Flipkart决策助手的聊天机器人进行过交互。它们能生成类似人类的文本,并提供几乎与现实对话无异的交互用户体验。然而,这些LLMs需要进行优化,以产生高度相关和具体的结果,才能真正对特定的使用案例有用。 例如,如果你询问亚马逊客服应用程序:“如何在Android应用中更改语言?”可能没有经过训练来处理这个确切的文本,因此可能无法回答。这就是向量数据库发挥作用的时候。向量数据库将领域文本(在这种情况下是帮助文档)和所有用户的过去查询(包括订单历史等)存储为数值嵌入,并提供实时查找相似向量的功能。在这种情况下,它将这个查询编码成一个数值向量,并使用它在其向量数据库中执行相似性搜索,找到最相似的邻居。有了这个帮助,聊天机器人可以正确地指导用户进入亚马逊应用程序的“更改语言偏好设置”部分。 学习目标 LLMs是如何工作的,它们的限制是什么,为什么它们需要向量数据库? 嵌入模型的介绍以及如何在应用程序中对其进行编码和使用。 学习什么是向量数据库,以及它们如何成为LLM应用程序架构的一部分。 学习如何使用向量数据库和tensorflow编写LLM/生成型AI应用程序。 本文是数据科学博客马拉松的一部分。 什么是LLMs? 大型语言模型(LLMs)是基础的机器学习模型,使用深度学习算法处理和理解自然语言。这些模型被训练使用大量的文本数据来学习语言中的模式和实体关系。LLMs可以执行许多类型的语言任务,例如翻译语言、分析情感、聊天机器人对话等。它们能够理解复杂的文本数据,识别实体及其之间的关系,并生成连贯且语法正确的新文本。 在这里阅读更多关于LLMs的信息。 LLMs是如何工作的? LLMs使用大量数据进行训练,通常是以太字节,甚至是拍字节,拥有数十亿或数万亿个参数,使其能够根据用户的提示或查询进行预测和生成相关的响应。它们通过词嵌入、自注意层和前馈网络处理输入数据,生成有意义的文本。你可以在这里阅读更多关于LLM架构的信息。 LLMs的限制 虽然LLMs似乎以相当高的准确性生成响应,甚至在许多标准化测试中比人类表现得更好,但这些模型仍然有限制。首先,它们完全依赖于它们的训练数据来构建推理,因此可能在数据中缺乏特定或当前的信息。这导致模型生成不正确或不寻常的响应,也被称为“幻觉”。有持续的努力在减轻这个问题。其次,模型可能无法按照用户的期望行为或响应。 为了解决这个问题,向量数据库和嵌入模型通过为用户寻找信息提供了额外的类似性查询(文本、图像、视频等)。以下是一个例子,LLMs无法回答用户询问的信息,而是依靠向量数据库找到该信息。 LLM和向量数据库 大型语言模型(LLM)被广泛应用于电子商务、旅游、搜索、内容创作和金融等行业的许多部分。这些模型依赖于一种相对较新的数据库类型,称为向量数据库,它以一种称为嵌入的二进制表示存储文本、图像、视频和其他数据的数值表示。本节介绍了向量数据库和嵌入的基本原理,更重要的是介绍了如何将它们与LLM应用程序集成使用。 向量数据库是一种使用高维空间存储和搜索嵌入的数据库。这些向量是数据特征或属性的数值表示。使用计算向量在高维空间中的距离或相似度的算法,向量数据库可以快速高效地检索相似的数据。与传统的基于标量的数据库不同,后者将数据存储在行或列中,并使用精确匹配或基于关键词的搜索方法,向量数据库的操作方式不同。它们使用向量数据库来在非常短的时间内(毫秒级别)搜索和比较大量向量,使用近似最近邻(ANN)等技术。 嵌入的简要教程 AI模型通过将原始数据如文本、视频和图像输入到诸如word2vec之类的向量嵌入库中,生成嵌入。在AI和机器学习的背景下,这些特征代表数据的不同维度,这些维度对于理解模式、关系和底层结构至关重要。 下面是使用word2vec生成词嵌入的示例。 1.…

Leave a Comment

“解锁LangChain和Flan-T5 XXL | 高效文档查询指南”

介绍 大型语言模型(LLMs)是一类特定的人工智能模型,旨在理解和生成类似于人类的文本。术语“大型”通常通过它们拥有的参数数量来量化。例如,OpenAI的GPT-3模型有1750亿个参数。可以将其用于各种任务,例如文本翻译、回答问题、写作论文、总结文本。尽管有很多资源展示了LLMs的能力,并提供了有关如何设置聊天应用程序的指导,但很少有人深入研究它们在现实业务场景中的适用性。在本文中,您将学习如何使用LangChain和Flan-T5 XXL构建基于大型语言的应用程序来创建文档查询系统。 学习目标 在深入研究技术细节之前,让我们确定本文的学习目标: 了解如何利用LangChain构建基于大型语言的应用程序 简要介绍文本到文本框架和Flan-T5模型 如何使用LangChain和任何LLM模型创建文档查询系统 现在让我们深入了解这些部分,以理解每个概念。 本文是Data Science Blogathon的一部分。 LangChain在构建LLM应用程序中的作用 LangChain框架旨在开发各种应用程序,例如聊天机器人、生成式问答(GQA)和摘要,以发挥大型语言模型(LLMs)的能力。LangChain为构建文档查询系统提供了全面的解决方案。这涉及通过分块对语料库进行预处理,将这些块转换为向量空间,在提出查询时识别相似块,并利用语言模型将检索到的文档细化为合适的答案。 Flan-T5模型概述 Flan-T5是谷歌研究人员开发的一种商业可用的开源LLM。它是T5(文本到文本转换Transformer)模型的变体。T5是一种先进的语言模型,它通过将NLP任务转换为基于文本的格式来训练。FLAN是Finetuned Language Net的缩写。 让我们深入构建文档查询系统 我们可以利用LangChain和Flan-T5 XXL模型在Google Colab的免费版中构建此文档查询系统。要在Google Colab中执行以下代码,我们必须选择“T4 GPU”作为我们的运行时。按照以下步骤构建文档查询系统: 1:导入必要的库…

Leave a Comment

Transformer编码器 | NLP问题的关键

介绍 我将以非常简单的方式向你解释转换器编码器。对于那些在学习转换器时遇到困难的人来说,可以通读本博客文章,如果你对在NLP领域工作感兴趣,你至少应该了解到转换器,因为大多数行业都在使用这些最先进的模型来完成各种任务。转换器是NLP任务中的最先进模型,超越了传统的RNN和LSTM模型。转换器通过依赖于自我注意力而不是循环来解决了捕捉长期依赖的挑战。它们彻底改变了NLP,并为BERT、GPT-3和T5等架构铺平了道路。 学习目标 在本文中,您将学到: 转换器为什么变得如此受欢迎? 自我注意机制在NLP领域的作用。 如何从自己的输入数据中创建键、查询和值矩阵。 如何使用键、查询和值矩阵计算注意力矩阵。 在机制中应用softmax函数的重要性。 本文是数据科学博客马拉松的一部分。 转换器为什么超越了RNN和LSTM模型? 在使用RNN和LSTM模型时,我们遇到了一个重要障碍,即这些递归模型仍然无法理解长期依赖,并且处理复杂数据时计算负荷越来越大。论文《Attention Is All You Need》提出了一种名为转换器的新设计,以克服传统序列网络的限制,现在它们是许多NLP应用的最先进模型。 在RNN和LSTM中,输入和标记逐个传递,而转换器同时传输完整的序列(并行传输数据)。 转换器模型完全消除了递归过程,完全依赖于注意机制,使用了一种独特的自我注意机制。 转换器由什么组成?它如何工作? 对于许多NLP任务,转换器模型目前是最先进的模型。转换器的引入在NLP领域取得了重大进展,为BERT、GPT-3、T5等先进系统铺平了道路。 让我们通过一个语言翻译任务来了解转换器和自我注意的工作原理。转换器由编码器-解码器架构组成。我们将输入句子(源句子)输入编码器。编码器学习输入句子的表示并将表示发送给解码器。解码器接收编码器学习到的表示作为输入,并生成输出句子(目标句子)。 假设我们想将一个短语从英语翻译成法语。如下图所示,我们需要将英语句子作为编码器的输入。编码器学习给定英语句子的表示并将表示传递给解码器。解码器将编码器的表示作为输入,并生成法语句子作为输出。 一切进行得很好,但是这里到底发生了什么?转换器的编码器和解码器是如何将英语句子(源句子)翻译成法语句子(目标句子)的?编码器和解码器内部到底发生了什么?因此,在本文中,我们只关注编码器网络,因为我们希望保持简洁,先专注于编码器。未来的文章中,我们肯定会涵盖解码器部分。在接下来的几节中,让我们找出答案。 理解转换器的编码器 编码器只是一个神经网络,用于接收输入并将其转换为机器可以理解的不同表示/形式。转换器由N个编码器堆叠而成。一个编码器的输出作为输入传递给它上面的另一个编码器。如下图所示,我们有一个由N个编码器组成的堆叠。每个编码器将其输出发送给上面的编码器。最后一个编码器将给定源句子的表示作为输出返回。我们将源句子作为输入传递给编码器,并获得源句子的表示作为输出:…

Leave a Comment