麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
620
2023-04-17
使用关系数据库来查询非结构化数据
译文 | 布加迪
审校 | 孙淑娟
在过去的50年里,关系数据库一直是世界上一些最关键的应用软件的基础。虽然市面上还有其他数据库,比如键值数据库、文档数据库和图形数据库,但关系数据库依然是最受欢迎的。其主要原因是,SQL或关系数据库语言对初学者来说学习起来很容易,对专家来说实施起来很高效。
然而随着我们进入人工智能新时代,存储结构化数据已经不够了。如今世界上80%的数据是非结构化数据,包括原始文本、图片、音频、视频及其他各种文件类型。这些非结构化数据含有大量关键信息,我们无法使用当前的关系数据库系统来检索这些信息。好消息是,机器学习领域的最新进展使我们能够以前所未有的方式来理解非结构化数据,我们可以利用这个机会使这项技术变得更普及。
面向非结构化数据的关系数据库
本文将介绍Superinsight,这是一种拥有内置机器学习功能的关系数据库。Superinsight让了解SQL的任何人都可以针对非结构化数据运行查询。
Superinsight的核心概念如下:
Superinsight建立在***之上,因此它拥有***的所有功能和机器学习能力。Superinsight可自动分析和索引存储在数据类型为[TEXT]的列中的任何数据。原始文本数据作为值来存储,而基于文件的数据(比如图片)作为实际位置的引用来存储。
安装
Superinsight可以作为独立机器来运行,也可以作为Kubernetes之类的编排框架的一部分来运行。本演示将使用独立版本。
Docker是安装Superinsight的最方便方式。运行该命令前,记得修改用户名和密码。
docker run \--name superinsight-db-standalone \-p 5432:5432 \-e SUPERINSIGHT_USER=admin \-e SUPERINSIGHT_PASSWORD=password \-e ENV_IMAGE_TO_LABEL=True \superinsight/superinsight-db-standalone:latest
为了本文这个演示,我们将设置标志ENV_IMAGE_TO_LABEL=True,这个选项让我们可以基于文本搜索图片。
连接
一旦Docker容器开始运行,您就可以使用***协议和默认数据库Superinsight通过端口5432连接到Superinsight。
postgres://admin:password@127.0.0.1:5432/superinsight
存储和搜索非结构化数据
Superinsight可以使用标准SQL来存储结构化数据和非结构化数据。Superinsight将只分析存储在数据类型为[TEXT]的列中的非结构化数据。在下面例子中,我们将使用Flipkart产品数据集。
创建表
标准的CREATE TABLE语句可用于创建表。由于我们只希望Superinsight分析名称、图片和描述下面的几列,作为非结构化数据进行分析,于是我们为这些列使用数据类型[TEXT]。此外,每个表都必须有一个主键,这是Superinsight的要求。
CREATE TABLE mldb.product ( _id serial PRIMARY KEY, category varchar(500), brand varchar(500), name TEXT, image TEXT, description TEXT, price float8, url varchar(500));
插入记录
原始文本的语义搜索
我们将在表和预构建模型之间使用JOIN语句创建语义搜索查询。关键字ON表明使用哪一列作为语义搜索模型的输入。WHERE关键字用于指定要比较的值。最后,我们可以使用predictions.core作为ORDER BY,对最相关的结果进行排序。
注意:在我们第一次搜索之前,Superinsight必须将最新的语义搜索模型下载到您的数据库中。这个过程可能需要一两分钟,快慢取决于网速。
SELECT predictions.score, mldb.product.image, mldb.product.name, mldb.product.descriptionFROM mldb.productJOIN model.semantic_searchON model.semantic_search.inputs = mldb.product.descriptionWHERE model.semantic_search.similar = 'Something to sit on'ORDER BY predictions.score DESC
我们对“可以坐的东西”进行语义搜索,得到四个得分大于0.11的沙发床记录。Superinsight与其他关系数据库之间最显著的区别是,结果由理解数据上下文的机器学习模型来评分,从而获得丰富得多的搜索结果。
图片到图片的语义搜索
图片搜索就像搜索原始文本一样。只需要更改WHERE子句值和ON子句条件。我们将使用图片url作为搜索值,基于图片相似度查找记录。
注意,第一张图片的得分是1,因为它与我们要找的图片一模一样。我们可以看到下面五张图片非常相似,所以它们的得分都高于0.87。
文本到图片的语义搜索
我们还可以通过用文本描述图片的上下文来搜索图片。在下面例子中,我们寻找“女性服装”图片。
SELECT predictions.score, mldb.product.image, mldb.product.name, mldb.product.descriptionFROM mldb.productJOIN model.semantic_searchON model.semantic_search.inputs = mldb.product.imageWHERE model.semantic_search.similar = 'woman dress'ORDER BY predictions.score DESC
结语
原文标题:Using a Relational Database to Query Unstructured Data,作者:Nelson Chu
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。