解读向量数据库

不论是RAG,还是Agent , 几乎每个LLM 驱动的应用程序都可能会用到向量数据库 。那么 , 向量数据库是什么?与传统数据库有何不同? 又如何选择向量数据库呢? 本文是老码农关于向量数据库的学习笔记 。
1. 什么是向量数据库?首先,我们需要理解什么是向量?
向量是基于不同特征或属性来描述对象的数据表示 。每个向量代表一个单独的数据点,例如一个词或一张图片,由描述其许多特性的值的集合组成 。这些变量有时被称为“特征”或“维度” 。例如,一张图片可以表示为像素值的向量,整个句子也可以表示为单词嵌入的向量 。
一些常用的数据向量如下:

  • 图像向量,通过深度学习模型提取的图像特征向量,这些特征向量捕捉了图像的重要信息,如颜色、形状、纹理等 , 可以用于图像识别、检索等任务;
  • 文本向量,通过词嵌入技术如word2Vec、BERT等生成的文本特征向量,这些向量包含了文本的语义信息,可以用于文本分类、情感分析等任务;
  • 语音向量,通过声学模型从声音信号中提取的特征向量,这些向量捕捉了声音的重要特性,如音调、节奏、音色等,可以用于语音识别、声纹识别等任务 。
向量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示 。每个向量都有一定数量的维度,根据数据的复杂性和粒度,维度可以从几十到几千不等 。向量通常是通过对原始数据(如文本、图像、音频、视频等)应用某种变换或嵌入函数来生成的 。嵌入函数可以基于各种方法,例如机器学习模型、单词嵌入、特征提取算法 。向量数据库采用索引策略来简化向量相似的特定查询 。这在机器学习应用程序中特别有用,因为相似性搜索经常用于发现可比较的数据点或生成建议 。
解读向量数据库

文章插图
图片
向量数据库的主要功能包括:
  • 管理:向量数据库以原始数据形式处理数据,能够有效地组织和管理数据,便于AI模型应用 。
  • 存储:能够存储向量数据,包括各种AI模型需要使用到的高维数据 。
  • 检索:向量数据库特别擅长高效地检索数据,这一个特点能够确保AI模型在需要的时候快速获得所需的数据 。这也是向量数据库能够在一些推荐系统或者检索系统中得到应用的重要原因 。
向量数据库的主要优点是,它允许基于数据的向量距离或相似性进行快速准确的相似性搜索和检索 。这意味着,可以使用向量数据库,根据其语义或上下文含义查找最相似或最相关的数据,而不是使用基于精确匹配或预定义标准查询数据库的传统方法 。向量数据库可以搜索非结构化数据,但也可以处理半结构化甚至结构化数据 。例如,可以使用向量数据库执行以下操作,根据视觉内容和风格查找与给定图像相似的图像 , 根据主题和情感查找与给定文档相似的文档,以及根据功能和评级查找与给定产品相似的产品 。
2. 向量数据库的工作机理向量数据库的构建是为了适应向量嵌入的特定结构 , 并且它们使用索引算法根据向量与查询向量的相似性来有效地搜索和检索向量 。
向量数据库的工作原理可以通过CPU和GPU的工作原理进行类比 。CPU和GPU分别是计算机的运算和图形处理核心,而向量数据库则是大模型的记忆和存储核心 。在大模型学习阶段,向量数据库接收多模态数据进行向量化表示,让大模型在训练时能够更高效地调用和处理数据 。通过多线程机制和矩阵运算,GPU提供了强大的计算能力,让大模型的训练变得更加快速和高效 。
区别于传统数据库 , 向量数据库主要有三点不同:数据向量化,向量检索和相似度计算 。数据的向量化采用embedding 技术, 嵌入作为一个桥梁 , 将非数字数据转换为机器学习模型可以使用的形式,使它们能够更有效地识别数据中的模式和关系 。一般的 , 文本是一维向量,图像是二维矩阵,视频相当于三维矩阵 。这些嵌入实质上是存储数据的上下文表示的数字列表(即向量) 。在存储层内 , 数据库以m个向量堆栈的形式存储,每个向量使用n个维度表示一个数据点,总大小为m×n 。为了查询性能的原因 , 这些堆栈通常通过分片进行划分 。


推荐阅读