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的优势以及能力…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...