AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


分布式文件数据库VS向量数据库的应用场景的区别
发布日期:2024-07-14 00:56:08 浏览次数: 2296 来源:ruby的数据漫谈


摘要:随着人工智能技术的不断进步,数据存储和检索领域出现了多种创新的解决方案。在湖仓一体架构中,分布式文件数据库和向量数据库因其独特的特点而适用于不同的应用场景。在文本检索的时候有分布式文件数据库和向量数据库,都可以文本检索,那么具体本质上有什么区别了?本文将深入探讨这两种数据库各自的应用领域,以期为读者提供更为清晰的理解。

  • 分布式文件数据库的应用场景‍‍
  • 向量数据库的应用场景
  • 向量数据库在AIGC中的重要作用‍‍‍‍‍‍‍



01

分布式文件数据库的应用场景‍‍


分布式文件数据库,例如Elasticsearch(简称ES),是一种特殊的分布式存储系统,它主要设计用来存储大量的非结构化数据,并且提供高效的搜索功能。以下是ES的存储原理和主要应用场景的概述:


 存储原理

1. 分布式架构:ES将数据分布存储在多个节点上,通过计算机集群结构实现高可用性和容错性 。

2. 数据分片:文件或数据被分成多个数据块(Shards),这些数据块会被分布在不同的节点上,以实现负载均衡和数据冗余 。

3. 副本机制:每个数据块都有多个副本,存储在不同的节点上,以保证数据的安全性和高可用性 。

4. 数据索引:ES为每个字段建立索引,使得数据可以快速被搜索和检索 。

5. 数据分配策略:ES采用基于哈希的数据分发策略,确保数据在节点之间均匀分布 。


主要应用场景

1. 搜索引擎:ES作为一个强大的搜索引擎,适用于实现站内搜索、系统搜索等,能够处理海量数据的全文检索和结构化检索 。

2. 大数据分析:ES能够对海量数据进行近实时的处理和分析,适用于需要快速数据分析的业务场景 。

3. 日志分析:由于其高效的搜索和分析能力,ES常用于日志数据的存储和分析,帮助进行问题诊断和性能监控。

4. 内容管理系统:ES可以用来存储和管理网站内容,提供快速的内容检索功能 。


总的来说,分布式文件数据库如ES以其高可扩展性、高可用性、以及强大的搜索和分析能力,在处理大规模非结构化数据的场景中发挥着重要作用。

ES 本质上是用json的数据格式在存储一个大文本的,它存储之后,使用精准匹配的方式来搜索匹配的,例如需要搜索一段文字里面包含“小狗”文字,它就可以搜索包含“小狗”的文字,但是普拉多,泰迪狗,这种文字,es是检索不到,因为es的本质是精准匹配,而向量数据库可以匹配到。



02

向量数据库的应用场景


向量数据库是一种专门为处理和存储向量数据而设计的数据库系统。它使用专门的算法和数据结构来支持相似性搜索,通常用于机器学习或数据挖掘领域,侧重于性能、可扩展性和灵活性 。

技术原理

向量数据库采用嵌入向量(embedding vector)技术,对非结构化数据进行特征抽象。这些嵌入向量是浮点数或二进制数的数组,即N维特征向量空间中的向量。数据库能够将向量存储为高维点并快速查找N维空间中的最近邻,通常由近似最近邻搜索(ANN)提供支持,并使用分层可导航小世界(HNSW)和倒排文件索引(IVF)等算法构建。

而目前在aigc的应用场景中也需要用到向量数据库,在大模型进行输出内容前,先检索一段复合内容要求的内容给到大模型,在这个检索的场景中,就需要使用到向量数据库,而向量数据库在存储非机构化数据的时候,可以存储一段向量特征以及原始数据,也或者说存储非机构化数据的元数据,通过向量特征匹配快速检索相关的内容,从而返回相似内容。那么目前非结构化数据的向量话,例如文本,图片,声音等向量化Vector Embedding 是由 AI 模型(例如大型语言模型 LLM)生成的,它会根据不同的算法生成高维度的向量数据,代表着数据的不同特征,这些特征代表了数据的不同维度。例如,对于文本,这些特征可能包括词汇、语法、语义、情感、情绪、主题、上下文等。对于音频,这些特征可能包括音调、节奏、音高、音色、音量、语音、音乐等。

例如对于目前来说,文本向量可以通过 OpenAI 的 text-embedding-ada-002 模型生成,图像向量可以通过 clip-vit-base-patch32 模型生成,而音频向量可以通过 wav2vec2-base-960h 模型生成。这些向量都是通过 AI 模型生成的,所以它们都是具有语义信息的。

基于向量化生的向量数据存储到向量数据库,则在检索的时候就可以检索到相关的内容。

向量数据库存储的方式为如下图所示:

向量化存储的文本内容或者图片内容存在内容理解,并且通过不同维度特征向量画,当我们输入一段文字,需要搜索相关的内容的时候,例如我们检索“小狗” 在搜索前,首先将这段内容向量化,然后去向量数据库里面搜索相关的内容,因为向量数据库里面的向量是已经语法理解后,搜索相关的内容除了包含小狗的内容,“柯基”、“金毛”等结果也会搜索出来。

下图是向量化搜索的流程:

因此,向量数据库的主要应用场景是:

1.数据存储:向量数据库将非结构化数据,如文本、图像、音频等,转换为向量形式进行存储。每个向量代表一个数据对象,由一组有序数构成,用于表示该对象的多重属性。向量的维度数取决于数据对象的特征数,例如,一张图片可以表示为一个由像素值组成的向量,而一段文本可以表示为一个由词频组成的向量。

2.向量索引:为了加速查询速度,向量数据库使用向量索引来存储向量数据。这种索引方式可以将高维度的向量数据转化为低维度的索引数据,并存储在数据库中。通过多级索引结构将向量空间划分为多个超平面,实现对大规模高维向量数据的迅速定位和访问。

3.相似度计算:向量数据库的查询操作主要是基于相似度计算。当用户输入一个查询向量时,向量数据库会计算该向量与数据库中所有向量的相似度,并返回相似度最高的前几个向量作为查询结果。

4.查询优化:为了提高查询效率,向量数据库采用了一系列查询优化技术,例如基于向量索引的查询优化、基于近似相似度计算的查询优化等。



02

向量数据库在AIGC的重要作用


目前gpt的输入的内容,即tocken的长度是有限制的,GPT-3.5/4的问世无疑是震撼人心的,但随之而来的自然缺陷和限制也给开发者和用户带来了不小的挑战。特别是GPT-3.5-turbo模型在输入端上下文(tokens)的限制,仅能处理大约3000字,这限制了其处理长文本的能力。

有人可能会认为,既然ChatGPT具备对话记忆功能,那么即使有输入限制,也可以通过分批输入来实现对话的连续性。然而,这种理解并不准确。GPT作为大型语言模型(LLM),本身并不具备记忆功能。所谓的记忆,实际上是开发者将对话历史存储在内存或数据库中。当用户发送消息时,系统会将最近的对话记录(不超过4096 tokens)通过提示(prompt)整合后发送给模型。这意味着,一旦对话历史超过这个限制,模型就会丢失之前的对话内容,这在处理复杂任务时是一个难以克服的缺陷。而向量数据库可以解决这个问题,如下图所示:

上图中,第一个图是无向量数据库的情况下,直接扔给大模型一个很长的文本内容,超出了tocken的限制,则会报错,而第二个图是将超大文档向量化切分成不同的块存储到向量数据库,和原文分块内容,这样用户输入的时候,首先检索向量数据库,获取到原始文字块输入到大模型,就不会有tocken的限制了。我们将用户的搜索内容转换成向量,然后在数据库中搜索最相似的向量,匹配最相似的几个上下文,最后将上下文返回给 GPT。这样不仅可以大大减少 GPT 的计算量,从而提高响应速度,更重要的是降低成本,并绕过 GPT 的 tokens 限制。另外因为是语义理解后的内容向量化,也不会存在漏检索结果的问题,因此在AIGC的应用场景下用到的是向量数据库,而非是es这种分布式文件数据库。说到底ES还是字符串的匹配原理。没有语言理解的过程。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询