随着人工智能领域的不断发展,语义内核(Semantic Kernel)的概念应运而生,为我们处理和理解庞大的数据集提供了新的视角。今天,我们将聚焦于语义内核中的一个核心概念——Memories,它是如何使我们的数据查询更加具有语境意义,以及在大型语言模型(LLM)中的应用。接下来,我们将一探Memories的究竟,并了解向量数据库在其中扮演的角色。
何为Memories?
在语义内核架构中,Memories提供了一种承载和引用数据的手段,使计算过程能够紧密与任务相关联。我们可以通过以下三种主要方式来访问Memories:
-
键值存储:这里存储的数据可以通过特定键直接检索,类似于在命令行界面设置环境变量。
-
文件系统存储:对于更大的数据集,我们可以使用文件系统来永久保存信息,在需要时通过文件名称检索。
-
语义搜索:这是访问Memories最引人入胜的方式,可以通过"Embeddings"(嵌入)来表示文本信息。Embeddings通过数字向量化的形式捕获信息的含义,并允许我们执行基于意义的搜索。
Semantic Memory是如何工作的?
是一种在高维空间中将单词或其他数据表示为向量的方法。向量就像有方向和长度的箭头。高维意味着空间有很多维度,比我们能看到或想象的要多。这个想法是相似的单词或数据将具有相似的向量,而不同的单词或数据将具有不同的向量。这有助于我们衡量它们的相关或不相关程度,并对它们执行操作,例如加法、减法、乘法等。Embeddings对 AI 模型很有用,因为它们可以以计算机可以理解和处理的方式捕获单词或数据的含义和上下文。
所以基本上你取一个句子、段落或整页文本,然后生成相应的Embeddings向量。当执行查询时,查询将转换为其Embeddings表示,然后通过所有现有的Embeddings向量执行搜索以查找最相似的向量。这类似于在必应上进行搜索查询时,它会为您提供与查询相近的多个结果。语义记忆不太可能给你一个完全匹配的匹配项,但它总是会给你一组匹配项,根据你的查询与其他文本片段的相似程度进行排名。
Embeddings在LLM中的重要性
由于提示是我们作为 AI 模型的输入以生成所需输出或响应的文本,因此我们需要根据我们选择使用的模型的令牌限制来考虑输入文本的长度。例如,GPT-4 每个输入最多可以处理 8,192 个令牌,而 GPT-3 最多只能处理 4,096 个令牌(当然,现在的GPT-4Trubo有了128,000的令牌)。这意味着,超过模型标记限制的文本将不适合,并且可能会被截断或忽略。
如果我们可以使用整个 10,000 页的操作手册作为提示的上下文,那就太好了,但由于令牌限制,这是不可能的。因此,Embeddings对于将大文本分解为较小的部分非常有用。我们可以通过将每个页面总结为一个较短的段落,然后为每个摘要生成一个Embeddings向量来做到这一点。Embeddings向量类似于文本的压缩表示,保留了其含义和上下文。然后,我们可以将摘要的Embeddings向量与提示的Embeddings向量进行比较,并选择最相似的向量。然后,我们可以将这些摘要添加到输入文本中,作为提示的上下文。这样,我们可以使用Embeddings来帮助我们在模型的标记限制内选择和拟合大型文本作为上下文。
开发者如何使用Embeddings?
对于程序员来说,Embeddings是一种表示模型处理过的token意义和上下文的数字数组。通过从模型的参数或权重派生而来的Embeddings,我们可以让模型理解token之间的语义和句法关系,生成更相关、更连贯的文本;Embeddings还使模型能够处理图像和代码生成等多模态任务。
Embeddings 用于:
文本分类:Embeddings可以帮助模型根据文本的含义和上下文为文本分配标签或类别。例如,Embeddings可以帮助模型将文本分类为正面或负面、垃圾邮件或非垃圾邮件、新闻或观点等。
文本摘要:Embeddings可以帮助模型从文本中提取或生成最重要或最相关的信息,并创建简洁连贯的摘要。例如,Embeddings可以帮助模型总结新闻文章、产品评论、研究论文等。
文本翻译:Embeddings可以帮助模型将文本从一种语言转换为另一种语言,同时保留原始文本的含义和结构。例如,Embeddings可以帮助模型在英语和西班牙语、法语和德语、中文和日语等之间翻译文本。
文本生成:Embeddings可以帮助模型根据用户提供的输入或提示创建新的和原始的文本。例如,Embeddings可以帮助模型生成文本,例如故事、诗歌、笑话、标语、标题等。
图像生成:Embeddings可以帮助模型从文本创建图像,反之亦然,方法是将不同类型的数据转换为通用表示形式。例如,Embeddings可以帮助模型生成徽标、面孔、动物、风景等图像。
代码生成:通过将不同类型的数据转换为通用表示形式,Embeddings可以帮助模型从文本创建代码,反之亦然。例如,Embeddings可以帮助模型生成 HTML、CSS、JavaScript、Python 等代码。
向量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示。每个向量都有一定数量的维度,范围从几十到几千不等,具体取决于数据的复杂性和粒度。向量通常是通过对原始数据(如文本、图像、音频、视频等)应用某种转换或Embeddings算法来生成的。Embeddings功能可以基于多种方法,例如机器学习模型、嵌入、特征提取算法等。
向量数据库的主要优点是它允许根据向量距离或相似性对数据进行快速准确的相似性搜索和检索。这意味着,您可以使用向量数据库根据其语义或上下文含义查找最相似或最相关的数据,而不是使用基于精确匹配或预定义条件查询数据库的传统方法。
例如,您可以使用矢量数据库执行以下操作:
-
根据视觉内容和样式查找与给定图像相似的图像
-
根据主题和情绪查找与给定文档相似的文档
-
根据功能和评级查找与给定产品相似的产品
若要在向量数据库中执行相似性搜索和检索,需要使用表示所需信息或条件的查询向量。查询向量可以派生自与存储向量相同类型的数据(例如,使用图像作为图像数据库的查询),也可以来自不同类型的数据(例如,使用文本作为图像数据库的查询)。然后,您需要使用相似性度量来计算两个向量在向量空间中的接近或距离。相似性度量可以基于各种指标,例如余弦相似度、欧几里得距离、汉明距离、jaccard 指数。
相似性搜索和检索的结果通常是与查询向量具有最高相似性分数的向量的排名列表。然后,您可以从原始源或索引访问与每个向量关联的相应原始数据。
在深入探索人工智能的边界时,我们不仅需要关注算法的进步和硬件的提升,更应该重视数据的组织和处理方式。Semantic Kernel中的Memories概念和Embeddings的使用为我们展现了一种有效处理和检索大量高维数据的方法。通过这些技术,我们能够让机器更好地理解语言的细微差别,做出更加智能化的决策,并最终为用户提供更准确、有用且个性化的服务。
无论是提升语言模型的理解能力,还是增强数据库的检索功能,这些技术都为我们打开了新的可能性。随着向量数据库和Semantic Memory的进一步优化和发展,我们期待在未来看到更多创新的应用和服务,这些都将以前所未有的速度和准确度丰富我们的数字世界。