在RAG应用中的矢量嵌入

到目前为止,我们已经讲解了数据预处理、数据分块技术和向量数据库。现在,让我们谈谈语义搜索。但首先,我们需要了解向量嵌入,这是实现语义搜索的关键。

矢量嵌入听起来可能很复杂,但它们只是数据的简单数值表示,可以捕捉重要的特征和关系。让我们深入研究矢量嵌入的世界,了解它们的工作原理以及为什么它们是必不可少的。

理解向量嵌入

矢量嵌入就像机器使用的秘密代码,能帮助机器更好地理解数据。它们由数字组成,充当一种机器所使用的语言。举个例子,想象一下我们想要教会计算机“兔子”和“兔子”是什么。虽然这两个词看起来不同,但它们有相似的意思。矢量嵌入通过以数字表示兔子和兔子来帮助计算机理解这种相似性。

为了创建向量嵌入,我们使用高级数学和机器学习。这些工具将单词或短语转化为一长串数字。列表中的每个数字代表单词意义的不同方面。因此,即使"bunny"和"rabbit"是不同的单词,它们的数字列表看起来会非常相似,因为它们表示相似的含义。除此之外,我们还将它们的特征或属性与数值进行了对应。

理解示例

几年前,关于如何用数字来表示词语的方式引起了很大的关注,使我们能够进行数学运算。

“王- 男+ 女 ≈ 女王”

喜欢的话,假如你将“king”减去“man”,再加上“woman”,你就会得到接近“queen”的东西。这就像是说在“king”和“man”之间有某种“王权”的东西,而当你加入“woman”时,这种东西就成了“queen”。

Jay Alamar made this picture

他展示了所有的单词在数字里都有这样一个有点深蓝色的部分, 而“水”看起来很不一样,因为它不是一个人。另外,“女孩”和“男孩”看起来比它们和“国王”和“皇后”更相似,而“国王”和“皇后”则相互看起来很相似。

所以这些数字和单词相匹配,与我们已经了解的它们的意思相符。而且不仅仅是单词可以以这种方式表示,你还可以用很多东西,比如图片、声音,甚至是3D模型或分子来表示。

嵌入可以用于不同类型的数据,如文本、图像、视频、用户、音乐等,将这些数据作为空间中具有语义意义的位置点。

要直观地理解这句话的意思,最好的方法是通过示例来说明,所以让我们来看看最著名的嵌入算法之一,Word2Vec。

Word2Vec(简称为“词向量”)是Google于2013年发明的一种用于嵌入单词的技术。它接受一个单词作为输入,然后输出一个n维坐标(或“向量”),使得当你在空间中绘制这些单词向量时,同义词会聚集在一起。以下是一个可视化示例:

Words are plotted in 3-dimensional space. Embeddings can have hundreds or thousands of dimensions–too many for humans to visualize.

在ASKTOPDF上下文中

向量嵌入在文档搜索中发挥重要作用,通过捕捉文本数据的语义含义并促进高效的相似性搜索。将处理过的数据嵌入到密集的数值向量中并将其存储在向量数据库中,我们创建了文档的紧凑表示,从而保留了它们的语义关系。

当接收到用户查询时,它也被转换成一个嵌入向量,使我们能够直接在向量空间中执行余弦相似度搜索。这种方法使我们能够检索语义上与用户查询类似的文档,即使它们不包含完全相同的关键词,从而提高文档检索应用中搜索结果的准确性和相关性。

结论

使用向量嵌入在文档搜索中改变了我们查找信息的方式。通过将文本转化为数字并储存在向量数据库中,即使我们没有使用完全相同的词语,我们仍然可以快速找到与我们所需内容相匹配的文档。这使得文档搜索更加简便和准确,提升了我们获取信息的效率。在下一篇文章中,我们将讨论LLMs和Prompt技术,所以请继续关注,我们即将完成构建ASKTOPDF的最后阶段。

2024-02-16 04:27:13 AI中文站翻译自原文