矢量嵌入黑白结构化数据的矢量化表现,由于它们以语义相似性由 n 维矢量空间中的距离表现的方式映射内容。这使得搜索相似性、在知识库中查找相干内容或检索与复杂的用户天生的查询最匹配的项目变得轻易。
固然一些专用数据库仅支持矢量嵌入,但其他数据库除了矢量嵌入之外还支持许多其他数据和查询类型。对各种数据类型和查询类型的支持对于在丰富的真实数据之上构建天生式
AI 应用程序至关告急。随着使用矢量嵌入的语义查询的好处变得显而易见,大多数数据库将添加矢量支持。
矢量嵌入不但仅是数值翻译;它们封装了原始数据更深层的语义本质和上下文的渺小差别。这使得它们成为一系列人工智能应用的名贵资产——从自然语言处理(NLP) 到情绪分析到文天职类。
查询矢量数据库与查询传统数据库差别。矢量数据库不是在类似矢量之间探求精确匹配,而是使用相似性搜索来辨认多维空间内与给定查询矢量非常接近的矢量。这种方法不但更符合数据的固有性质,而且提供了传统搜索无法比拟的速度和效率。
与其他数据类型一样,高效查询大量矢量须要索引,而且矢量数据库支持矢量的专用索引。与具有单一逻辑顺序的许多其他数据类型(如文本或数字)差别,矢量不具有与现实用例相对应的自然顺序。相反,最常见的用例是查询在点积、余弦相似度或欧几里得距离等距离度量方面最接近其他某个矢量的 k 个矢量。
这种查询称为“k(精确)近来邻”或“KNN”查询。
但没有有效的 KNN 查询的通用算法——为了保证找到给定矢量 q 的 k 个近来邻,须要盘算 q 与每个其他矢量之间的距离。然而,有一些有效的算法可以找到 k 个 近似近来邻(“ANN”)。这些 ANN 算法牺牲了一些准确性(特殊是 召回率,该算法可能会忽略一些现实的近来邻居)以大幅进步速度。由于许多用例已经将盘算矢量嵌入的过程视为有些不精确,因此它们通常可以容忍一些召回丧失,以换取性能的大幅进步。
为了使 ANN 能够根据与其他矢量的距离来查询矢量,矢量索引的结构方式是将附近矢量的簇通常分组在一起。
常见的矢量索引类型可以构造为一组列表,其中每个列表代表给定簇中的矢量;每个矢量都毗连到其近来邻的几个矢量的图;树的分支对应于父节点簇的子集;和更多。
每种索引类型都在查找速度、召回率、内存斲丧、索引创建时间和其他因素之间进行权衡。