矢量数据库是一种专门用于存储、管理和查询高维矢量(通常称为嵌入)的数据库。在人工智能(AI)和机器学习(ML)领域,这些向量是由深度学习(DL)模型生成的文本、图像、音频和视频等非结构化数据的数字表示。与擅长处理结构化数据和精确匹配的传统数据库不同,向量数据库针对相似性搜索进行了优化,使应用程序能够根据概念或语义的接近程度而不是关键字匹配来查找项目。这一功能是许多现代人工智能驱动功能的基础。
核心概念和功能
矢量数据库的运行原理是矢量搜索,即在数据库中找到与给定查询矢量 "最接近 "的矢量。这种 "最接近 "通常使用余弦相似度或欧氏距离等距离指标来衡量。核心工作流程包括
- 嵌入生成:数据(如文本、图像)通过嵌入模型(如用于文本的BERT或用于图像的嵌入模型)转换为矢量。 Ultralytics YOLO模型)。这些向量可以捕捉到高维空间中数据的语义本质。
- 索引:生成的向量存储在向量数据库中。为了实现快速检索,数据库采用了专门的索引算法,主要是近似近邻(ANN)搜索技术,如 HNSW(层次导航小世界)或 IVF(反转文件索引)。这些索引即使在数十亿矢量中也能实现快速的相似性搜索,以完美的准确性换取显著的速度提升,这对实时推理至关重要。流行的 ANN 库包括FAISS和ScaNN。
- 查询:收到查询(也转换为向量)后,数据库会使用其索引,根据所选的距离度量,高效地查找并返回与查询向量最相似的向量。
矢量数据库与传统数据库
传统数据库(如 SQL 或 NoSQL 数据库)专为结构化或半结构化数据而设计,依赖于使用标准数据库索引方法(如 B 树)进行精确匹配。它们本身不具备处理以向量表示的非结构化数据所需的相似性搜索的能力。
主要区别包括
- 数据类型:传统数据库处理字母数字数据、JSON 等。矢量数据库处理高维数字矢量。
- 查询类型:传统数据库执行精确匹配、范围查询或关键字搜索。向量数据库执行相似性搜索(近邻搜索)。
- 索引:传统数据库使用 B 树或哈希索引等索引。向量数据库使用 ANN 索引。
人工智能和机器学习的应用
矢量数据库是众多人工智能应用的基础:
流行的矢量数据库
有几个开源和商业矢量数据库可供使用,包括
矢量数据库的兴起反映了嵌入和相似性搜索在构建复杂的人工智能应用中日益重要,推动了矢量数据库市场的显著增长。它们是有效利用现代机器学习模型所获取的洞察力的关键基础设施组件。