当前位置: 首页 > news >正文

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是否属于同一子网(中)

提示&#xff1a;文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 接上文HJ39判断两个IP是否属于同一子网 查了下&#xff0c;atoi可以转换负数。 修改成下面的代码 #include <stdio.h> #include <stdlib.h> #include <stdbool.h>bool isTargetSonN…...

渗透测试基础(二) Linux+Win常用命令介绍

1. Linux常用命令 1.1 解压缩相关 1.1.1 tar命令 解包&#xff1a;tar zxvf FileName.tar 打包&#xff1a;tar czvf FileName.tar DirName1.1.2 gz命令 对于.gz格式的解压1&#xff1a;gunzip FileName.gz解压2&#xff1a;gzip -d FileName.gz压缩&#xff1a;gzip FileN…...

手机usb共享网络电脑没反应的方法

适用于win10电脑&#xff0c;安卓手机上可以 开启usb网络共享选择&#xff0c;如果选择后一直跳&#xff0c;让重复选择usb选项的话&#xff0c;就开启 开发者模式&#xff0c;进到 开发者模式 里设置 默认usb 共享网络 选项 &#xff0c;就不会一直跳让你选。 1.先用数据线 连…...

Scrivener v3 解锁版安装教程 (写作辅助软件)

前言 Scrivener&#xff0c;一个多功能的写作软件&#xff0c;被世界各地的作家广泛采用&#xff0c;从小说家到剧本家&#xff0c;再到非小说类作家和学术研究者&#xff0c;它的用户群跨越了广泛的领域&#xff0c;包括学生、法律专业人士、记者和翻译。这个软件非常注重用户…...

Python开发——用什么数据储存结构复杂的数据

在Python中&#xff0c;当需要储存包含不同类型的数据时&#xff0c;可以使用以下几种数据结构&#xff1a; 1. 字典&#xff08;dict&#xff09; 字典是一种非常灵活的数据结构&#xff0c;允许使用键-值对来存储不同类型的数据。 data {"name": "Alice&quo…...

【0-1系列】从0-1快速了解搜索引擎Scope以及如何快速安装使用(下)

前言 近日&#xff0c;社区版家族正式发布V2024.5版本&#xff0c;其中&#xff0c;社区开发版系列重磅发布Scope开发版以及StellarDB开发版。 为了可以让大家更进一步了解产品&#xff0c;本系列文章从背景概念开始介绍&#xff0c;深入浅出的为读者介绍Scope的优势以及能力…...

前端核心框架Vue指令详解

目录 ▐ 关于Vue指令的介绍 ▐ v-text与v-html ▐ v-on ▐ v-model ▐ v-show与v-if ▐ v-bind ▐ v-for ▐ 前言&#xff1a;在学习Vue框架过程中&#xff0c;大家一定要多参考官方API &#xff01; Vue2官方网址https://v2.cn.vuejs.org/v2/guide/ ▐ 关于Vue指令的…...

SD卡无法读取?原因分析与数据恢复策略

一、SD卡无法读取的困境 SD卡作为便携式的存储介质&#xff0c;广泛应用于手机、相机、平板等多种电子设备中。然而&#xff0c;在使用过程中&#xff0c;我们可能会遭遇SD卡无法读取的困扰。当我们将SD卡插入设备时&#xff0c;设备无法识别SD卡&#xff0c;或者虽然识别了SD…...

线程池的工作原理

线程池可以减少创建和销毁线程的次数&#xff0c;从而减少系统资源的消耗。当一个任务&#xff08;Runnable或Callable对象&#xff09;&#xff08;Runnable无返回值&#xff0c;Callable有返回值&#xff09;被提交到线程池时&#xff1a; 一、首先判断核心线程池中的线程是…...

Nikto一键扫描Web服务器(KALI工具系列三十)

目录 1、KALI LINUX 简介 2、Nikto工具简介 3、信息收集 3.1 目标IP&#xff08;服务器) 3.2kali的IP 4、操作实例 4.1 基本扫描 4.2 扫描特定端口 4.3 保存扫描结果 4.4 指定保存格式 4.5 连接尝试 4.6 仅扫描文件上传 5、总结 1、KALI LINUX 简介 Kali Linux 是一…...

全局变量和局部变量

全局变量未初始化&#xff0c;则它的值为0&#xff1b; 局部变量未初始化&#xff0c;则它的值为随机值&#xff1b; 局部变量的作用域是变量所在的局部范围; 全局变量的作用域是整个工程; 生命周期&#xff1a; 变量的生命周期指的是变量从创建到销毁的整个阶段。 局部变量的生…...

[机器学习算法]支持向量机

支持向量机&#xff08;SVM&#xff09;是一种用于分类和回归分析的监督学习模型。SVM通过找到一个超平面来将数据点分开&#xff0c;从而实现分类。 1. 理解基本概念和理论&#xff1a; 超平面&#xff08;Hyperplane&#xff09;&#xff1a;在高维空间中&#xff0c;将数据…...

Springboot应用的信创适配

CentOS7在2024.6.30停止维护后&#xff0c;可替代的Linux操作系统-CSDN博客 全面国产化之路-信创-CSDN博客 信创适配评测-CSDN博客 Springboot应用的信创适配 Springboot应用的信创适配&#xff0c;如上图所示需要适配的很多&#xff0c;从硬件、操作系统、中间件&#xff08…...

TypedDict 解析

TypedDict 解析 文章目录 TypedDict 解析1. 类型安全性2. 可读性3. 可维护性TypedDict 的解决方案没有 TypedDict 会发生什么&#xff1f;使用 TypedDict 的优势 TypedDict 应用场景1. 配置文件解析2. API 数据解析3. 数据库记录表示4. 表单数据验证5. 大型团队协作6. 静态类型…...

Windows11和Ubuntu22双系统安装指南

一、需求描述 台式机电脑&#xff0c;已有Windows11操作系统&#xff0c;想要安装Ubuntu22系统&#xff08;版本任意&#xff09;。其中Windows安装在Nvme固态上&#xff0c;Ubuntu安装在Sata固态上&#xff0c;双盘双系统。开机时使用Grub控制进入哪个系统&#xff0c;效果图…...

Dockerfile-php7.4.33

# 使用一个包含基本编译工具的基础镜像 FROM ubuntu:latestRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \echo "Asia/Shanghai" > /etc/timezone# 更新包列表并安装必要的编译工具和库 RUN apt-get update && apt-get i…...