认识Spring AI,带你进入Java AI的世界

948 阅读8分钟

写在前面

目前Spring AI 在高速发展的阶段,包括但不限于包名、类名、接口、实现、提供的能力等随着版本的不同也许会有所有改变,截止写本文时最新版本为1.0.0-SNAPSHOT,因此所有的介绍都是基于1.0.0-SNAPSHOT进行,如果后续有所变化,会在文章中更新,如果您想了解和学习请多多关注专栏内容。

概述

Spring AI 是 AI 工程的应用框架。其目标是将 Spring 生态系统设计原则(如可移植性和模块化设计)应用于 AI,并推广使用 POJO 作为 AI 领域应用程序的构建块。

Spring AI项目旨在简化开发包含人工智能功能的应用。隐藏技术实现上的复杂性,提供开发AI应用的基础抽象。且抽象有多种实现方式,使得组件互换变得容易,且代码更改最小。

Spring AI 的设计灵感来源自一些优秀的 Python 项目,如 LangChain。其创立基于一种信念:下一波生成式AI应用将不仅仅面向Python开发者,而是会在许多编程语言中无处不在。

一句话

Spring AI 仅是一个快速接入大模型实现智能应用的集成框架,本身并不是AI

- 更新于 2024/10/29, 内容引用Spring AI 官方文档 -

Spring AI 解决了AI集成的挑战:Connecting your enterprise Data and APIs with the AI Models. image.png

一张图

image.png 一张图概括了 Spring AI 的作用以及具备的能力!在使用上全部为开箱即用的Spring Starter。对于实现RAG应用需要将Spring AI提供的 ETL + 提示词模版 + 向量数据库 + 语言大模型组合开发。

能力

一、支持目前主流大语言模型平台,例如 OpenAI、Microsoft、Amazon、Google、Huggingface等

二、支持聊天、文本、图像 模型类型,未来会不断支持更多的类型 image.png 现在市面上大模型实在是太多,一般情况考虑安全性,选择国内大模型或者私有化部署大模型。选择的话也是选择头部公司或者独角兽非常强的大模型去使用。

三、支持嵌入模型

通俗易懂描述就是将文本、图像、音视频转换为带有语义的向量表示,这个向量通过嵌入模型来转换。

思考一个问题:为什么要转换为向量表示呢?

Spring AI框架集成的嵌入模型主要如下:

模型说明
QianFan百度公司提供的嵌入模型
ZhiPu AI清华智普提供的嵌入模型
Open AIOpenAI公司,业界最有名气的AI公司
Azure OpenAI微软公司提供的嵌入大模型
Ollama使用Ollama轻松的在本地部署各种大模型,比如部署嵌入模型
(ONNX) Transformers暂没研究
PostgresML是一个在PG数据库上的机器学习平台,它引入了一种称为 “数据库内”机器学习
的新范式。
允许您在 SQL 中执行许多 ML 任务,而无需在每个步骤中使用单独的工具。
Bedrock Cohere加拿大一家初创AI公司提供的一个领先的企业AI平台。
Bedrock Titan亚马逊推出的一款AI模型
Google VertexAI谷歌公司推出的
Mistal AI法国一家初创公司推出的AI模型,致力于构建大型通用人工智能(AGI)模型的
初创公司,由微软和英伟达提供支持

四、支持同步和流式通用API、支持访问特定功能API

五、支持LLMs结构化输出,如将大模型结果转换为POJO输出

  • 支持自定义POJO输出
  • 支持List结构输出
  • 支持Map结构输出

六、支持所有主流的向量数据库或平台,并支持元数据过滤API

内容更新于2024/10/29,Spring AI框架支持了更多的向量数据库

模型说明
Azure AI Service微软提供的系列人工智能服务,旨在帮助开发者和企业快速构建智能应用程序。其中就包含基于向量的存储和检索能力。
Azure Cosmos DB微软的全球分布式云数据库服务,专为任务关键型应用程序设计。其有一项基于磁盘的近似相邻搜索来增强矢量搜索性能的创新技术。实现对高维数据的高效且可缩放的相似性搜索。
Apache Cassandra真正开源分布式数据库,以线性可扩展性、经过验证的容错能力和低延迟而闻名,其向量相似性搜索(VSS)基于JVector库,可确保一流的性能和相关性。
Chroma开源嵌入数据库,它提供了存储文档嵌入、内容和元数据以及搜索这些嵌入(包括元数据筛选)的工具。
Elasticsearch基于Apache Lucene库的开源搜索和分析引擎,想必大家都很熟悉。
GemFire其是一种分布式内存中的键值存储,以极快的速度快速执行读写操作。它提供高度可用的并行消息队列、持续可用性和事件驱动型架构,可以不停机动态线性扩展。GemFire VectorDB扩展GemFire的嵌入存储能力。
Milvus开源向量数据库,在数据科学和机器学习领域引起了广泛关注。其突出特点之一在于它对向量索引和查询的强大支持。Milvus采用最先进的尖端算法来加速搜索
MongoDB AtlasMongoDB 提供的完全托管式云数据库,可在AWS、Azure和GCP中使用。
Neo4j开源的NoSQL图形数据库。它是一个完全事务性的数据库(ACID)
OpenSearch开源搜索和分析引擎,最初是从Elasticsearch分叉而来的。其支持向量、词法和混合搜索功能。
Oracle大家应该很熟悉的关系型数据库,仅在23.4+版本才支持
PGvectorPGvector是postgreSQL的开源扩展,支持存储和搜索机器学习生成的嵌入。能够识别精确和近似的最近邻,与PG数据库无缝协作。
Pinecone一种流行的基于云的向量数据库,可让您有效地存储和搜索矢量。
Qdrant开源、高性能的矢量搜索引擎/数据库。
Redis这个对开发人员是相当熟悉了。不再多介绍。
SAP Hana多模数据库管理系统,它能够帮助架构师和开发者大规模构建和部署下一代智能数据应用。
Typesense开源的、容忍拼写错误的搜索引擎
Weaviate开源的向量数据库。它允许您存储您最喜欢的ML模型中的数据对象和向量嵌入,并无缝扩展到数十亿个数据对象。提供了用于存储文档嵌入、内容和元数据以及搜索这些嵌入(包括元数据筛选)的工具。

虽然向量存储框架这么多,我们在实际的选择可能是有限的,考虑到安全、开源与否、公司内部是否允许或者是否支持、有没有这方面专业的人才等客观原因。一般我们选择也是我们最熟悉的、最常用的那几种向量数据库来使用。

七、支持函数调用,但不支持动态函数调用LangChain4j框架支持动态函数调用,不知道SpringAI后续会不会支持

工具/函数调用允许模型请求执行客户端工具和函数,根据需要访问必要的实时信息。

  • OpenAI
  • Ollama
  • Mistral AI
  • Groq
  • Google VertexAI Gemini
  • Azure OpenAI
  • Antropic Claude

八、支持自动装配和启动器(与Spring Boot完美集成)

Spring AI 支持Spring Boot那套标准,对于开发者学习成本低、上手容易!

九、数据工程的ETL(提取、转换、加载)框架

ETL 框架基于 Java 函数式编程概念,可帮助您将多个步骤链接在一起。核心功能使用向量存储将文档传输到大模型。支持阅读各种格式文档,包括PDF,JSON等。

总结

通过本篇文章大家对Spring AI框架有一个全面的认识,这个框架是干什么的,能干哪些事。也许大家对其中的一些概念,比如嵌入模型什么?函数调用是干啥的,使用的场景,解决的问题是什么?向量数据库又是干什么的?等等有疑问,请关注专栏,后续的文章会对每部分内容都进行详细的讲解说明。

下一篇文章我们将介绍Spring AI用到的AI相关的概念,只有了解了相关的概念才能更加深入了解 Spring AI 框架的设计和原理。

希望大家可以进行阅读 # 01. Spring AI 使用的AI相关概念(二)

文档

如果大家对文章的内容有疑问或者想要了解哪部分内容,多多在评论,我们共同成长!!!也希望大家多多关注,评论,这是对我的最大鼓励!!!