什么是嵌入和向量数据库?
嵌入是任何信息的数值表示。它们允许我们确定相似性,从而实现快速搜索、分类和推荐。想象一个拥有大量藏书的数字图书馆(我们的数据集)。每本书都由坐标表示——一个数值向量,它捕捉了书籍内容、类型、风格和其他特征的精髓,为每本书提供了一个独特的“数字指纹”。当用户搜索一本书时,他们提供一个搜索提示。图书馆的搜索系统使用与处理所有书籍相同的**嵌入方法**,将该提示转换为向量坐标,以在图书馆数据库中进行搜索。系统会寻找与提示向量最相似的书籍向量。然后,将坐标最匹配的书籍根据初始请求**推荐**给用户作为搜索结果。另一个最简单的用例示例是,如果您正在寻找一个单词的同义词,嵌入可以帮助您找到相似或“接近”的单词,但它能做的远不止这些。语义搜索是一种非常有效的方式,可以快速找到与您的提示相关的信息,这也是谷歌搜索引擎的工作方式。
简·奥斯汀的经典小说《傲慢与偏见》在某些国家以不同的名字著称——在一些翻译和改编版本中,它被称为《最初的印象》。尽管名称和语言不同,将它们嵌入向量数据库将揭示它们密切的语义关系,使它们在向量空间中彼此靠近。嵌入模型是如何工作的?嵌入模型经过专门训练,在大型数据集上揭示这些相关性,包括“傲慢与偏见”=“最初的印象”,因此如果模型没有在特定对上进行训练,它在发现相关性方面就不会那么准确。
我再给你们举一个例子。这最好通过比较人类如何看待数据与计算机如何看待数据来理解:想象你在地图上寻找芝加哥伊利诺伊州附近的城市。如果计算机知道坐标是 {**41°**88’18"N, **-87°**62’31"W},要找到芝加哥附近的城市,它不需要地图,只需要所有其他城市的坐标列表!在这个位置 {**41°**84’56"N, **-87°**75’39"W} 中,最近的是伊利诺伊州的西塞罗。对于计算机来说,这项任务现在是一个需要解决的数学问题。请注意经纬度坐标数字是如何接近的。现在我们可以通过城市人口规模添加一个额外的“维度”,如果用户要求找到与芝加哥规模相似的最近城市,对于给定的提示,答案可能会有所不同。我们可以添加更多维度。计算机可以使用这种算法在电视喜剧、服装或许多其他类型的信息中找到相似之处。用科学语言来说,它将被表述为“将语义相似的输入放在嵌入空间中彼此靠近”。顺便说一下,这些坐标也被称为潜在空间。
嵌入是一个非常强大的工具,可以通过将用户搜索提示分类并从其他来源通过共同类别查找相似信息来丰富用户提示。一个很好的例子就是我们的模型尚未了解的日常新闻。我们不必每天将这些新信息烘焙到模型中,只需从其他来源检索新闻,并提供最接近和相关的信息作为额外上下文,连同原始用户提示一起提供给模型。
为什么我们需要将数据集编码并以嵌入形式表示,并将用户提示转换为嵌入,然后搜索向量,而不是直接在原始数据集中搜索提示文本呢?因为这样处理速度快,并且计算机更容易理解信息之间的关系。换句话说,文本的数值相似嵌入在语义上也是相似的。
在准备RAG应用的第一阶段,我们整个数据集的信息被分割成重叠的块,并以编码的数值表示形式存储在数据库中(称为向量数据库),以便在第二阶段,您可以快速检索一小部分相关信息作为用户提示的额外上下文。嵌入在第一阶段将我们数据集中的文本编码成向量索引并将其存储在向量数据库中。然后在应用运行的第二阶段,用户提示也使用相同的嵌入模型进行编码,并使用为用户提示生成的向量索引从向量数据库中搜索和检索文本块,类似于搜索引擎的工作方式。这就是为什么它们被称为双编码器模型。用于将文本编码为数值向量表示的嵌入模型通常比大型语言模型小得多。搜索存储在向量数据库中的嵌入相似性之美在于无需了解您的数据或任何模式即可使其工作。今天,几乎所有的嵌入都是BERT模型的某种变体。
嵌入的优缺点:
嵌入尽管广受欢迎,但有一个显著的局限性:它们缺乏传递性和对大型数据的概念总结能力。这对于在RAG系统中解释和响应查询具有影响。在向量空间中,当通过其共享属性遍历不同信息块以提供新的综合见解时,如果向量A与向量B相似,并且向量B与向量C相似,这不一定意味着向量A与向量C相似。当用户的查询(表示为向量A)获得B但寻求与向量C对齐的信息时,直接的相似性可能无法通过向量B立即显现。此外,当试图提供综合见解或整体理解大型数据的语义概念时,嵌入的缺点也很明显。
这些限制可能导致次优情况,即RAG系统仅返回60%、70%或90%的正确答案,而无法始终达到100%的准确性。
虽然嵌入可能并非总是正确的,但它们总是会返回一些东西,因此在这方面是可靠的。您可能会开始思考,如果无法保证质量,那么这种相关性有什么用呢?尽管其简单性通常是处理更复杂数据(如语义层)的先决条件,使向量搜索仅仅是检索数据的第一步,更多内容将在我的后续文章中讨论。其中一个主要优点是,您无需理解您的数据或拥有模式即可检索信息,从而简化了处理复杂数据的初始阶段。如果正确实施并与其他技术结合使用,嵌入可以产生积极的复合效应,这解释了它们尽管存在固有限制,但仍被广泛使用的原因。
从向量数据库中检索数据并不是唯一的方法,您可以通过多种方式检索数据,例如从关系数据库的表格中或通过Google Maps或Yelp等API。如果您没有其他更方便的存储和检索数据的方式,您可能需要使用向量数据库。
https://huggingface.co/blog/getting-started-with-embeddings https://quamernasim.medium.com/mastering-rag-choosing-the-right-vector-embedding-model-for-your-rag-application-bbb57517890e https://github.com/alfredodeza/learn-retrieval-augmented-generation/tree/main
喜欢这个故事吗?
如果你喜欢这个话题并想支持我
- 为我的文章点赞⬆️;那会帮助我
- 在Hugging Face博客上关注我,获取我的最新文章,并加入 AI Sky Discord服务器 🫶
- 在社交媒体上分享这篇文章 ➡️🌐
- 在领英评论💬中给我反馈。这会帮助我更好地理解这项工作是否有用,即使是简单的“谢谢”也可以。给我好的或坏的,无论你认为如何,只要告诉我需要改进的地方以及如何改进。
- 在领英或Discord上与我联系或关注我。
免责声明:本博客不隶属于任何公司或其任何子公司,也未获得其认可或赞助。任何提及产品、服务、徽标或商标的行为仅用于提供信息和评论,并属于各自所有者。本博客文章中表达的观点和意见是作者自己的,不一定反映相关公司的观点或意见。