介绍 在数据科学快速发展的领域中,向量数据库在实现高维数据的高效存储、检索和操作方面发挥着关键作用。本文探讨了向量数据库的定义和意义,将其与传统数据库进行了比较,并详细介绍了2024年考虑的前15个向量数据库。 什么是向量数据库? 向量数据库的核心设计是高效处理向量化数据。与擅长结构化数据存储的传统数据库不同,向量数据库专注于管理多维空间中的数据点,使其非常适用于人工智能、机器学习和自然语言处理等应用。 向量数据库的目的在于促进向量嵌入、相似搜索和高维数据的高效处理。与可能难以处理非结构化数据的传统数据库不同,向量数据库在数据点之间的关系和相似性至关重要的场景中表现出色。 向量数据库 vs 传统数据库 方面 传统数据库 向量数据库 数据类型 表格格式的简单数据(文字、数字)。 具有专门搜索功能的复杂数据(向量)。 搜索方法 精确匹配数据。 使用近似最近邻(ANN)搜索进行最接近匹配。 搜索技术 标准查询方法。 使用哈希和基于图的搜索等专门方法进行ANN搜索。 处理非结构化数据 由于缺乏预定义格式而具有挑战性。 将非结构化数据转化为数值表示(嵌入)。 表示 基于表格的表示形式。…
Leave a CommentTag: vector
介绍 检索增强生成(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为了使大规模生成性AI应用程序能够良好运行,需要一个能够处理大量数据的良好系统其中一个重要的系统是向量数据库该数据库的特殊之处在于它能够处理多种类型的数据,例如文本、声音、图片和视频,并以一种数字/向量形式存储什么是向量数据库?向量数据库[…]
Leave a Comment随着生成式人工智能和语言模型在理解和提取文件信息方面的巨大增长,我们正在见证一种新时代,即像GPT这样的机器正在帮助人类…
Leave a Comment介绍 大型语言模型(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介绍 几个月前,当我刚开始在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介绍 你是否曾经想过与视频聊天有多么好?作为一个博客作者,我经常觉得看一个长达一小时的视频来获取相关信息很无聊。有时候,看一个视频以获取任何有用的信息感觉像是一份工作。所以,我构建了一个聊天机器人,让你可以与 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