admin管理员组

文章数量:1547183

目录

· 1. 简介
· 2. 矢量数据库 Vs. 其他数据库
· 3. 矢量数据库 Vs. 矢量索引
· 4. 流行的矢量数据库
∘ 4.1. 矢量数据库如何工作?
· 5. 索引技术
· 6. 精确匹配
∘ 6.1. 平面索引
· 7. 近似匹配
∘ 7.1. Annoy近似最近邻 
∘ 7.2. 倒排文件(IVF)索引
∘ 7.3. 随机投影(RP)
∘ 7.4. 乘积量化(PQ)
∘ 7.5. 局部敏感哈希(LSH)
∘ 7.6. 分层可导航小世界(HNSW)
∘ 7.7.基于密度的噪声空间聚类 (DBSCAN)
· 8. 相似性度量:距离度量
∘ 8.1. 如何选择相似性度量
​ · 9. 过滤
· 10. 选择矢量数据库
∘ 10.1. 比较参数
·结论

1. 简介

在之前的博客中,我们已经介绍了如何将原始数据嵌入到向量中。为了重复使用嵌入的信息,我们需要存储嵌入,以便可以按需访问它们。为此,我们使用一种特殊的数据库,称为矢量数据库。

对于使用检索增强生成 (RAG) 的大规模应用程序而言,高效存储和检索嵌入(具有 CRUD 操作、元数据过滤和水平扩展等功能)至关重要。ChromaDB、Pinecone 和 Weaviate 等矢量数据库专门从事此工作,可提供快速检索和相似性搜索。

集成正确的矢量数据库对于最大限度地提高 RAG 性能至关重要。考虑到用例的复杂性,经过深思熟虑的选择可确保无缝存储和检索,从而优化检索增强生成模型的功能。

在这篇博客中,我们将深入研究矢量数据库和索引方法。

2. 矢量数据库与其他数据库

3. 矢量数据库与矢量索引

在科技行业,一种普遍的误解认为矢量数据库只是近似最近邻 (ANN) 搜索算法的包装器。

从本质上讲,向量数据库是非结构化数据的综合解决方案。与这种误解相反,它包含了当今结构化/半结构化数据库管理系统中发现的用户友好功能,包括云原生、多租户和可扩展性。它解决了独立向量索引的局限性,解决了可扩展性挑战、集成复杂性以及缺乏实时更新和内置安全措施的问题。随着我们深入研究本教程,这一点变得显而易见。

另一方面,轻量级 ANN 库(如FAISSScaNN)可用作构建向量索引的工具。这些库旨在加速多维向量的最近邻搜索。虽然适用于生产系统中的小型数据集,但随着数据集的增长,可扩展性成为一项挑战。

4. 流行的矢量数据库

4.1. 矢量数据库如何工作?

我们知道传统数据库是以行和列的形式存储字符串、数字等标量数据,而向量数据库是针对向量进行操作的,因此优化和查询的方式有很大不同。

在传统数据库中,我们通常会查询数据库中的值与查询完全匹配的行。在向量数据库中,我们应用相似度度量来查找与查询最相似的向量。

矢量数据库使用多种算法的组合,这些算法均参与近似最近邻 (ANN) 搜索。这些算法通过各种索引技术优化搜索。

这些算法被组装成一个管道,可以快速准确地检索查询向量的邻居。由于向量数据库提供近似结果,因此我们考虑的主要权衡是准确性和速度。结果越准确,查询速度就越慢。但是,一个好的系统可以提供超快的搜索和近乎完美的准确性。

以下是矢量数据库的常见流程:

  1. 索引:向量数据库使用 PQ、LSH 或 HNSW 等算法对向量进行索引(更多信息见下文)。此步骤将向量映射到可实现更快搜索的数据结构。
  2. 查询:向量数据库将索引查询向量与数据集中的索引向量进行比较,以找到最近的邻居(应用该索引使用的相似度度量)
  3. 后处理:在某些情况下,矢量数据库从数据集中检索最终的最近邻居,并对其进行后处理以返回最终结果。此步骤可以包括使用不同的相似性度量对最近邻居重新排序。

在以下章节中,我们将更详细地讨论每种算法,并解释它们如何有助于提高矢量数据库的整体性能。

5.索引技术

基于树的方法对于低维数据非常有效,并且提供精确的最近邻搜索。然而,由于“维数灾难”,它们的性能在高维空间中通常会下降。它们还需要大量内存,并且对于大型数据集效率较低,从而导致更长的构建时间和更高的延迟。

量化方法

本文标签: 向量最全野望数据库教程