Press "Enter" to skip to content

Tag: vector

2024年必试的前15个矢量数据库

介绍 在数据科学快速发展的领域中,向量数据库在实现高维数据的高效存储、检索和操作方面发挥着关键作用。本文探讨了向量数据库的定义和意义,将其与传统数据库进行了比较,并详细介绍了2024年考虑的前15个向量数据库。 什么是向量数据库? 向量数据库的核心设计是高效处理向量化数据。与擅长结构化数据存储的传统数据库不同,向量数据库专注于管理多维空间中的数据点,使其非常适用于人工智能、机器学习和自然语言处理等应用。 向量数据库的目的在于促进向量嵌入、相似搜索和高维数据的高效处理。与可能难以处理非结构化数据的传统数据库不同,向量数据库在数据点之间的关系和相似性至关重要的场景中表现出色。 向量数据库 vs 传统数据库 方面 传统数据库 向量数据库 数据类型 表格格式的简单数据(文字、数字)。 具有专门搜索功能的复杂数据(向量)。 搜索方法 精确匹配数据。 使用近似最近邻(ANN)搜索进行最接近匹配。 搜索技术 标准查询方法。 使用哈希和基于图的搜索等专门方法进行ANN搜索。 处理非结构化数据 由于缺乏预定义格式而具有挑战性。 将非结构化数据转化为数值表示(嵌入)。 表示 基于表格的表示形式。…

Leave a Comment

使用Langchain构建半结构化数据的RAG管道

介绍 检索增强生成(Retrieval Augmented Generation)已经存在一段时间了。许多工具和应用程序围绕这个概念进行了构建,比如向量存储、检索框架和LLMs,使得处理自定义文档尤其是具有Langchain的半结构化数据变得方便。处理长、密集的文本从未如此轻松而有趣。传统的RAG对于不结构化的文本重型文件(如DOC、PDF等)效果良好。然而,这种方法对于嵌入在PDF中的半结构化数据(如嵌入式表格)效果不佳。 在处理半结构化数据时,通常有两个问题。 传统的提取和文本分割方法无法处理PDF中的表格。它们通常会破坏表格,从而导致信息的丢失。 嵌入表格可能无法转化为精确的语义搜索。 因此,在本文中,我们将使用Langchain构建一个用于处理半结构化数据的检索生成(Retrieval Generation)流水线,以解决这两个半结构化数据的问题。 学习目标 了解结构化、非结构化和半结构化数据之间的区别。 对检索增强生成和Langchain进行简要回顾。 学习如何使用Langchain构建一个用于处理半结构化数据的多向量检索器。 本文作为数据科学博文马拉松的一部分发表。 数据类型 通常有三种类型的数据:结构化数据、半结构化数据和非结构化数据。 结构化数据:结构化数据是标准化的数据,遵循预定义的模式,例如行和列。SQL数据库、电子表格、数据帧等。 非结构化数据:与结构化数据不同,非结构化数据没有数据模型。数据是随机的,例如PDF、文本、图像等。 半结构化数据:它是前两种数据类型的结合。与结构化数据不同,它没有严格的预定义模式。然而,数据仍然基于某些标记保持着分层次的顺序,这与非结构化类型形成了对比。例如CSV、HTML、嵌入式PDF中的表格、XML等。 什么是RAG? RAG代表检索增强生成(Retrieval Augmented Generation)。这是为大型语言模型提供新信息的最简单方法。现在,让我们对RAG进行一个快速介绍。 在典型的RAG流程中,我们有知识来源,如本地文件、网页、数据库等,一个嵌入模型,一个向量数据库和一个LLM。我们从各种来源收集数据,拆分文档,获取文本块的嵌入并将它们存储在向量数据库中。现在,我们将查询的嵌入传递给向量存储,从向量存储中检索文档,最后使用LLM生成答案。 这是传统RAG的工作流程,适用于如文本等不结构化数据。然而,当涉及到半结构化数据时,例如嵌入在PDF中的表格,它通常无法表现良好。在本文中,我们将学习如何处理这些嵌入式表格。…

Leave a Comment

“深入挖掘 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

现代生成式人工智能应用中的矢量数据库的作用

为了使大规模生成性AI应用程序能够良好运行,需要一个能够处理大量数据的良好系统其中一个重要的系统是向量数据库该数据库的特殊之处在于它能够处理多种类型的数据,例如文本、声音、图片和视频,并以一种数字/向量形式存储什么是向量数据库?向量数据库[…]

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

使用Gensim逐步指南Word2Vec

介绍 几个月前,当我刚开始在Office People工作时,我对语言模型,尤其是Word2Vec产生了兴趣。作为一个使用Python的本地用户,我自然而然地专注于Gensim的Word2Vec实现,并在网上寻找论文和教程。我直接应用并复制了来自多个来源的代码片段,就像任何一个优秀的数据科学家所做的那样。我进一步深入,试图理解我的方法出了什么问题,阅读了Stackoverflow的讨论、Gensim的Google Groups和该库的文档。 然而,我一直认为创建Word2Vec模型的最重要的方面之一被忽略了。在我的实验过程中,我发现对句子进行词形还原或查找词组/二元组对结果和模型性能有很大的影响。尽管预处理的影响因数据集和应用而异,但我决定在本文中包含数据准备步骤,并与之配合使用绝妙的spaCy库。 其中一些问题让我很烦恼,所以我决定写一篇自己的文章。我不能保证它是完美的或者是实现Word2Vec的最佳方法,但至少比很多其他文章好。 学习目标 了解词嵌入及其在捕捉语义关系中的作用。 使用流行的库如Gensim或TensorFlow实现Word2Vec模型。 使用Word2Vec嵌入度量词语相似度和计算距离。 探索Word2Vec捕捉到的词语类比和语义关系。 在情感分析和机器翻译等各种NLP任务中应用Word2Vec。 学习微调Word2Vec模型以适应特定任务或领域的技巧。 使用子词信息或预训练的嵌入来处理词汇表外的单词。 了解Word2Vec的限制和权衡,如词义消歧和句子级语义。 深入研究诸如子词嵌入和通过Word2Vec进行模型优化等高级主题。 本文作为Data Science Blogathon的一部分发布。 Word2Vec简介 谷歌的一个研究团队在2013年9月和10月之间发表了两篇关于Word2Vec的论文。研究人员还在论文中发布了他们的C实现。Gensim在第一篇论文发表后不久完成了Python实现。 Word2Vec的基本假设是具有相似上下文的两个词具有相似的含义,因此模型中的向量表示也是相似的。例如,”狗”、”小狗”和”幼犬”经常在相似的上下文中使用,周围的词语也相似,比如”好”、”蓬松”或”可爱”,因此根据Word2Vec,它们具有相似的向量表示。 基于这个假设,Word2Vec可以用于发现数据集中词语之间的关系,计算它们的相似性,或者将这些词语的向量表示作为其他应用(如文本分类或聚类)的输入。 Word2Vec的实现 Word2Vec的思想非常简单。我们假设通过其周围的词语可以推断出一个词的含义。这类似于谚语”告诉我你的朋友,我会告诉你是谁”。下面是Word2Vec的一个实现。…

Leave a Comment

使用Langchain为YouTube视频构建ChatGPT

介绍 你是否曾经想过与视频聊天有多么好?作为一个博客作者,我经常觉得看一个长达一小时的视频来获取相关信息很无聊。有时候,看一个视频以获取任何有用的信息感觉像是一份工作。所以,我构建了一个聊天机器人,让你可以与 YouTube 视频或任何视频进行聊天。这得益于 GPT-3.5-turbo、Langchain、ChromaDB、Whisper 和 Gradio。因此,在本文中,我将介绍如何使用 Langchain 构建一个功能强大的聊天机器人,用于与 YouTube 视频交互。 学习目标 使用 Gradio 构建 Web 界面 使用 Whisper 处理 YouTube 视频并提取文本数据 适当处理和格式化文本 创建文本数据的嵌入 配置…

Leave a Comment

从零开始学习注意力模型

介绍 注意力模型,也称为注意机制,是神经网络中使用的输入处理技术。它们使网络能够分别关注复杂输入的不同方面,直到整个数据集被分类。其目的是将复杂任务分解为小的关注区域,逐步处理。这种方法类似于人类思维如何通过将问题分解为简单任务并逐步解决它们来解决新问题的方式。注意力模型能够更好地适应特定任务,优化其性能,并提高其关注相关信息的能力。 NLP中的注意机制是深度学习在过去十年中最有价值的发展之一。Transformer架构和自然语言处理(NLP)(例如Google的BERT)已经导致了最近的进展。 学习目标 了解深度学习中注意机制的必要性、工作原理及其如何提高模型性能。 了解注意机制的类型和使用示例。 探索应用程序以及使用注意机制的优缺点。 通过按照注意力实现示例来获得实践经验。 本文是Data Science Blogathon的一部分。 何时使用注意力框架? 注意力框架最初是用于增强编码器-解码器型神经机器翻译系统和计算机视觉性能的。传统机器翻译系统依赖于大型数据集和复杂的功能来处理翻译,而注意力机制简化了这一过程。注意力机制不是逐个单词翻译,而是分配固定长度的向量来捕捉输入的总体含义和情感,从而实现更准确的翻译。注意力框架在处理编码器-解码器翻译模型的限制时特别有用。它能够精确对齐和翻译输入短语和句子。 与将整个输入序列编码为单个固定内容向量不同,注意力机制为每个输出生成一个上下文向量,从而实现更高效的翻译。需要注意的是,虽然注意力机制提高了翻译的准确性,但它们可能并不总能达到语言完美。然而,它们能够有效地捕捉原始输入的意图和一般情感。总之,注意力框架是克服传统机器翻译模型的限制,实现更准确和具有上下文感知的翻译的有价值工具。 注意力模型如何运作? 从广义上讲,注意力模型利用一个函数将查询和一组键值对映射为生成输出。这些元素,包括查询、键、值和最终输出,都表示为向量。通过加权求和值来计算输出,权重由一个兼容性函数确定,该函数评估查询和相应键之间的相似性。 在实际应用中,注意力模型使神经网络能够近似于人类使用的视觉注意机制。类似于人类如何处理新场景,该模型强烈关注图像中的特定点,提供“高分辨率”理解,同时以较少的细节感知周围区域,类似于“低分辨率”。随着网络对场景的理解越来越好,它会相应地调整焦点。 使用NumPy和SciPy实现通用注意力机制 在本节中,我们将研究利用Python库NumPy和SciPy实现通用注意力机制的实现。 首先,我们定义一个四个单词序列的单词嵌入。为了简单起见,我们将手动定义单词嵌入,尽管在实践中,它们将由编码器生成。 import numpy as np #…

Leave a Comment