掌握语义内核(Semantic Kernel):如何使用Memories增强人工智能应用

news2024/11/14 10:53:12

        随着人工智能领域的不断发展,语义内核(Semantic Kernel)的概念应运而生,为我们处理和理解庞大的数据集提供了新的视角。今天,我们将聚焦于语义内核中的一个核心概念——Memories,它是如何使我们的数据查询更加具有语境意义,以及在大型语言模型(LLM)中的应用。接下来,我们将一探Memories的究竟,并了解向量数据库在其中扮演的角色。

何为Memories?

        在语义内核架构中,Memories提供了一种承载和引用数据的手段,使计算过程能够紧密与任务相关联。我们可以通过以下三种主要方式来访问Memories:

  1. 键值存储:这里存储的数据可以通过特定键直接检索,类似于在命令行界面设置环境变量。

  2. 文件系统存储:对于更大的数据集,我们可以使用文件系统来永久保存信息,在需要时通过文件名称检索。

  3. 语义搜索:这是访问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的进一步优化和发展,我们期待在未来看到更多创新的应用和服务,这些都将以前所未有的速度和准确度丰富我们的数字世界。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2067304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跨入数字新时代:探寻数字媒体技术的魅力与前景

在当今数字化的时代,数字媒体技术如同一股汹涌的浪潮,席卷着我们生活的方方面面,展现出无与伦比的魅力和广阔无垠的前景。 数字媒体技术的魅力首先体现在它为信息传播带来的革命性变化。以往,我们通过书本、报纸、电视等传统媒介获…

SpringBoot教程(二十五) | SpringBoot整合Sharding-JDBC分库分表

SpringBoot整合Sharding-JDBC分库分表 前言1. 什么是Sharding?2. 什么是Sharding-JDBC? 所需的maven依赖注意点(关于shardingsphere的配置情况)实操一:如何水平分表1. 步骤说明2. 创建数据库和表3.配置application.pro…

java反序列化之CommonCollections1利⽤链的学习

一、源起 1、代码示例 既然学习cc1链&#xff0c;那么总要先了解下cc1链能造成任意代码执行的原因&#xff0c;这里引用P神的代码来进行讲解&#xff1a; ps:环境使用&#xff1a; CommonsCollections < 3.2.1java < 8u71 import org.apache.commons.collections.Trans…

【Python机器学习】NLP分词——利用分词器构建词汇表(一)

在NLP中&#xff0c;分词&#xff08;也称切词&#xff09;是一种特殊的文档切分过程。而文档切分能够将文本切分成更小的文本块或片段&#xff0c;其中含有更集中的信息内容。文档切分可以是将文本分成段落&#xff0c;将段落分成句子&#xff0c;将句子分成短语&#xff0c;或…

C语言学习——文件

目录 十三、文件 13.1C文件概述 13.2文件类型指针 13.3文件的打开与关闭 文件的打开&#xff08;fopen函数&#xff09; 文件的关闭&#xff08;fclose函数&#xff09; 13.4文件的读写 fputc函数和fgetc函数&#xff08;putc函数和getc函数&#xff09; fread函数和fw…

在亚马逊云科技上通过LangChain ReAct Agent开发金融多模态数据AI分析中台

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技机器学习托…

简易版营业厅宽带系统

TOC ssm018简易版营业厅宽带系统jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管…

音频Transformer架构

第3单元:音频Transformer架构 本课程中,我们主要关注Transformer模型以及它们如何应用于音频任务。虽然您不需要了解这些模型的内部细节,但了解使它们工作的主要概念很有用,因此我们在本小节中回顾一下关于Transformer的知识。有关transformer的深入了解,请查看我们的NLP…

互联网的发展是否加剧了数字鸿沟?

有人问&#xff1a;互联网的发展是否加剧了数字鸿沟。 互联网的发展确实在某种程度上加剧了数字鸿沟。虽然互联网的普及为全球范围内的人们提供了前所未有的访问信息、教育资源和经济机会的机会&#xff0c;但其发展也凸显并放大了不同群体之间的差距&#xff0c;比如以下几个…

dokcer 安装 redis(单机版)

准备工作 拉取redis镜像 docker pull redis 通过docker-compose 安装redis 很方便、很简单 先安装docker&#xff0c;参考我这个安装示例进行安装 https://blog.csdn.net/qq_33192671/article/details/13714973 然后安装docker-compose&#xff0c;要是拉取docker-compose无…

【在Linux世界中追寻伟大的One Piece】IO基础

目录 1 -> 回顾 1.1 -> 回顾C文件接口 1.2 -> 总结 2 -> 系统文件I/O 3 -> 接口介绍 3.1 -> open 3.2 -> open函数返回值 3.3 -> 文件描述符fd 4 -> 0 & 1 & 2 5 -> 文件描述符的分配规则 6 -> 重定向 7 -> 使用dup2系…

跨链互通:Web3如何实现多链互操作性

随着区块链技术的发展&#xff0c;各类区块链网络不断涌现&#xff0c;然而&#xff0c;不同链之间的互操作性问题成为了一个重要挑战。跨链互通&#xff08;Cross-chain Interoperability&#xff09;技术正是为了解决这一问题&#xff0c;旨在打破各区块链网络间的壁垒&#…

恒创科技:如何管理和减少Windows服务器 CPU 负载?

CPU 负载是衡量网络服务器或计算机中央处理器 (CPU) 在任意给定时间内处理工作量的指标。它通常表示 CPU 正在执行或排队等待处理的进程数。 如何读取和管理CPU负载&#xff1a; 对于 Windows 系统 Windows 本身不支持“top”和“ps”命令&#xff0c;而类 Unix 系统则支持。不…

Xinstall助力App运营,邀请码自动识别,效率翻倍!

在App推广和运营的道路上&#xff0c;邀请码一直是一个让人又爱又恨的存在。它能够帮助我们追踪用户来源&#xff0c;衡量推广效果&#xff0c;但同时&#xff0c;繁琐的填写步骤也让许多潜在用户望而却步。然而&#xff0c;随着Xinstall的出现&#xff0c;这一切都将迎来颠覆性…

Promise学习之同步与异步

目录 前言 一、同步与异步 (一) 同步 (二) 异步 二、总结 (一) 同步 (二) 异步 前言 Java有多线程&#xff0c;前端有同步与异步&#xff0c;异步操作可以优化用户体验、提高性能与响应、处理并发与并行任务等等&#xff0c;异步操作有发送Ajax请求、读文件等&#xff0…

简明的Arthas故障排查实践

写在文章开头 Arthas是一款强大的开源Java诊断程序,它可以非常方便的启动并以界面式的方式和Java程序进行交互,支持监控程序的内存使用情况、线程信息、gc情况、甚至可以反编译并修改现上代码等。所以它成为笔者进行线上问题排查的重要手段,而本文将从实际使用的角度介绍一下…

我带着我的未来回来了!

&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d; &#x1f947;博主昵称&#xff1a;小菜元 &#x1f35f;博客主页…

第九周:机器学习笔记

第九周机器学习周报 摘要Abstract机器学习——Spatial Transformer1.1 How to transform an image/feature map?&#xff08;怎么做&#xff09;1.2 Interpolation&#xff08;插值&#xff09;1.3 spatial Transformer的应用 Pytorch学习1. 线性层2. 其他层的介绍3. 搭建小实…

Leetcode 237.19.83.82 删除链表重复结点 C++实现

Leetcode 237. 删除链表中的节点 问题&#xff1a;有一个单链表的head&#xff0c;我们想删除它其中的一个节点node。给你一个需要删除的节点 node 。你将 无法访问 第一个节点head。链表的所有值都是唯一的&#xff0c;并且保证给定的节点 node不是链表中的最后一个节点。删除…

buuctf [ACTF新生赛2020]usualCrypt

前言&#xff1a;学习笔记。 常规&#xff1a; 下载 解压 查壳。 32位IDA pro打开 先查找字符串 在进入main() 分析&#xff1a; 关键函数&#xff1a; 第一部分&#xff1a; 大写转小写 小写转大写。 已知&#xff1a; 密文&#xff0c;以及加密过程由三部分组成。 那么逆向…