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

如何使用向量数据库解决复杂问题

时间:2023-03-17 11:51:15 科技观察

如何使用矢量数据库解决复杂问题李睿评论|有行业专家预测,到2025年,80%以上的数据将是非结构化数据。但德勤的一项调查显示,只有18%的企业准备好进行非结构化数据分析。这意味着大多数企业拥有的绝大多数数据都是无法利用的,这凸显了拥有正确工具的重要性。有很多数据相当简单,例如关键字、指标、字符串和结构化对象(如JSON)。这类数据可以通过传统的数据库进行整理,借助很多搜索引擎进行搜索,也可以有效地回答相对简单的问题,例如:哪些文档包含这组词?哪些项目符合这些客观的过滤条件?然而,复杂的数据越难解释也越有趣,通过回答复杂的问题为企业释放更多价值。例如:哪些歌曲与“喜欢”歌曲的样本相似?给定主题有哪些可用文档?哪些安全警报需要注意,哪些可以忽略?哪些项目符合自然语言描述?回答此类问题通常需要自动化程度较低的更复杂、结构化的数据,例如文档、纯文本段落、视频、图像、音频文件、工作流和系统生成的警报。这些形式的数据很难装入传统的SQL式数据库,简单的搜索引擎可能无法发现它们。为了组织和搜索这些类型的数据,需要将数据转换成计算机可以处理的格式。矢量的力量在于机器学习模型允许创建文本、音频、图像和其他形式的复杂数据的数字表示。这些数字表示或向量嵌入旨在将语义相似的项目映射到附近的表示。当被视为高维空间中的点时,这两种表示会根据它们之间的角度或距离而相距更远。机器学习模型使人类与机器交互的方式更类似于人类彼此交互的方式。对于文本,这意味着用户可以查询自然语言问题-使用将所有搜索词转换为向量的相同嵌入模型将查询转换为向量。然后将查询向量与所有对象向量进行比较,以找到最接近的匹配项。同样,图像或音频文件可以转换为矢量,使人们能够根据矢量的接近度(或数学相似性)搜索匹配项。与几年前相比,今天将数据转换为矢量要容易得多,这要归功于许多可用的矢量转换器模型。这些模型表现良好并且通常按原样工作。Word2Vec、GLoVE和BERT等句子和文本转换器模型是出色的通用向量嵌入,而图像可以使用VGG和Inception等模型嵌入。可以使用音频-视频表示中的图像嵌入将录音转换为矢量。这些模型已经很成熟,可以针对特定的应用程序和知识领域进行微调。有了现成的矢量转换器模型,问题就从如何将复杂数据转换为矢量转变为如何组织和搜索它们。首先,进入矢量数据库。矢量数据库专门设计用于处理矢量嵌入的独特特征。他们索引数据的方式使得根据数值搜索和检索对象变得容易。什么是矢量数据库?矢量数据库可以定义为一种索引和存储矢量嵌入的工具,用于快速检索和相似性搜索,具有元数据过滤和水平缩放等功能。矢量嵌入或上述矢量指的是数据对象的数字表示。矢量数据库对矢量进行组织,以便可以将它们快速相互比较或与搜索查询的矢量表示进行比较。矢量数据库专为非结构化数据而设计,但它也具有传统关系数据库所需的一些特性。他们可以对存储的向量执行CRUD操作(创建、读取、更新和删除),提供数据持久性,并按元数据过滤查询。当您将矢量搜索与数据库操作结合起来时,您将获得一个可用于各种应用程序的强大工具。虽然该技术仍处于起步阶段,但矢量数据库已经为世界上一些最大的技术平台提供支持。例如,Spotify根据人们喜欢的歌曲、收听历史和类似的音乐资料提供个性化的音乐推荐;亚马逊使用矢量来推荐产品,以补充客户正在浏览的商品;与过去历史的相似性提供相关的新内容,让观众留在平台上观看。矢量数据库技术的不断完善也给人们带来了更好的性能和更加个性化的用户体验。今天,任何企业都可以实施矢量数据库。开源项目可以帮助想要构建和维护自己的矢量数据库的组织,而托管服务可以帮助想要外包这项工作并专注于其他地方的企业。本文讨论矢量数据库的重要特性以及如何最好地使用它们。矢量数据库的常见应用相似性搜索或“矢量搜索”是矢量数据库最常见的用例。矢量搜索比较索引中多个矢量与搜索查询或主题项的接近程度。要找到相似的匹配项,可以使用用于创建向量嵌入的相同机器学习嵌入模型将主题项或查询转换为向量。矢量数据库比较这些矢量的接近度以找到最接近的匹配项并提供相关的搜索结果。矢量数据库应用程序的一些示例包括:语义搜索。搜索文本和文档时通常有两种选择:词法搜索或语义搜索。词法搜索查找单词字符串、确切单词或部分单词的出现。另一方面,语义搜索使用搜索查询的含义将其与候选对象进行比较。自然语言处理(NLP)模型将文本和整个文档转换为向量嵌入,这些模型试图表示单词的上下文及其传达的含义。然后,用户可以使用自然语言和相同模型进行查询,从而在不知道特定关键字的情况下找到相关结果。对音频、视频、图像和其他类型的非结构化数据执行相似性搜索。这些数据类型很难用与传统数据库兼容的结构化数据很好地描述。最终用户可能很难知道数据是如何组织的,或者哪些属性可以帮助他们识别项目。用户可以查询具有相似对象和相同机器学习模型的数据库,以便更轻松地比较和找到相似的匹配项。重复数据删除和记录匹配。考虑一个从目录中删除重复项目的应用程序,使目录更有用和相关。如果重复组织相似并注册为匹配项,传统数据库可以做到这一点,但情况并非总是如此。矢量数据库允许人们使用机器学习模型来确定相似性,这通常可以避免不准确的或手动的分类工作。推荐和排名引擎。类似的项目通常会提供很好的建议。例如,消费者经常发现查看相似或推荐产品、内容或服务的比较很有用,这可以帮助消费者找到他们不会发现或考虑的新产品。异常检测。矢量数据库可以找到与所有其他对象截然不同的异常值。一个人可能有上百万种不同但符合预期的模式,而异常情况可能不同于这百万种预期模式中的任何一种。此类异常对于IT运营、安全威胁评估和欺诈检测很有价值。向量数据库的主要功能(1)向量索引和相似性搜索向量数据库使用专门设计的算法来高效地对向量进行索引和检索。他们使用“最近邻”算法来评估相似对象彼此之间或与搜索查询的接近程度。查询向量与其他100个向量之间的距离可以很容易地计算出来,但计算1亿个向量的距离是另一回事。近似最近邻(ANN)搜索通过近似和检索相似向量的最佳猜测来解决延迟问题。ApproximateNearestNeighbors(ANN)不能保证一组精确的最佳匹配,但它在高精度和更快的性能之间取得了平衡。构建近似最近邻(ANN)索引的一些最常用技术包括分层导航小世界(HNSW)、乘积量化(PQ)和倒排文件索引(IVF)。大多数矢量数据库使用这些的组合来生成针对性能优化的复合索引。(2)单级过滤过滤是一种基于选定元数据限制搜索结果以增加相关性的有用技术,通常在最近邻搜索之前或之后进行。预过滤首先在近似最近邻(ANN)搜索之前缩小数据集,但这通常与领先的近似最近邻(ANN)算法不兼容。一种解决方法是先缩小数据集,然后执行蛮力精确搜索。在对整个数据集执行近似最近邻(ANN)搜索后,后过滤会缩小结果范围。然后过滤利用近似最近邻(ANN)算法的速度,但可能不会返回足够的结果。一个例子是这样一种情况,过滤器只选择了少数不太可能从整个数据集的搜索中返回的候选者。单级过滤结合了预过滤的准确性和相关性以及近似最近邻(ANN)的速度,几乎与后过滤一样快。单级过滤通过将矢量和元数据索引组合成一个索引来提供两全其美的方法。(3)API与许多托管服务一样,应用程序通常通过API与矢量数据库进行交互。这使企业可以专注于他们的应用程序,而不必担心管理自己的矢量数据库所带来的性能、安全性和可用性方面的挑战。API调用使开发人员和应用程序可以轻松上传、查询、获取结果或删除数据。(4)混合存储矢量数据库通常将所有矢量数据存储在内存中,以便快速查询和检索。但是对于具有超过十亿个搜索词的应用程序,单是内存成本就会阻碍许多矢量数据库项目。企业可以选择将向量存储在磁盘上,但这通常是以更糟糕的搜索延迟为代价的。使用混合存储,压缩向量索引存储在内存中,完整向量索引存储在磁盘中。内存索引可以将搜索空间减少到磁盘上全分辨率索引内的一小组候选对象。混合存储允许企业在相同的数据足迹中存储更多的向量,通过增加整体存储容量来降低运行向量数据库的成本,而不会对数据库性能产生负面影响。(5)对复杂数据的洞察随着数据形式的不断发展和复杂数据的快速增长,目前大多数企业还不具备对其进行分析的能力。大多数企业已经使用的传统数据库不适合处理此类数据,因此越来越需要新的方法来组织、存储和分析非结构化数据。解决复杂问题需要搜索和分析复杂数据的能力,而矢量数据库无疑是充分挖掘这些复杂数据并获得洞察力的关键工具。原标题:Solvingcomplexproblemswithvectordatabases,作者:DaveBergstein