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