认识向量数据库
向量数据库与 AI 应用
传统数据库中,以行和列的形式存储数字、字符串等标量数据。相较于传统数据库,向量数据库则更擅长处理非结构化数据,比如:文本、图像和音频。而在机器学习中,数据通常是以向量形式存储的。因此,向量数据库和 AI 大模型之间的紧密结合,共同推动了 AI 应用的开发与落地。
向量类型和向量嵌入
向量是同时具有方向和大小的量,其在数学上表示为多维空间中的坐标,比如 N 维空间中的向量就是一个具有 N 个维度的坐标。向量的大小(也称为长度或模)通过公式 计算获得。向量的方向可以通过与其他向量的夹角来描述。两个向量 和 的夹角余弦值(即余弦相似度)计算公式为:,其中 表示向量的点积, 和 分别表示向量的模。
向量嵌入(Vector Embeddings)是一种数据向量化的手段,指的是使用机器学习技术将各类非结构化数据(文本、图像和音频等)转化为固定长度的数字向量的过程,被广泛应用于多模态非结构化数据检索任务中。
通过将原始数据嵌入编码到同一个空间中,使之具有等长同类型的向量标签,并且数据之间的语义相似度可以通过向量之间的相似度计算进行度量。比如:通过表征训练可以让具有相同含义的单词,句子,片段,甚至是文档,图片等实体具有更高相似度的嵌入向量;反之,具有不同语义的实体的嵌入向量相似度较低。
相似性搜索
在传统数据库中,数据的查询操作是从数据库中找到与查询条件精确匹配的行。而在向量数据库中,向量检索通过对比向量之间特征的相似性,查找最相似的匹配,也就是向量的相似性搜索(Similarity Search)。
在介绍向量的相似性搜索之前,我们需要先了解特征和向量的关系。
通常情况下,我们通过区分各物体的不同的特征来判断物体的种类。为了量化判断的过程,假设我们将每种特征指标看作一个数轴,那么由两种特征维度构成的平面直角坐标系中,每个参与比较的物体都根据其在两个维度上的符合情况而位于平面内的一点。这个点的横纵坐标值分别代表了其对两个特征的吻合程度。对于越复杂的物体,在区分它们时所需要的特征维度也越多。
根据前面的例子我们不难推断出,在坐标系中越接近的两个点,其具有的特征越相似,代表两个物品的相似度越高。把数据的特征用向量来表示,向量数组的每个元素代表一个特征维度,这样就能够通过计算向量之间的距离来判断它们的相似度,这就是相似性搜索。
KNN 和 ANN
K 最近邻(K-Nearest Neighbor, KNN)算法和近似最近邻(Approximate Nearest Neighbor, ANN)算法是向量检索中常用的两种技术。
KNN 优先考虑准确性,细致地识别“K”个最近邻居。ANN 注重速度和效率,查找近似查询点的最近邻居,无法保证得到一组精确的最佳匹配;但 ANN 能够在高准确性和更快性能之间取得平衡。
检索增强生成
大语言模型(Large Language Model, LLM)是经过大量文本数据训练得到的 AI 模型。
RAG(Retrieval Augmented Generation)即检索增强生成。作为一种 AI 框架,它能够将向量检索的优势与 LLM 的功能结合在一起——将从知识库(比如向量数据库)中检索到的信息作为提示输入到大语言模型,以此来优化大语言模型的生成结果,使得大语言模型在生成更精确、更贴合上下文答案的同时,有效减少产生误导性信息的可能。