向量数据库的介绍与用途!
向量数据库的介绍与用途!
月伴飞鱼词向量
一个字、一个词、一句话、一篇文本、甚至一张图片可以用这样一个 多维坐标数据。
亦或者说 向量 记录对应的特征,而将文本转换为记录特征的向量就可以被称为词向量。
向量数据库概念与用途
向量数据库就是一种专门用于存储和处理向量数据的数据库系统,传统的关系型数据库通常不擅长处理向量数据。
因为它们需要将数据映射为结构化的表格形式,而向量数据的维度较高、结构复杂,导致传统数据库存储和查询效率低下。
所以向量数据库应运而生。
在 RAG 中,我们将对应的知识文档按照特定的规则拆分成合适的大小,再转换成向量存储到向量数据库中。
当人类提问时,将人类提问 query 转换成向量并进行搜索,找到在特征上更接近的文本块。
这些文本块就可以看成和 query 具有强关联或者说有因果关系。
这样就可以将这些 文本块 作为这次提问的额外补充知识,让 LLM 基于补充知识+提问生成对应的内容,从而实现知识库问答。
向量数据库存储
向量数据库将数据以列形式存储,即每个列都有一个独立的存储空间,这使得向量数据库可以更加灵活地处理复杂的数据结构。
向量数据库还可以进行列压缩(稀疏矩阵),以减少存储空间和提高数据的访问速度。
并且在向量数据库中,将数据表示为高维向量,其中每个向量对应于数据点。
- 这些向量之间的距离表示它们之间的相似性。
这种方式使得非结构化或半结构化数据的存储和检索变得更加高效。
以电影数据库为例,我们可以将每部电影表示为一个特征向量。
假设我们使用四个特征来描述每部电影:动作、冒险、爱情、科幻。
每个特征都可以在0到1的范围内进行标准化,表示该电影在该特征上的强度。
例如,电影阿凡达的向量表示可以是 [0.9, 0.8, 0.2, 0.9],其中数字分别表示动作、冒险、爱情、科幻的特征强度。
其他电影也可以用类似的方式表示。
如果我们想要查找与电影阿凡达相似的电影,我们可以计算向量之间的距离,找到最接近的向量,从而实现相似性匹配。
而无需复杂的SQL查询,这就像使用地图找到两个地点之间的最短路径一样简单。
相似性搜索算法
在向量数据库中,支持通过多种方式来计算两个向量的相似度。
例如:余弦相似度、欧式距离、曼哈顿距离、闵可夫斯基距离、汉明距离、Jaccard相似度等多种。
其中最常见的就是 余弦相似度 和 欧式距离。
余弦相似度
主要用于衡量向量在方向上的相似性,特别适用于文本、图像和高维空间中的向量。
它不受向量长度的影响,只考虑方向的相似程度。
欧式距离
衡量向量之间的直线距离,得到的值可能很大,最小为 0,通常用于低维空间或需要考虑向量各个维度之间差异的情况。
欧氏距离较小的向量被认为更相似。