Spring AI 核心概念

news2024/11/7 15:51:45

SpringAI 核心概念

  • 1. Models
  • 2. Prompts
  • 3. Prompt Templates
  • 4. Embeddings
  • 5. Tokens
  • 6. Structured Output
  • 7. Bringing Your Data & APIs to the AI Model
    • 7.1 Retrieval Augmented Generation
    • 7.2 Function Calling

1. Models

AI 模型是用于处理和生成信息的算法,通常模仿人类的认知功能。通过从大型数据集中学习模式和见解,这些模型可以做出预测、文本、图像或其他输出,从而增强各行各业的各种应用。

人工智能模型有很多种,每种模型都适用于特定的用例。虽然 ChatGPT 及其生成式人工智能功能通过文本输入和输出吸引了用户,但许多模型和公司都提供多样化的输入和输出。在 ChatGPT 之前,许多人都对文本到图像的生成模型着迷,例如 Midjourney 和 Stable Diffusion。

下表根据输入和输出类型对几种模型进行了分类:

在这里插入图片描述Spring AI 目前支持将输入和输出处理为语言、图像和音频的模型。上表中的最后一行接受文本作为输入并输出数字,这通常称为嵌入文本,表示 AI 模型中使用的内部数据结构。Spring AI 支持嵌入以实现更高级的用例。

GPT 等模型的独特之处在于其预训练特性,正如 GPT 中的“P”所示——Chat Generative Pre-trained Transformer。这种预训练功能将 AI 转变为通用的开发工具,不需要广泛的机器学习或模型训练背景。

2. Prompts

提示是基于语言的输入的基础,可指导 AI 模型产生特定输出。对于熟悉 ChatGPT 的人来说,提示可能看起来只是输入到对话框中并发送到 API 的文本。然而,它包含的内容远不止这些。在许多 AI 模型中,提示的文本不仅仅是一个简单的字符串。

ChatGPT 的 API 在一个提示中有多个文本输入,每个文本输入都被分配一个角色。例如,系统角色会告诉模型如何表现并设置交互的上下文。还有用户角色,通常是来自用户的输入。

制作有效的提示既是一门艺术,也是一门科学。ChatGPT 是为人类对话而设计的。这与使用 SQL 之类的东西“提问”有很大不同。人们必须与人工智能模型进行交流,就像与另一个人交谈一样。

3. Prompt Templates

创建有效的提示包括建立请求的上下文并用特定于用户输入的值替换请求的各部分。

此过程使用传统的基于文本的模板引擎来快速创建和管理。Spring AI为此使用了 OSS 库StringTemplate 。

例如,考虑简单的提示模板:

Tell me a {adjective} joke about {content}.

在 Spring AI 中,提示模板可以比作 Spring MVC 架构中的“视图”。java.util.Map提供一个模型对象,用于填充模板中的占位符。“渲染”后的字符串将成为提供给 AI 模型的提示内容。

发送给模型的提示的具体数据格式存在相当大的差异。提示最初只是简单的字符串,后来演变为包含多条消息,其中每条消息中的每个字符串代表模型的不同角色。

4. Embeddings

嵌入是文本、图像或视频的数字表示,用于捕捉输入之间的关系。

嵌入的工作原理是将文本、图像和视频转换为浮点数数组(称为向量)。这些向量旨在捕捉文本、图像和视频的含义。嵌入数组的长度称为向量的维数。

通过计算两段文本的向量表示之间的数值距离,应用程序可以确定用于生成嵌入向量的对象之间的相似性。

在这里插入图片描述
嵌入在实际应用中尤其重要,例如检索增强生成 (RAG) 模式。它们可以将数据表示为语义空间中的点,这类似于欧几里得几何的二维空间,但在更高的维度上。这意味着,就像欧几里得几何中平面上的点可以根据其坐标而接近或远离一样,在语义空间中,点的接近度反映了含义的相似性。关于相似主题的句子在这个多维空间中的位置更近,就像图上彼此靠近的点一样。这种接近度有助于文本分类、语义搜索甚至产品推荐等任务,因为它允许 AI 根据相关概念在这个扩展的语义景观中的“位置”来辨别和分组相关概念。你可以把这个语义空间想象成一个向量。

5. Tokens

Tokens是 AI 模型工作原理的基石。输入时:模型将单词转换为Tokens。输出时:它们将Tokens转换回单词。

在英语中,一个Token大约对应一个单词的 75%。,莎士比亚的全集总共约 90 万个单词,翻译过来大约有 120 万个Tokens。

在这里插入图片描述
也许更重要的是Tokens = 金钱。在托管 AI 模型的背景下,您的费用由使用的Tokens数量决定。输入和输出都会影响总Tokens数量。

此外,模型还受到 token 限制,这会限制单个 API 调用中处理的文本量。此阈值通常称为“上下文窗口”。模型不会处理超出此限制的任何文本。

例如,ChatGPT3 的Tokens限制为 4K,而 GPT4 则提供不同的选项,例如 8K、16K 和 32K。Anthropic 的 Claude AI 模型的Tokens限制为 100K,而 Meta 的最新研究则产生了 1M Tokens限制模型。

要使用 GPT4 总结莎士比亚全集,您需要制定软件工程策略来切分数据并在模型的上下文窗口限制内呈现数据。Spring AI 项目可以帮助您完成此任务。

6. Structured Output

即使您要求回复为 JSON, AI 模型的输出通常也会以 java.lang.String的形式出现。它可能是正确的 JSON,但它不是 JSON 数据结构。它只是一个字符串。此外,在提示中要求“输入 JSON”并非 100% 准确。

这种复杂性导致了一个专门领域的出现,涉及创建提示以产生预期的输出,然后将生成的简单字符串转换为可用于应用程序集成的数据结构。结构化输出转换采用精心设计的提示,通常需要与模型进行多次交互才能实现所需的格式。

在这里插入图片描述

7. Bringing Your Data & APIs to the AI Model

GPT 3.5/4.0 数据集仅延续到 2021 年 9 月。因此,该模型表示它不知道需要该日期之后知识的问题的答案。一个有趣的小知识是,这个数据集大约有 650GB。

有三种技术可以定制 AI 模型以整合您的数据:

  • Fine Tuning(微调):这种传统的机器学习技术涉及定制模型并更改其内部权重。然而,对于机器学习专家来说,这是一个具有挑战性的过程,而且由于 GPT 等模型的大小,它极其耗费资源。此外,有些模型可能不提供此选项。

  • Prompt Stuffing(提示填充):一种更实用的替代方案是将您的数据嵌入提供给模型的提示中。考虑到模型的令牌限制,需要使用技术在模型的上下文窗口中呈现相关数据。这种方法俗称“填充提示”。Spring AI 库可帮助您基于“填充提示”技术(也称为检索增强生成 (RAG))实现解决方案。

  • Function Calling(函数调用):允许注册自定义的用户函数,将大型语言模型连接到外部系统的 API。Spring AI 大大简化了支持函数调用所需编写的代码。

7.1 Retrieval Augmented Generation

检索增强生成 (RAG) 技术旨在解决将相关数据纳入准确的 AI 模型响应提示的挑战。

该方法涉及批处理样式的编程模型,其中作业从文档中读取非结构化数据,对其进行转换,然后将其写入矢量数据库。从高层次上讲,这是一个 **ETL(提取、转换和加载)**管道。矢量数据库用于 RAG 技术的检索部分。

在将非结构化数据加载到矢量数据库的过程中,最重要的转换之一是将原始文档分割成较小的部分。将原始文档分割成较小部分的过程有两个重要步骤:

  1. 将文档拆分成几部分,同时保留内容的语义边界。例如,对于包含段落和表格的文档,应避免在段落或表格中间拆分文档。对于代码,应避免在方法实现的中间拆分代码。
  2. 将文档的各部分进一步拆分成大小仅为 AI 模型令牌限制的一小部分的部分。

RAG 的下一个阶段是处理用户输入。当用户的问题需要由 AI 模型回答时,问题和所有“类似”的文档片段都会被放入发送给 AI 模型的提示中。这就是使用矢量数据库的原因。它非常擅长查找类似内容。
在这里插入图片描述

  • ETL 管道提供了有关协调从数据源提取数据并将其存储在结构化向量存储中的流程的更多信息,确保在将数据传递给 AI 模型时具有最佳检索格式。

  • ChatClient - RAG解释了如何使用QuestionAnswerAdvisor在您的应用程序中启用 RAG 功能

7.2 Function Calling

大型语言模型 (LLM) 在训练后被冻结,导致知识陈旧,并且无法访问或修改外部数据。

函数调用机制解决了这些缺点。它允许您注册自己的函数,以将大型语言模型连接到外部系统的 API。这些系统可以为 LLM 提供实时数据并代表它们执行数据处理操作。

Spring AI 大大简化了您需要编写的代码以支持函数调用。它为您处理函数调用对话。您可以将函数作为提供@Bean,然后在提示选项中提供该函数的 bean 名称以激活该函数。此外,您可以在单个提示中定义和引用多个函数。

在这里插入图片描述

  1. 执行聊天请求并发送函数定义信息。后者提供name(description例如,解释模型应何时调用该函数)和input parameters(例如,函数的输入参数模式)。

  2. 当模型决定调用该函数时,它将使用输入参数调用该函数并将输出返回给模型。

  3. Spring AI 会为您处理此对话。它将函数调用分派给适当的函数,并将结果返回给模型。

  4. 模型可以执行多个函数调用来检索所需的所有信息。

  5. 一旦获得了所需的所有信息,模型就会生成响应。

文章参考链接:https://docs.spring.io/spring-ai/reference/1.0/concepts.html

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

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

相关文章

从0开始学习Linux——文本编辑器

往期目录: 1、从0开始学习Linux——Linux简介&安装 2、从0开始学习Linux——搭建属于自己的Linux系统 我们通过前面教程的学习已经了解了什么是Linux,并且我们也定制安装了属于我们自己的一个Linux系统。从这个章节开始我们将开始学习如何去操作Linu…

外包干了三年,精神严重内耗。。。

前段时间我同事(做测试的一个妹子)跟我讲,感觉早上起来十分的疲惫,不想上班,问我们这是什么样的现象,其实有时候我也有这种感觉,虽然我卷,但我也是肉体凡胎啊!不是机器人…

华宇TAS应用中间件入围鲲鹏应用创新大赛2024全国总决赛

近日,鲲鹏应用创新大赛2024全国总决赛入围名单出炉。华宇TAS应用中间件经过区域赛、半决赛一路披荆斩棘,在众多优秀的解决方案中脱颖而出,成功入围全国总决赛。 这也表明华宇TAS应用中间件在方案创新性、技术领先性、商业前景、社会价值等方…

惊爆!内容创业新纪元:AI工作流助你打造自媒体帝国!

又是一个研究AI工作流的深夜。看着扣子商店里各种神奇的智能体,我不禁感叹技术的魔力。一个简单的工作流模板,居然能把过去需要一整天才能完成的工作,压缩到几分钟… 扣子模板 大家好,我是momo,一个专注教人使用AI工作流做自媒体的创业者。今天想和你分享一个能让内容创作效率…

史上最大应用层DDoS攻击 H2 Rapid Reset攻击研究

前言 2023年10月Cloudflare、Google、AWS等厂商公布了一种利用HTTP/2快速重置进行应用层DDoS攻击的0day漏洞(CVE-2023-44487)[1][2],即H2 Rapid Reset DDoS。Google宣传其监控到此种攻击峰值超过每秒3.98亿个请求,打破互联网历史最大应用层DDoS攻击记录…

饱和限幅器MATLAB和CODESYS平台下的实现

1、博途PLC限幅器(SCL代码) 博途PLC限幅器(SCL代码)-CSDN博客文章浏览阅读182次。本文详细介绍了博途PLC的限幅器功能,包括饱和限幅器的概念,并提供了完整的SCL编程代码示例,帮助读者理解和应用PLC限幅器。https://rxxw-control.blog.csdn.net/article/details/136029196 …

在 CSS 中,gap 是 布局容器(flex 或 grid)的属性。它用于设置容器内子元素之间的间距。

在 CSS 中,gap 是 布局容器(flex 或 grid)的属性。它用于设置容器内子元素之间的间距。以下是 gap 属性在不同布局中的应用: 1. 在 CSS Grid 布局中 gap 定义了网格行和列之间的间距。可以分别使用 row-gap 和 column-gap 设置行…

JavaWeb项目-----博客系统

一.设计数据库 1.创建数据库 create database if not exists java108_blog_system character set utf8; drop table if exists user; drop table if exists blog;2.创建博客列表 create table blog(blogId int primary key auto_increment,title varchar(20),content varcha…

一文读懂:AIOps 从自动化运维到智能化运维

今天跟大家聊一聊AIOps(人工智能运维) 为了应对企业面临着日益复杂的运营挑战,AIOps(人工智能运维)作为一种创新的方法应运而生,结合了人工智能和机器学习技术,来提升IT运营的效率和性能。 这…

从0开始学习Linux——文件目录

往期目录: 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 上期教程我们学习了如何使用远程连接工具去连接Linux系统&#xff0…

C++入门基础知识140—【关于C++ 类构造函数 析构函数】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 类构造函数 & 析构函数的相关内容…

MSC“名实之辩”:精准鉴定只为精准治疗

前 言 MSC是一群来源广泛、能够体外增殖分化的异质性细胞。MSC具有免疫调节、促进组织修复等作用,应用于多种疾病的治疗。由于科学进程、习惯等原因,MSC具有多种名称。自先秦以来,就有“名实之辩”,今日我们就讲一讲MSC的名称与…

零基础 Vue 入门:个人主页完整示例教程” “Vue 实战:构建简洁美观的个人主页界面” “从零开始使用 Vue 构建个人主页,包含详细代码解析”

效果图 博客教程:使用 Vue 构建简易个人主页界面 目录 前言项目结构和准备HTML 与 CSS 布局Vue 数据绑定和渲染功能实现总结 前言 本教程将带你逐步使用 Vue.js 创建一个简易的“个人主页”界面。通过学习该项目,你将掌握 Vue 的基本数据绑定、指令的…

(二)基于Bayes方法的道路分割

一、实验目的 1、实验目标 学习掌握Bayes定理(Bayes Theorem)的基本原理及推导过程,以及公式中的先验概率、条件概率、后验概率、相似度等概念。在MATLAB的概率分布函数基础上,通过编写程序,实现图像块内结果统计和序…

从新手到专家:7款电脑平面设计软件评测

平面设计在时尚、广告等多个领域扮演着重要角色,而创作出独特且富有创意的设计作品则需要依赖优秀的电脑平面设计软件。市场上的电脑平面设计软件众多,每款软件都有其独到之处。本文将为你推荐几款值得关注的电脑平面设计软件,并分析它们的特…

Django安装

在终端创建django项目 1.查看自己的python版本 输入对应自己本机python的版本,列如我的是3.11.8 先再全局安装django依赖包 2.在控制窗口输入安装命令: pip3.11 install django 看到Successflully 说明我们就安装成功了 python的Scripts文件用于存…

elementui中的新增弹窗在新增数据成功后再新增 发现数据无法清除解决方法

elementui中的新增弹窗在新增数据成功后再新增 发现数据无法清除解决方法 试过网上其他方法,发现表单清空数据还是有问题,索性用下面方法解决: // 给弹框里面添加 v-ifvisible测试无问题,暂时先这样解决,如果有其他方法&#x…

计算机网络——路由器构成

算路由表是分布式去算——你算你的,我算我的 输出队列非先来先传 调度发生在哪里 缓存队列一般是应对——来数据方向的速度过快问题

PMP–一、二、三模、冲刺–分类–7.成本管理–技巧–挣值分析

文章目录 技巧一模7.成本管理--4.控制成本--数据分析--挣值分析--进度绩效指数(SPI)是测量进度效率的一种指标,表示为挣值与计划价值之比,反映了项目团队完成工作的效率。 当 SPI小于 1.0 时,说明已完成的工作量未达到…

CentOS 7 更换软件仓库

CentOS 7 于2024年6月30日停止维护,官方仓库已经没有软件了,想要继续使用 ,需要更换软件仓库,这里更换到阿里云的软件仓库 https://developer.aliyun.com/mirror/ 查看目前可用的软件数量 yum repolist 更换软件仓库&#xff1a…