Spring AI

Spring AI

文章目录

  • Spring AI
    • 关于 Spring AI
    • 使用
      • Spring CLI
      • Spring Initializr
      • 添加 Milestone 和 Snapshot Repositories
      • 依赖管理
      • 为特定组件添加依赖项
        • Embeddings Models
        • Chat Models
        • Image Generation Models
        • Vector Databases
    • 示例工程


关于 Spring AI

  • github : https://github.com/spring-projects/spring-ai
  • 官方文档:https://docs.spring.io/spring-ai/reference/

  • Spring 中文网 - Spring AI 简介
    https://springdoc.cn/spring-ai-intro/

Spring AI 项目旨在简化 包含AI 功能的 应用程序的开发,而不会带来 不必要的复杂性。
该项目的灵感来自著名的Python项目,如LangChain和LlamaIndex,但Spring AI并不是这些项目的直接端口。
Spring AI 相信,下一波Generative AI应用程序将不仅面向Python开发人员,而且将在许多编程语言中无处不在。

Spring AI的核心是 提供抽象,作为开发人工智能应用程序的基础。
这些抽象有多个实现,能够以最小的代码更改实现简单的组件交换。

Spring AI提供以下功能:

  • 支持所有主要的模型,如OpenAI、微软、亚马逊、谷歌和Huggingface。
  • 支持的模型类型有聊天和文本到图像,还有更多。
  • 跨AI 提供 的 可移植聊天API 和 嵌入模型。同时支持同步和流API选项。还支持下拉访问特定于型号的功能。
  • 人工智能模型输出到POJO的映射。
  • 支持所有主要的向量数据库提供商,如Azure Vector Search、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Qdrant、Redis和Weaviate
  • 跨矢量存储提供商的可移植API,包括一个新的 类似SQL 的元数据过滤器API,它也是可移植的。
  • 函数调用
  • 用于AI模型和矢量存储的Spring Boot自动配置和启动器。
  • 用于数据工程的ETL框架

此功能集允许您实现常见用例,如“文档问答”或“与文档聊天”


使用

本节提供了如何开始使用Spring AI的切入点。

您应该根据自己的需要,按照以下各节中的步骤进行操作。


Spring CLI

Spring CLI 详见:https://docs.spring.io/spring-cli/reference/index.html

Spring CLI 简化了直接从终端创建新应用程序的过程。

与熟悉JavaScript生态系统的用户使用的 create-react-app 命令一样,Spring CLI提供了一个 spring boot new 命令来创建基于Spring的项目。

Spring CLI还提供了将外部代码库集成到当前项目中的功能,以及许多其他功能。

重要的是要理解,“Spring CLI”是一个与“Spring Boot CLI”不同的项目,每个项目都有自己的一组功能。


要开始创建Spring AI应用程序,请执行以下步骤:

1、下载最新的Spring CLIRelease并遵循安装说明.
2、要创建一个简单的基于OpenAI的应用程序,请使用以下命令:

spring boot new --from ai --name myai
Copied!

3、要将相同的简单AI 应用程序添加到现有项目中,请执行:

spring boot add ai
Copied!

Spring CLI允许用户定义自己的项目目录,定义可以创建哪些项目或将其添加到现有代码库中。


Spring Initializr

前往start.spring.io并选择要在新应用程序中使用的AI模型和矢量存储。

添加 Milestone 和 Snapshot Repositories

如果您喜欢手动添加依赖项片段,请按照以下部分中的说明进行操作。

要使用Milestone 和 Snapshot版本,您需要在构建文件中添加对 Spring Milestone 和/或Snapshot 存储库的引用。

对于Maven,根据需要添加以下存储库定义:

  <repositories>
    <repository>
      <id>spring-milestones</id>
      <name>Spring Milestones</name>
      <url>https://repo.spring.io/milestone</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>spring-snapshots</id>
      <name>Spring Snapshots</name>
      <url>https://repo.spring.io/snapshot</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
  </repositories>
Copied!

对于 Gradle,添加如下:

repositories {
  mavenCentral()
  maven { url 'https://repo.spring.io/milestone' }
  maven { url 'https://repo.spring.io/snapshot' }
}
Copied!

依赖管理

Spring AI Bill of Materials (BOM) 声明了给定版本的Spring AI所使用的所有依赖项的推荐版本。

使用应用程序构建脚本中的BOM可以避免您自己指定和维护依赖项版本。

相反,您使用的BOM的版本决定了所使用的依赖关系版本。它还确保默认情况下使用受支持和测试的依赖关系版本,除非您选择覆盖它们。

如果您是Maven用户,您可以通过将以下内容添加到pom.xml文件中来使用BOM-

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>0.8.1-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
Copied!

Gradle用户还可以通过利用Gradle(5.0+)本机支持 使用Maven BOM声明依赖关系约束,来使用Spring AI BOM。

这是通过将“平台”依赖关系 处理程序方法,添加到Gradle构建脚本的依赖关系部分来实现的。

如下面的片段所示,然后可以为您希望使用的一个或多个spring-ai模块(例如 spring-ai-openai)声明Starter依赖项的无版本声明。

dependencies {
  implementation platform("org.springframework.ai:spring-ai-bom:0.8.1-SNAPSHOT")
  // Replace the following with the starter dependencies of specific modules you wish to use
  implementation 'org.springframework.ai:spring-ai-openai'
}
Copied!

为特定组件添加依赖项

文档中的以下每个部分都显示了 需要添加到项目构建系统中的依赖项。

Embeddings Models
  • Embeddings API
    • Spring AI OpenAI Embeddings
    • Spring AI Azure OpenAI Embeddings
    • Spring AI Ollama Embeddings
    • Spring AI Transformers (ONNX) Embeddings
    • Spring AI PostgresML Embeddings
    • Spring AI Bedrock Cohere Embeddings
    • Spring AI Bedrock Titan Embeddings
    • Spring AI VertexAI Embeddings
    • Spring AI MistralAI Embeddings

Chat Models
  • Chat Completion API
    • OpenAI Chat Completion (streaming and function-calling support)
    • Microsoft Azure Open AI Chat Completion (streaming and function-calling support)
    • Ollama Chat Completion
    • HuggingFace Chat Completion (no streaming support)
    • Google Vertex AI PaLM2 Chat Completion (no streaming support)
    • Google Vertex AI Gemini Chat Completion (streaming, multi-modality & function-calling support)
    • Amazon Bedrock
      • Cohere Chat Completion
      • Llama2 Chat Completion
      • Titan Chat Completion
      • Anthropic Chat Completion
    • MistralAI Chat Completion (streaming and function-calling support)

Image Generation Models
  • Image Generation API
    • OpenAI Image Generation
    • StabilityAI Image Generation

Vector Databases
  • Vector Database API
    • Azure Vector Search - The Azure vector store.
    • ChromaVectorStore - The Chroma vector store.
    • MilvusVectorStore - The Milvus vector store.
    • Neo4jVectorStore - The Neo4j vector store.
    • PgVectorStore - The PostgreSQL/PGVector vector store.
    • PineconeVectorStore - PineCone vector store.
    • QdrantVectorStore - Qdrant vector store.
    • RedisVectorStore - The Redis vector store.
    • WeaviateVectorStore - The Weaviate vector store.
    • SimpleVectorStore - A simple (in-memory) implementation of persistent vector storage, good for educational purposes.

示例工程

You can clone these projects on GitHub to get started.

你可以在GitHub上克隆这些项目 来开始。

  • OpenAI
    github.com/rd-1-2022/ai-openai-helloworld
  • Azure OpenAI
    • github.com/rd-1-2022/ai-azure-openai-helloworld
    • github.com/Azure-Samples/spring-ai-azure-workshop

2024-04-23(二)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.SpringCloud基础项目搭建利用RestTemplate实现远程调用

简单的微服务架构 父pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apa…

短信视频提取批量工具,免COOKIE,博主视频下载抓取,爬虫

痛点&#xff1a;关于看了好多市面的软件&#xff0c;必须要先登录自己的Dy号才能 然后找到自己的COOKIE 放入软件才可以继续搜索&#xff0c;并且无法避免长时间使用 会导致无法正常显示页面的问题。 有没有一种方法 直接可以使用软件&#xff0c;不用设置的COOKIE的方法呢 …

Linux驱动开发:掌握SPI通信机制

目录标题 1、SPI简介2、SPI通信机制3、Linux内核中的SPI支持4、SPI核心API5、SPI控制器驱动6、SPI设备驱动 7、编写SPI设备驱动8、调试SPI驱动 在Linux驱动开发中&#xff0c;串行外设接口(SPI)是一种常见的高速全双工通信协议&#xff0c;用于连接处理器和各种外设。本文将深入…

会声会影滤镜怎么用 会声会影滤镜效果怎么调 会声会影视频制作教程

在进行视频剪辑时&#xff0c;合理地运用滤镜效果可以提升视频的观赏性&#xff0c;使你的作品更加出彩。这篇文章便一起来学习会声会影滤镜怎么用&#xff0c;会声会影滤镜效果怎么调。 一、会声会影滤镜怎么用 使用会声会影的滤镜效果非常简单&#xff0c;以下是具体的操作…

Rust腐蚀服务器定制地图开服

Rust腐蚀服务器定制地图开服 大家好我是艾西一个做服务器租用的网络架构师。Rust腐蚀这个游戏有很多的插件mod作者&#xff0c;在地图制作这一块也是一样&#xff0c;有些好玩的地图可能大家在map网站找到了但是不知道怎么操作设置那么今天艾西给大家说下特定定制地图怎么弄。…

Penpad获Gate Labs以及Scroll联创Sandy的投资

近期&#xff0c;Scroll上的LaunchPad &聚合收益平台Penpad迎来了重磅利好&#xff0c;该平台在前不久获得了来自于Gate Las的融资&#xff0c;在此后其又获得了Scroll联合创始人Sandy的融资&#xff0c;这也让Penpad平台成为了近期Scroll生态中最值得关注的项目之一。 事实…

《生成式AI导论》学习笔记

1.课程定位 2.什么是生成式人工智慧&#xff1f; 3. 今日的生成式人工智慧厉害在哪里&#xff1f; 4.训练不了人工智慧&#xff1f;那我训练自己 5.训练不了人工智慧&#xff1f;你可以训练你自己&#xff08;中&#xff09;——拆解问题使用工具 6.大语言模型修炼史——第一阶…

毕业设计注意事项(2024届更新中)

1.开题 根据学院发的开题报告模板完成&#xff0c;其中大纲部分可参考资料 2.毕设 根据资料中的毕设评价标准&#xff0c;对照工作量 3.论文 3.1 格式问题 非常重要&#xff0c;认真对比资料中我发的模板&#xff0c;格式有问题&#xff0c;答辩输一半&#xff01; 以word…

从零开始的软件测试学习之旅(一)理论知识篇

软件测试学习理论知识 一.软件测试分类二.什么是软件测试?软件测试选择最为经典的几个模型一.瀑布模型 :将软件生命周期进行划分二.快速原型模型三.敏捷开发 三.软件测试流程一.软件测试模型测试流程: 四.软件测试分类项目环境测试与代码 一.软件测试分类 1.按开发规模 小型…

Linux 基础命令使用创建用户

浏览网站的时候图片&#xff0c;看到一个小练习。创建用户分别位于不同的用户组。 解答下面的题目 2、建立用户使用 useradd&#xff0c;设置密码使用passwd的命令。大概不会使用命令可以借助man来解答。 先建立用户组&#xff1a; groupadd group1 # group1 不存在先建立&…

nginx学习记录-URL Rewrite

1. URL Rewrite 1.1 基本概念 有的时候我们访问后台网站时&#xff0c;会携带大量的参数&#xff0c;比如/test?id1&#xff0c;像这种ur就会携带一些参数&#xff0c;由于有些参数名会携带一些敏感信息&#xff0c;我们希望在url中隐藏传递的参数&#xff0c;比如将/test?…

轻松搭建llama3Web 交互界面 - Ollama + Open WebUI

Ubuntu下安装&#xff1a;&#xff08;官网&#xff1a;Download Ollama on Linux&#xff09; curl -fsSL https://ollama.com/install.sh | sh 就运行起来ollama了&#xff0c;不放心可以用ollama serve查看一下 ollama run llama3 就可以跑起来了&#xff0c; 那么我们肯…

线性代数基础1向量

1、向量是什么 1.1、向量的定义 在数学中&#xff0c;向量&#xff08;也称为欧几里得向量、几何向量、矢量&#xff09;&#xff0c;指具有大小和方向的量。它可以形象化地表示为带箭头的线段。箭头所指&#xff1a;代表向量的方向&#xff1b;线段长度&#xff1a;代表向量的…

【程序创建的技巧】

文章目录 导语名词源代码目标代码&#xff08;object code&#xff09;可执行代码 创建源代码文件编译和链接UNIX编译和链接Linux编译和链接Windows命令行编译器Windows编译器 总结 导语 假设您编写了一个 C 程序。 如何让它运行起来呢&#xff1f; 具体的步骤取决于计算机环境…

CountDownLatch源码分析

1.创建 CountDownLatch latch new CountDownLatch(5); 2.latch.countDown(); 将count执行减一操作&#xff0c;当count为0时&#xff0c;等待中的线程会被唤醒 SIGNAL (值为-1)&#xff1a; 表示后继节点需要被唤醒。当一个节点释放锁的时候&#xff0c;会唤醒它的后继节点…

javaScript中的this 指向

this 指向总结 this 关键字是一个非常重要的语法点。 this 可以用在构造函数之中&#xff0c;表示实例对象。除此之外&#xff0c;this 还可以用在别的场合。但不管是什么场合&#xff0c;this 都有一个共同点&#xff1a;它总是返回一个对象。 关于 this 的指向&#xff0c…

基于Kepware的Hadoop大数据应用构建-提升数据价值利用效能

背景 Hadoop是一个由Apache基金会所开发的分布式系统基础架构&#xff0c;它允许用户在不需要深入了解分布式底层细节的情况下&#xff0c;开发分布式程序。Hadoop充分利用集群的威力进行高速运算和存储&#xff0c;特别适用于处理超大数据集。 Hadoop的生态系统非常丰富&…

如何利用美国站群服务器通过CN2线路优化中美之间的数据传输?

如何利用美国站群服务器通过CN2线路优化中美之间的数据传输? 随着全球化进程的不断推进&#xff0c;跨国企业和国际市场的拓展对数据传输速度和稳定性提出了更高的要求。特别是对于中美之间的数据传输&#xff0c;由于地理位置遥远和网络环境不同&#xff0c;优化数据传输变得…

风格迁移adaIN 和iT的adaLN

文章目录 BN、LN、IN、GN的区别![](https://img-blog.csdnimg.cn/direct/d38c005616f145cba2aa1c4c2e046be0.png)图像风格迁移adaINDiT adaLN BN、LN、IN、GN的区别 BatchNorm&#xff1a;batch方向做归一化&#xff0c;算NxHxW的均值&#xff0c;对小batchsize效果不好&#x…

二次封装el-carousel

我们创建了一个名为MyCarousel的组件&#xff0c;它接受el-carousel的一些常用属性作为props&#xff0c;并默认提供了一些值。我们还通过setup函数返回了所有props&#xff0c;以便它们可以在模板中被使用。 1.MyCarousel.vue组件 <!-- 轮播图片 --> <template>…
最新文章