aigc基础概念(一)
目录
一、AI
1.1、基本术语
1、Artificial Intelligence (AI) —— 人工智能
2、Generative AI —— 生成性人工智能
3、Machine Learning (ML) —— 机器学习
4、Deep Learning (DL) —— 深度学习
5、Large Language Model (LLM) —— 大型语言模型
6、Transformers
7、Natural Language Processing (NLP) —— 自然语言处理
8、Prompt —— 提示
9、Prompt Engineering —— 提示工程
10、Neural Network —— 神经网络
11、Reinforcement Learning (RL) —— 强化学习
1.2、aigc
1、概念
1、Models
2、Prompts
3、Prompt Templates
4、嵌入
5、Tokens
6、Output Parsing(输出解析)
7、将数据引入AI
8、检索增强
9、评估AI响应
2、聊天模型
3、应用
1、支持API
2、实战
1、官方:openai-java
2、开源:chatgpt-java
3、spring AI
1、是什么?
2、为什么?
一、AI
1.1、基本术语
1、Artificial Intelligence (AI) —— 人工智能
让计算机像人类一样思考和行动
2、Generative AI —— 生成性人工智能
生成性人工智能是一种可以创造新内容或数据的人工智能,如图像、文本、音乐,甚至视频。生成性人工智能不是像许多人工智能系统那样只是分析和理解数据,而是可以利用其知识来产生全新的原创作品
3、Machine Learning (ML) —— 机器学习
教计算机在没有专门编程的情况下从数据中学习。
4、Deep Learning (DL) —— 深度学习
一种使用人工脑细胞层来理解复杂模式的 ML
5、Large Language Model (LLM) —— 大型语言模型
LLM 是一种人工智能程序,可以像人类一样理解、处理和生成文本。它接受了大量数据的训练,例如书籍、文章和网站,因此它可以学习人类语言的模式和结构。根据训练的数据,有不同的模型具有不同的目的。
6、Transformers
Transformer 模型是一种神经网络架构,可以将一种类型的输入转换为另一种类型的输出。它可以用于生成文本、图像和机器人指令,并且可以对不同数据模式之间的关系进行建模。该模型利用注意力的 AI 概念来强调相关词的权重,可以处理更长的序列,并且可以更有效地扩展。Transformer 架构由协同工作的编码器和解码器组成,注意力机制让转换器根据其他单词或标记的估计重要性对单词的含义进行编码。
7、Natural Language Processing (NLP) —— 自然语言处理
教计算机理解和使用人类语言。
8、Prompt —— 提示
提示是提供给 AI 系统以指导其响应或输出的一段文本。例如,当您向 AI 聊天机器人提问或给它一个要写的主题时,这就是提示。
9、Prompt Engineering —— 提示工程
提示工程是设计和改进我们给人工智能系统的提示以获得更有用或更准确的响应的过程。
10、Neural Network —— 神经网络
一种受人脑启发的计算机系统,连接节点处理信息。
11、Reinforcement Learning (RL) —— 强化学习
计算机通过根据其行为接收奖励或惩罚来学习的 ML。
等等:https://zhuanlan.zhihu.com/p/640711637
1.2、aigc
1、概念
1、Models
人工智能模型是旨在处理和生成信息的算法,通常模仿人类的认知功能。 通过从大型数据集中学习模式和见解,这些模型可以进行预测、文本、图像或其他输出,从而增强各行各业的各种应用
2、Prompts
提示是指导 AI 模型生成特定输出的基于语言的输入的基础。 对于那些熟悉 ChatGPT 的人来说,提示可能看起来只是输入到发送到 API 的对话框中的文本。 然而,它包含的远不止于此。 在许多 AI 模型中,提示的文本不仅仅是一个简单的字符串。
3、Prompt Templates
创建有效的提示涉及建立请求的上下文,并将请求的某些部分替换为特定于用户输入的值。
此过程使用传统的基于文本的模板引擎进行提示创建和管理。 Spring AI 为此使用 OSS 库 StringTemplate。
4、嵌入
嵌入将文本转换为数字数组或向量,使 AI 模型能够处理和解释语言数据。 这种从文本到数字再到数字的转换是人工智能如何与人类语言交互和理解的关键因素。 作为探索 AI 的 Java 开发人员,没有必要理解这些向量表示背后的复杂数学理论或具体实现。 对它们在 AI 系统中的角色和功能有基本的了解就足够了,尤其是在将 AI 功能集成到应用程序中时。
5、Tokens
令牌是 AI 模型工作方式的构建块。 在输入时,模型将单词转换为标记。在输出时,它们将标记转换回单词
6、Output Parsing(输出解析)
传统上,AI 模型的输出以 的形式出现,即使您要求回复采用 JSON 格式。 它可能是正确的 JSON,但不是 JSON 数据结构。它只是一个字符串。 此外,在提示中询问“for JSON”并不是 100% 准确的。java.util.String
7、将数据引入AI
有两种技术可用于自定义 AI 模型以合并数据:
微调:这种传统的机器学习技术涉及定制模型并更改其内部权重。 然而,对于机器学习专家来说,这是一个具有挑战性的过程,并且由于 GPT 等模型的大小,它们非常耗费资源。此外,某些型号可能不提供此选项。
提示填充:更实用的替代方法是将数据嵌入到提供给模型的提示中。给定模型的令牌限制,需要技术在模型的上下文窗口中显示相关数据。 这种方法通俗地称为“填充提示”。
Spring AI 库可帮助您实现基于“填充提示”技术的解决方案,也称为检索增强生成 (RAG)。
8、检索增强
一种称为检索增强生成 (RAG) 的技术已经出现,以解决将相关数据整合到提示中以实现准确 AI 模型响应的挑战。
该方法涉及批处理样式的编程模型,其中作业从文档中读取非结构化数据,对其进行转换,然后将其写入向量数据库。 概括地说,这是一个 ETL(提取、转换和加载)管道。 向量数据库用于RAG技术的检索部分。
9、评估AI响应
根据用户请求有效评估人工智能系统的输出对于确保最终应用程序的准确性和有用性非常重要。 一些新兴技术允许将预训练模型本身用于此目的。
此评估过程涉及分析生成的响应是否与用户的意图和查询的上下文一致。相关性、连贯性和事实正确性等指标用于衡量 AI 生成的响应的质量。
2、聊天模型
1、OpenAI
2、Azure OpenAI
3、HuggingFace
4、Bedrock
5、Ollama
3、应用
1、java中应用
1、支持API
2、实战
1、官方:openai-java
2、开源:chatgpt-java
3、spring AI
1、是什么?
一个“用于开发 AI 应用程序的 Spring 友好 API 和抽象
Spring AI 项目旨在简化包含人工智能功能的应用程序的开发,而不会产生不必要的复杂性。
它允许使用 Spring 的通用概念创建 AI 应用程序。目前,该项目集成了 Azure OpenAI 和 OpenAI 作为 AI 后端。该项目支持内容生成、代码生成、语义搜索和摘要等用例。
2、为什么?
尽管 AI 有着悠久的历史,但 Java 在这一领域的作用相对较小。 这主要是由于历史上依赖于用 C/C++ 等语言开发的高效算法,而 Python 充当访问这些库的桥梁。 大多数 ML/AI 工具都是围绕 Python 生态系统构建的。 然而,在 OpenAI 的 ChatGPT 等创新的推动下,生成式 AI 的最新进展普及了通过 HTTP 与预训练模型的交互。 这消除了对 C/C++/Python 库的大部分依赖,并为使用 Java 等编程语言打开了大门。
Python 库 LangChain 和 LlamaIndex 已成为实现生成式 AI 解决方案的流行工具,并且可以用其他编程语言实现。 这些 Python 库与 Spring 项目共享基础主题,例如:
1.可移植服务抽象
2.模块性
3.扩展
4.减少样板代码
5.与各种数据源集成
适用于常见用例的预构建解决方案
但是,用于 AI 解决方案(如 OpenAI 和 Azure OpenAI)的各种 Java 客户端 API 不同,这使得在这些解决方案之间切换变得更加困难。Spring AI 在受 Python 库 LangChain 和 LlamaIndex 启发的客户端 API 之上提供了一个抽象层。这些库基于与 Spring 项目类似的设计价值,例如模块化、可扩展性以及与各种数据源的集成。
Spring AI 项目从这些库中汲取灵感,旨在为 AI 领域的 Spring 开发人员提供类似的体验。
请注意,Spring AI API 不是 LangChain 或 LlamaIndex 的直接端口。如果您熟悉这两个项目,您会看到 API 中的显着差异,尽管概念和想法是相当可移植的。
下一篇我们探讨下springAI相关功能。
springAI孵化(二)
相关文章:
aigc基础概念(一)
目录 一、AI 1.1、基本术语 1、Artificial Intelligence (AI) —— 人工智能 2、Generative AI —— 生成性人工智能 3、Machine Learning (ML) —— 机器学习 4、Deep Learning (DL) —— 深度学习 5、Large Language Model (LLM) —— 大型语言模型 6、Transformers …...
USB学习——12、usb初始化和插拔驱动软件流程大致框架描述
usb初始化和插拔驱动软件流程大致框架描述: 当设备启动时,usb的主机控制器设备驱动(HCD)和 usb的root hub会先初始化: 1、xhci-plat.c主机控制器驱动那里,__usb_creat_hcd创建usb主机数据结构,m…...
【ARMv8/ARMv9 硬件加速系列 2.4 -- ARM NEON Q寄存器与V寄存器的关系】
文章目录 Q 与 V 的关系向量寄存器 v 的使用赋值操作寄存器赋值总结Q 与 V 的关系 在ARMv8/v9架构中,v寄存器和q寄存器实际上是对相同的物理硬件资源的不同称呼,它们都是指向ARM的SIMD(单指令多数据)向量寄存器。这些寄存器用于高效执行向量和浮点运算,特别是在多媒体处理…...
Oracle中递归查询(START WITH……CONNECT BY……)
一、基本语法 在Oracle中START WITH……CONNECT BY……一般用来查找存在父子关系的数据,也就是树形结构的数据。 SELECT * FROM TABLE WHERE 条件3 START WITH 条件1 CONNECT BY 条件2;start with [condition]:设置起点,用来限制第一层的数…...
【云原生|K8S系列】如何创建Kubernetes job和Cronjobs 入门指南
本kubernetes教程解释了如何创建kubernetes作业和cronjobs,以及它的基础知识、用例和一些提示和技巧。 什么是Kubernetes Job? Kubernetes job和cronjob是Kubernetes对象,主要用于短期和批处理工作负载。 kubernetes作业对象基本上部署了一个pod&…...
力扣每日一题 6/23 字符串/模拟
博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 520.检测大写字母【简单】 题目: 我们定义,在以下…...
Google trend搜索关键词
Google trend地址:https://trends.google.com/trends/?geoUS&hlzh-CN 1、具体的操作步骤如下: 2、Google trend搜索页面如下:...
Unity C#调用Android,IOS震动功能
最近在Unity上需要很原生移动端进行交互, 原理:新建一个android项目,把生成的app module给干掉,然后留下一个vibrationPlugin module,在这个module下写android震动代码,将这个android工程构建出来的 aar移…...
Ruby 注释
Ruby 注释 在编程中,注释是用于解释代码如何工作以及为什么这样编写的重要工具。Ruby作为一种解释型、面向对象的脚本语言,提供了灵活的注释方式,帮助开发者更好地组织和理解代码。本文将详细介绍Ruby中的注释类型、用法以及最佳实践。 Rub…...
C语言入门系列:特殊的main函数和exit函数
文章目录 一,main函数二,exit函数1,exit函数2,atexit()函数2.1 atexit函数的简介2.2 atexit注册的函数一定会被调用吗2.2.1 正常退出测试2.2.2 异常退出测试 一,main函数 一个C程序至少包含一个函数,这个函…...
JAVA复习3
目录 19. 下列关于 do…while 语句和 while 语句的叙述中错误的是( C ) 20. 若有定义 int a9, b6; System.out.println(a > b) 的结果是( D ) 21. 关于接口和抽象类,下列说法正确的是(A) …...
Oracle共享内存不释放
Oracle数据库使用共享内存来管理其系统全局区(SGA)和程序全局区(PGA)。当Oracle数据库的共享内存没有正确释放时,可能会导致数据库启动失败或性能问题。以下是一些可能的原因和解决方法: /dev/shm空间不足&…...
windows cmd中单引号和双引号的问题
文章目录 前言单引号和双引号的用法单引号双引号 示例对比Linux ShellWindows CMD PowerShell中的引号用法结论 前言 这个问题的起因是在windows cmd中运行一个简单的命令 node -e console.log(process)发现没有输出,但是进入node环境后,直接执行conso…...
Nacos 2.x 系列【15】数据源插件支持达梦、Oracel、PostgreSQL......
文章目录 1. 概述2. 持久层机制2.1 固定语句2.2 数据源插件 3. 案例演示3.1 编译已实现插件3.2 自定义插件3.3 数据库初始化3.4 插件引入3.4.1 方式一:引入到源码3.4.2 方式二:插件加载目录 3.5 修改配置3.6 测试 1. 概述 在实际项目开发中,…...
HJ39判断两个IP是否属于同一子网(中)
提示:文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 接上文HJ39判断两个IP是否属于同一子网 查了下,atoi可以转换负数。 修改成下面的代码 #include <stdio.h> #include <stdlib.h> #include <stdbool.h>bool isTargetSonN…...
渗透测试基础(二) Linux+Win常用命令介绍
1. Linux常用命令 1.1 解压缩相关 1.1.1 tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName1.1.2 gz命令 对于.gz格式的解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileN…...
手机usb共享网络电脑没反应的方法
适用于win10电脑,安卓手机上可以 开启usb网络共享选择,如果选择后一直跳,让重复选择usb选项的话,就开启 开发者模式,进到 开发者模式 里设置 默认usb 共享网络 选项 ,就不会一直跳让你选。 1.先用数据线 连…...
Scrivener v3 解锁版安装教程 (写作辅助软件)
前言 Scrivener,一个多功能的写作软件,被世界各地的作家广泛采用,从小说家到剧本家,再到非小说类作家和学术研究者,它的用户群跨越了广泛的领域,包括学生、法律专业人士、记者和翻译。这个软件非常注重用户…...
Python开发——用什么数据储存结构复杂的数据
在Python中,当需要储存包含不同类型的数据时,可以使用以下几种数据结构: 1. 字典(dict) 字典是一种非常灵活的数据结构,允许使用键-值对来存储不同类型的数据。 data {"name": "Alice&quo…...
【0-1系列】从0-1快速了解搜索引擎Scope以及如何快速安装使用(下)
前言 近日,社区版家族正式发布V2024.5版本,其中,社区开发版系列重磅发布Scope开发版以及StellarDB开发版。 为了可以让大家更进一步了解产品,本系列文章从背景概念开始介绍,深入浅出的为读者介绍Scope的优势以及能力…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
