当前位置: 首页 > 科技观察

使用关系数据库来查询非结构化数据_0

时间:2023-03-20 01:40:33 科技观察

使用关系数据库查询非结构化数据虽然市场上还有其他数据库,例如键值数据库、文档数据库和图形数据库,但关系数据库仍然是最受欢迎的。这样做的主要原因是SQL,即关系数据库语言,对于初学者来说很容易学习,对于专家来说实施起来也很高效。然而,随着我们进入人工智能的新时代,仅存储结构化数据已远远不够。当今世界上80%的数据是非结构化数据,包括原始文本、图像、音频、视频和各种其他文件类型。这种非结构化数据包含大量使用当前关系数据库系统无法检索的关键信息。好消息是,机器学习领域的最新进展使我们能够以前所未有的方式理解非结构化数据,我们可以利用这个机会让这项技术更容易获得。用于非结构化数据的关系数据库本文介绍了Superinsight,这是一种具有内置机器学习功能的关系数据库。Superinsight让任何了解SQL的人都可以对非结构化数据运行查询。Superinsight的核心概念如下:Superinsight建立在PostgreSQL之上,因此具备PostgreSQL的所有功能和机器学习能力。Superinsight自动分析和索引存储在数据类型[TEXT]的列中的任何数据。原始文本数据存储为值,而基于文件的数据(例如图像)存储为对实际位置的引用。安装Superinsight以作为独立机器或作为编排框架(如Kubernetes)的一部分运行。该演示将使用独立版本。Docker是安装Superinsight最方便的方式。在运行此命令之前,请记住更改用户名和密码。dockerrun\--namesuperinsight-db-standalone\-p5432:5432\-eSUPERINSIGHT_USER=admin\-eSUPERINSIGHT_PASSWORD=password\-eENV_IMAGE_TO_LABEL=True\superinsight/superinsight-db-standalone:latest对于这个演示,我们将设置标志ENV_IMAGE_TO_LABEL=True,此选项允许我们根据文本搜索图像。Docker容器运行后,您可以使用PostgreSQL协议和默认数据库Superinsight在端口5432上连接到Superinsight。postgres://admin:password@127.0.0.1:5432/superinsight存储和搜索非结构化数据Superinsight可以使用标准SQL存储结构化和非结构化数据。Superinsight只会分析存储在数据类型[TEXT]的列中的非结构化数据。在以下示例中,我们将使用Flipkart产品数据集。CREATETABLE标准的CREATETABLE语句可用于创建表。由于我们只希望Superinsight将Name、Picture和Description下面的列分析为非结构化数据,因此我们对这些列使用数据类型[TEXT]。此外,每个表都必须有一个主键,这是Superinsight的要求。CREATETABLEmldb.product(_idserialPRIMARYKEY,categoryvarchar(500),brandvarchar(500),nameTEXT,imageTEXT,descriptionTEXT,pricefloat8,urlvarchar(500));插入记录可以使用标准SQLInsert语句插入记录。名称和描述列的值存储在数据库中,但对于图像,我们存储图像URL。Superinsight将根据每个图像URL自动读取图像并为其编制索引。在本例中,我们将向数据库中添加20条记录。SQL脚本可以从这里下载:https://docs.superinsight.ai/setup/dataset/?ref=hackernoon.com#products。原始文本的语义搜索我们将在表和预构建模型之间使用JOIN语句来创建语义搜索查询。关键字ON指示将哪一列用作语义搜索模型的输入。WHERE关键字用于指定要比较的值。最后,我们可以使用predictions.core作为ORDERBY来对最相关的结果进行排序。注意:在我们进行第一次搜索之前,Superinsight必须将最新的语义搜索模型下载到您的数据库中。此过程可能需要一两分钟,具体取决于您的网速。选择predictions.score,mldb.product.image,mldb.product.name,mldb.product.descriptionFROMmldb.productJOINmodel.semantic_searchONmodel.semantic_search.inputs=mldb.product.descriptionWHEREmodel.semantic_search.similar='Somethingtositon'ORDERBYpredictions.scoreDESC我们对'thingstositon'进行语义搜索,得到4个分数大于0.11的沙发床记录。Superinsight与其他关系数据库之间最显着的区别在于,结果由了解数据上下文的机器学习模型评分,从而产生更丰富的搜索结果。图像到图像语义搜索图像搜索就像搜索原始文本。只有WHERE子句值和ON子句条件需要更改。我们将使用图像url作为搜索值,根据图像相似度查找记录。选择predictions.score,mldb.product.image,mldb.product.name,mldb.product.descriptionFROMmldb.productJOINmodel.semantic_searchONmodel.semantic_search.inputs=mldb.product.imageWHEREmodel.semantic_search.similar='http://img5a.flixcart.com/image/short/u/4/a/altht-3p-21-alisha-38-original-imaeh2d5vm5zbtgg.jpeg'ORDERBYpredictions.scoreDESC注意第一张图片的分数是1因为它和我们要找的图片一模一样。我们可以看到下面的五张图片非常相似,所以它们的得分都高于0.87。文本到图像语义搜索我们还可以通过在文本中描述上下文来搜索图像。在下面的示例中,我们正在寻找“女装”图像。SELECTpredictions.score,mldb.product.image,mldb.product.name,mldb.product.descriptionFROMmldb.productJOINmodel.semantic_searchONmodel.semantic_search.inputs=mldb.product.imageWHEREmodel.semantic_search.similar='女装'ORDERBYpredictions.scoreDESCEpilogueSuperinsight使非结构化数据的存储和搜索变得简单。由于Superinsight基于PostgreSQL,任何支持PostgreSQL协议的现有应用软件和数据可视化工具现在都可以使用Superinsight。了解更多关于Superinsight的信息,请点击以下链接:文档:https://docs.superinsight.aiGitHub:https://github.com/superinsight/superinsight-db原标题:使用关系数据库查询非结构化数据,作者:朱立新