数据向量化是为了实现高效的文档检索,将原始的文本数据转化为数值向量的过程。其目的是将文本数据映射到低维向量空间,使语义相似的文本距离较近,不相似的较远。但这一过程会导致一定程度的信息损失,因为文本的复杂性和多样性难以用有限向量完全表达,可能忽略细节和特征,影响文档检索准确性。
在语义搜索中,根据用户问题从文档集合中检索语义最相关的文档,主流方法是基于数据向量化结果,利用向量空间中的距离或相似度度量语义相似度,但存在局限性,如不能完全反映真实语义相似度,向量空间中的噪声和异常值会干扰结果,导致准确率无法 100%保证。
在计算机科学和数据分析中,向量常被用作表示数据点的方式,是一个数值列表或数组,每个数值代表数据点的一个特征。多维数据运算常以矩阵形式进行,矩阵乘法是基本操作。归一化是数据预处理的关键技术,用于调整数值数据范围,常用方法有最小-最大缩放和 Z 得分标准化。
在向量数据库中,当用户输入查询时,如“激动人心的科幻冒险”,会转换成一个向量,例如[0,0.9,0.7,0.8,0,0,0,0,0,0],表示对不同元素的偏好程度。向量数据库存放的是词在不同维度上的相对位置,数据的存储和检索与传统 Excel 和关系数据库有很大不同。关于文字如何转换成向量,实际的向量结构会很复杂。
[title]开发:LangChain应用开发指南-不用向量也可以RAG[heading2]RAG面临的挑战和问题「数据向量化的信息损失」。为了实现高效的文档检索,通常需要将原始的文本数据转化为数值向量,这一过程又称为数据向量化(Data Embedding)。数据向量化的目的是将文本数据映射到一个低维的向量空间中,使得语义相似的文本在向量空间中的距离较近,而语义不相似的文本在向量空间中的距离较远。然而,数据向量化也会导致一定程度的信息损失,因为文本数据的复杂性和多样性很难用有限的向量来完全表达。因此,数据向量化可能会忽略一些文本数据的细节和特征,从而影响文档检索的准确性。「语义搜索的不准确」。在RAG中,语义搜索(Semantic Search)是指根据用户的问题,从文档集合中检索出与问题语义最相关的文档,这一过程又称为数据召回(Data Retrieval)。语义搜索的难点在于如何理解用户的问题和文档的语义,以及如何衡量问题和文档之间的语义相似度。目前,语义搜索的主流方法是基于数据向量化的结果,利用向量空间中的距离或相似度来度量语义相似度。然而,这种方法也存在一些局限性,例如向量空间中的距离或相似度并不一定能反映真实的语义相似度,而且向量空间中的噪声和异常值也会干扰语义搜索的结果。因此,语义搜索的准确率也无法有100%的保证。
向量(Vector):在计算机科学和数据分析中,向量经常被用作表示数据点的方式。在这种情况下,向量是一个数值列表(或数组),其中的每个数值代表了数据点的一个特征。矩阵运算(Matrix Operations):由于多维数据通常表示为向量,因此很多运算都是以矩阵的形式进行的。矩阵乘法是线性代数中的一个基本操作,其中每个元素的值是通过将行向量中的元素与列向量中对应元素相乘然后求和获得的。归一化(Normalization):归一化是数据预处理的一种关键技术,主要用于调整数值数据的范围,以便不同特征之间可以更公平地比较。这对于数据之间绝对值有明显差异的模型表现非常重要。比如我的数据是:面积80,商圈数5,得到的模型就会非常混乱,很难做梯度优化。归一化的常用方法:[heading4]最小-最大缩放:此方法通过以下公式将所有特征缩放到[0,1]区间内:[heading4]Z得分标准化:也称为标准化,此方法将数据按其均值和标准差重新缩放,使得处理后的数据具有均值为0和标准
我们先把悬疑度和科幻元素这2个维度弄个交集,就出现了下面这个图一时没找到特别合适的展示二维效果的工具,让gpt写了个代码。|2维度|3维|<br>|-|-|<br>| | |老实说呢,维度超过3维,普通人已经不好想象了,这个时候只能借助复杂的数学公式来做,理解上还可以通过降维的方式来,比如投影之类的方法。这些是数据在向量的存储形式,如果要去查询是什么样的方法呢?[heading3]好了,我要开始查询了[content]当用户输入“激动人心的科幻冒险”时,这个查询同样可以转换成一个向量,例如[0,0.9,0.7,0.8,0,0,0,0,0,0],这表示用户对科幻(0.9)、冒险(0.7)和激动(0.8)的高度偏好。这里简单展示了一个向量的结构,数据如何存储,如何查询的过程,实际的向量结构会复杂很多。简单来说,数据的存储和检索和传统Excel,关系数据库有很大的不同。向量数据库存放的是一个词在不同维度上的相对位置。比如说,短毛猫(假如有这么个物种),这个词,它是猫科动物,是生物,是短毛的,温顺的(假如)。这样一来,就有非常多的维度可以去描述它。我们搜索的时候,也许是搜索“温顺的动物”。这里例子里面,我们看到了文字转换成向量的结果,它是咋转换的呢?