前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >向量数据库101-非结构化数据入门

向量数据库101-非结构化数据入门

作者头像
大数据杂货铺
发布2024-02-22 14:09:12
1850
发布2024-02-22 14:09:12
举报
文章被收录于专栏:大数据杂货铺大数据杂货铺

1.简介

本博客主要是基于文本的非结构化数据概述。我知道,这听起来不是一个很性感的话题,但在你按下浏览器标签上的 x 按钮之前,先听我们说完。

每天都在产生新的数据,这无疑是全球一体化和全球经济的关键驱动力。从佩戴在手腕上的心率监测器产生传感器数据,到车队的 GPS 位置,再到上传到社交媒体的视频,数据正以指数级增长的速度产生。不断增长的数据量的重要性不可低估; 数据可以帮助更好地为现有客户服务,发现供应链的弱点,确定劳动力效率低下,帮助公司发现和打入新市场,所有这些因素都可以使公司(和你)产生更多的收入。

还不相信吗?国际数据公司(又称 IDC)预测,到2028年,全球数据领域——衡量全球持久存储中创建和存储的新数据总量的指标——将增长到400 Zettabyte (1 Zettabyte = 1021字节)。届时,超过30% 的上述数据将实时生成,而80% 的所有生成的数据将是非结构化数据。

2.结构化/半结构化/非结构化数据定义

那么非结构化数据到底是什么?顾名思义,非结构化数据是指无法以预先定义的格式存储或无法适应现有数据模型的数据。人工生成的数据——图像、视频、音频、文本文件等等——都是非结构化数据的好例子。但也有许多不那么平凡的非结构化数据。蛋白质结构、可执行文件散列、甚至人类可读的代码都是近乎无穷无尽的非结构化数据的例子。

另一方面,结构化数据是指可以以基于表的格式存储的数据,而半结构化数据是指可以存储在单级或多级数组/键值存储中的数据。如果这一切对你来说还没有意义,不要烦恼。请耐心等待,我们将提供一些例子来帮助你更好地理解结构化和非结构化数据化之间的关键区别。

3.结构化数据的一些具体示例

还在吗?非常好——让我们从简要描述结构化/半结构化数据开始。简单来说,传统的结构化数据可以通过关系模型存储。以图书数据库为例:

国际标准书号

年份

书名

作者

0767908171

2003

A Short History of Nearly Everything

Bill Bryson

039516611X

1962

Silent Spring

Rachel Carson

0374332657

1998

Holes

Louis Sachar

...

在上面的示例中,数据库中的每一行表示一本特定的书(按 ISBN 编号索引) ,而列表示相应的信息类别。建立在关系模型之上的数据库支持多个表,每个表都有自己独特的列集。这些表的正式名称是关系表,但我们将它们称为表,以避免将数据库与朋友和家庭成员混淆。关系数据库中最流行和最著名的两个例子是 MySQL (1995年发布)和 PostgreSQL (1996年发布)。

半结构化数据是不符合传统的基于表的模型的结构化数据的子集。相反,半结构化数据通常带有可用于描述和索引数据的键或标记。回到图书数据库的例子,我们可以将其扩展为半结构化的 JSON 格式,如下所示:

代码语言:javascript
复制
{
  ISBN: 0767908171
  Month: February
  Year: 2003
  Name: A Short History of Nearly Everything
  Author: Bill Bryson
  Tags: geology, biology, physics
},
{
  ISBN: 039516611X
  Name: Silent Spring
  Author: Rachel Carson
},
{
  ISBN: 0374332657
  Year: 1998
  Name: Holes
  Author: Louis Sachar
},
...

注意,我们新的 JSON 数据库中的第一个元素现在包含 Months 和 Tags 作为两个额外的信息片段,而不影响后面的两个元素。对于半结构化数据,可以在不增加所有元素的两个额外列的额外开销的情况下完成这项工作,从而提供更大的灵活性。

半结构化数据通常存储在 NoSQL 数据库(宽列存储、对象/文档数据库、键值存储等)中,因为它们的非表性质阻止直接在关系数据库中使用。Cassandra (2008年发布)、 MongoDB (2009年发布)和 Redis (2009年发布)是当今半结构化数据最流行的三种数据库。请注意,这些用于半结构化数据的流行数据库是如何在用于结构化数据的流行数据库发布十多年后才发布的——请记住这一点,我们将在稍后讨论它。

4.范式转变ーー非结构化数据定义

既然我们已经对结构化/半结构化数据有了扎实的理解,那么让我们来讨论一下非结构化数据。与结构化/半结构化数据不同,非结构化数据可以采用任何形式,在磁盘上可以是任意大小的,并且可以需要大不相同的运行时来进行转换和索引。让我们以图像为例: 同一只德国牧羊犬的三个正面连续图像在语义上是相同的。

语义上是一样的吗?这到底是什么意思?让我们更深入一点,解开语义相似性的思想。尽管这三张照片的像素值、分辨率、文件大小等都有很大的不同,但是这三张照片都是同一个德国牧羊犬在同一个环境下拍摄的。想想看——这三张照片的内容相同或接近相同,但是原始像素值明显不同。这对使用 data1的行业和公司提出了新的挑战: 我们如何以类似于结构化/半结构化数据的方式转换、存储和搜索非结构化数据?

在这一点上,你可能想知道: 如果非结构化数据没有固定的大小和格式,我们如何搜索和分析它?答案是: 机器学习(或者更具体地说,深度学习)。在过去的十年里,大数据和深度神经网络的结合从根本上改变了我们处理数据驱动应用程序的方式; 从垃圾邮件检测到真实的文本到视频合成的任务都取得了令人难以置信的进步,某些任务的精确度指标达到了超人的水平。这听起来可能有点吓人(你好,天网) ,但是我们离埃隆 · 马斯克的人工智能统治世界的愿景还有好几十年的路要走。

本质上,这是所有的行业,所有的公司,所有的个人。包括你!

4.1.非结构化数据的例子

非结构化数据可由机器或人类产生,机器产生的非结构化数据例子包括:

·传感器数据: 从传感器收集的数据,如温度传感器、湿度传感器、 GPS 传感器和运动传感器。

·机器日志数据: 由机器、设备或应用程序生成的数据,包括系统日志、应用程序日志和事件日志。

·物联网数据: 从智能设备(如智能恒温器、智能家庭助理和可穿戴设备)收集的数据。

·计算机视觉数据: 这是由计算机视觉技术产生的非结构化数据,例如图像识别、目标检测和视频分析。

·自然语言处理(NLP)数据: 这是由 NLP 技术生成的数据,例如语音识别、语言翻译和情感分析。

·Web 和应用程序数据: Web 服务器、 Web 应用程序和移动应用程序生成的数据,包括用户行为数据、错误日志和应用程序性能数据。

人造非结构化数据的例子包括:

·电子邮件: 电子邮件通常是非结构化的,可以包含自由格式的文本、图像和附件。

·短信: 短信可以是非正式的,非结构化的,并包含缩写或表情符号。

·社交媒体帖子: 社交媒体帖子在结构和内容上可能有所不同,包括文本、图像、视频和标签。

·录音: 人工录音可以包括电话、语音邮件、音频文件和音频非结构化数据。

·手写笔记: 手写笔记可以是非结构化的,包含图纸、图表和其他可视化元素。

·会议记录: 会议记录可以包含非结构化的文本、图表和操作项。

·成绩单: 演讲、采访和会议的成绩单可以包含不同程度准确的非结构化文本。

·用户生成内容: 网站和论坛上的用户生成内容非结构化数据可以包括自由格式的文本、图片和视频文件。

5.嵌入式速成班

让我们回到正轨。绝大多数的神经网络模型都能够将一个单独的非结构化数据转换成一系列浮点值,这些浮点值通常被称为嵌入或嵌入向量。事实证明,经过适当训练的神经网络可以输出表示图像2的语义内容的嵌入。在以后的教程中,我们将介绍一个使用预先确定的算法生成嵌入的矢量数据库用例。

Patrice Bouchard 类 = “ doc-image”id = “ An-east-Towhee.”/> An Eastern Towhee 由 Patrice Bouchard 拍摄。

上面的照片提供了一个将非结构化数据转换成矢量的例子。利用卓越的 ResNet-50卷积神经网络,这张图像可以表示为长度为2048的矢量——这里是前三个和最后三个元素: [0.1392,0.3572,0.1988,... ,0.2888,0.6611,0.2909]。经过适当训练的神经网络生成的嵌入具有数学性质,易于搜索和分析。在这里我们不会深入讨论细节,但是我们知道,一般来说,语义相似对象的嵌入向量在距离上是相近的。因此,搜索和理解非结构化数据归结为向量算法。

嵌入运算

正如导言中提到的,到2028年,非结构化数据将占到所有新创建数据的80% 。随着工业的成熟和非结构化数据加工方法的实施,这一比例将继续增加到80% 以上。这会影响到每个人——你,我,我们工作的公司,我们志愿服务的组织,等等。从2010年开始,新的面向用户的应用程序需要数据库来存储半结构化数据(而不是传统的表格数据) ,同样,这十年也需要专门为索引和搜索大量(exabytes)非结构化数据而建立的数据库。

解决办法?人工智能时代的数据库——矢量数据库。欢迎来到我们的世界; 欢迎来到开源矢量数据库的世界,Milvus。

在大多数教程中,我们将重点关注由神经网络生成的嵌入; 但是,请注意,嵌入也可以通过手工算法生成。

6.非结构化数据处理

兴奋了吗?好极了。但是在我们深入矢量数据库和 Milvus 之前,让我们花一分钟来讨论一下我们如何处理和分析非结构化数据。对于结构化和半结构化数据,在数据库中搜索或筛选项是相当简单的。作为一个简单的示例,可以使用下面的代码片段(使用 pymongo)从特定作者那里查询 MongoDB 的第一本书:

代码语言:javascript
复制
>>> document = collection.find_one({'Author': 'Bill Bryson'})

这种类型的查询方法与传统的关系数据库类似,后者依赖于 SQL 语句来过滤和获取数据。概念是相同的: 用于结构化/半结构化数据的数据库使用数学(例如 < = ,字符串距离)或逻辑(例如 EQUALS,NOT)操作符跨数值和/或字符串执行过滤和查询。对于传统的关系数据库,这被称为关系代数,对于那些不熟悉它的人,请相信我,它比线性代数糟糕得多。你可能已经看到过通过关系代数构建极其复杂的过滤器的例子,但是核心概念仍然是相同的——传统的数据库是确定性系统,它总是返回给定过滤器集合的精确匹配。

与结构化/半结构化数据的数据库不同,向量数据库查询是通过指定输入查询向量来完成的,而不是 SQL 语句或数据过滤器(例如{‘ Author’: ‘ Bill Bryson’})。这个向量是基于嵌入的非结构化数据表示。举个简单的例子,这可以在 Milvus 用下面的代码片段(使用 pymilvus)完成:

代码语言:javascript
复制
>>> results = collection.search(embedding, 'embedding', params, limit=10)

在内部,跨越大量非结构化数据的查询使用一套算法来执行,统称为近似最近邻搜索,简称 ANN 搜索。简而言之,人工神经网络搜索是一种优化形式,它试图找到与给定查询向量“最接近”的点或点集。注意人工神经网络中的“近似”。通过使用聪明的索引方法,向量数据库有一个明确的准确性/性能折衷: 增加搜索运行时间将导致更一致的数据库执行更接近确定性模型,总是返回给定查询值的绝对最近邻。相反,减少查询时间将提高吞吐量,但可能导致捕获更少的查询的真正最接近的值。从这个意义上说,非结构化数据处理是一个概率过程。

近似最近邻搜索,可视化

人工神经网络搜索是矢量数据库的核心组成部分,本身就是一个庞大的研究领域; 因此,我们将在未来的一系列文章中深入研究 Milvus 中提供给您的各种人工神经网络搜索方法。

3矢量数据库可以通过选择特定的索引来确定性。

7.收工

谢谢你做到这一步! 以下是这个教程的关键要点:

·结构化/半结构化数据仅限于数字、字符串或时间数据类型。通过现代机器学习的力量,非结构化数据被表示为数值的高维向量。

·这些向量通常被称为嵌入,非常适合表示非结构化数据的语义内容。另一方面,结构化/半结构化数据在语义上是原样的,即内容本身等价于语义。

·搜索和分析非结构化数据是通过人工神经网络搜索完成的,这个过程本质上是概率的。另一方面,跨结构化/半结构化数据进行查询是确定性的。

·非结构化数据处理与半结构化数据处理截然不同,需要完全转换范式。这自然需要一种新类型的数据库——矢量数据库。

这是本系列介绍的第一部分,对于那些刚接触矢量数据库的人,欢迎来到 Milvus!在下一个教程中,我们将更详细地介绍矢量数据库:

·我们将首先提供 Milvus 矢量数据库的鸟瞰图。

·然后,我们将继续讨论 Milvus 与矢量搜索库(FAISS、 ScanNN、 DiskANN 等)的区别。

·我们还将讨论矢量数据库与矢量搜索插件(用于传统数据库和搜索系统)的区别。

·我们将总结与现代矢量数据库相关的技术挑战。

原文链接:https://zilliz.com/learn/introduction-to-unstructured-data

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.结构化/半结构化/非结构化数据定义
    • 4.1.非结构化数据的例子
    • 5.嵌入式速成班
    • 6.非结构化数据处理
    • 7.收工
    相关产品与服务
    向量数据库
    腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持千亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、自然语言处理等 AI 领域。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档