:::success 懂 AI 技术的小伙伴应该都听说过 LangChain 框架,它是基于 Python 语言实的集成了很多大预言模型的框架。 很多 java 工程师苦恼在 java 项目中还需要手撸代码。 如今,Spring 竟然支持 AI 了,集成很多主流模型,包括 OpenAI 、Gemini 等,终于 Java 有支持 AI 的 jar 包了,只需要配置文件配置上 api_key ,就可以在 Client 中调用 AI 大模型了。简直不要太香!
:::
官网资料
🔗 GitHub:https://github.com/spring-projects/spring-ai
🔗 文档:https://docs.spring.io/spring-ai/docs/
🔗 官网介绍:https://spring.io/projects/spring-ai
🔗 同类型工具langchain4j:https://github.com/langchain4j/langchain4j
概述
该Spring AI项目旨在简化包含人工智能功能的应用程序的开发,避免不必要的复杂性。Spring AI 是一个人工智能工程的应用框架。其目标是将 Spring 生态系统设计原则(例如可移植性和模块化设计)应用于 AI 领域,并推广使用 POJO 作为 AI 领域应用程序的构建块。
该项目从著名的 Python 项目(例如 LangChain 和 LlamaIndex)中汲取灵感,但 Spring AI 并不是这些项目的直接移植。该项目的成立相信下一波生成式人工智能应用程序不仅适用于 Python 开发人员,而且将在许多编程语言中普遍存在。
Spring AI 的核心提供了抽象,作为开发 AI 应用程序的基础。这些抽象有多种实现,可以通过最少的代码更改轻松进行组件交换。
Spring AI 提供的功能
- 支持所有主要模型提供商,例如 OpenAI、Microsoft、Amazon、Google 和 Huggingface。
- 支持的模型类型包括“聊天”和“文本到图像”,还有更多模型类型正在开发中。
- 跨 AI 提供商的可移植 API,用于聊天和嵌入模型。支持同步和流 API 选项。还支持下拉访问模型特定功能。
- AI 模型输出到 POJO 的映射。
- 支持所有主要矢量数据库提供商,例如 Azure 矢量搜索、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Qdrant、Redis 和 Weaviate
- 跨 Vector Store 提供商的可移植 API,包括同样可移植的新颖的类似 SQL 的元数据过滤器 API。
- 函数调用
- AI 模型和向量存储的 Spring Boot 自动配置和启动器。
- 数据工程的 ETL 框架【文档拆分】
此功能集可让您实现常见用例,例如“对文档进行问答”或“与文档聊天”。
特征
跨 AI 提供商的便携式 API 支持聊天、文本到图像和嵌入模型。支持同步和流 API 选项。还支持下拉访问特定于型号的功能。
支持的模型如下
聊天模型【Chat Models】
- OpenAI
- Azure Open AI
- Amazon Bedrock
- Cohere’s Command
- AI21 Labs’ Jurassic-2
- Meta’s LLama 2
- Amazon’s Titan
- Google Vertex AI Palm
- Google Gemini
- HuggingFace - access thousands of models, including those from Meta such as Llama2
- Ollama - run AI models on your local machine
- MistralAI
文生图模型【Text-to-image Models】
- OpenAI with DALL-E
- StabilityAI
向量化模型【Embedding Models】
- OpenAI
- Azure OpenAI
- Ollama
- ONNX
- PostgresML
- Bedrock Cohere
- Bedrock Titan
- Google VertexAI
- Mistal AI
转录(音频到文本)模型【Transcription (audio to text) Models】
- OpenAI
向量数据库【Vector Databases】
Vector Store API 提供跨不同提供商的可移植性,具有新颖的类似 SQL 的元数据过滤 API,可保持可移植性。
- Azure Vector Search
- Chroma
- Milvus
- Neo4j
- PostgreSQL/PGVector
- PineCone
- Redis
- Weaviate
- Qdrant
AI 模型和向量存储的Spring Boot 自动配置和启动器。
函数调用 您可以声明 java.util.FunctionOpenAI 模型的实现,以便在其提示响应中使用。您可以直接将这些函数作为对象提供,或者如果在应用程序上下文中注册为 @Bean,则可以引用它们的名称。此功能最大限度地减少了不必要的代码,并使 AI 模型能够请求更多信息来完成其响应。
支持的模型有:
- OpenAI
- Azure OpenAI
- VertexAI
- Mistral AI
文档拆分 ETL framework for Data Engineering
这就是 RAG 场景中,将知识库向量化之前做文档拆分的过程
- 我们的 ETL 框架的核心功能是促进使用向量存储将文档传输到模型提供者。 ETL 框架基于 Java 函数式编程概念,可帮助您将多个步骤链接在一起。
- 我们支持阅读各种格式的文档,包括 PDF、JSON 等。
- 该框架允许进行数据操作以满足您的需求。这通常涉及分割文档以遵守上下文窗口限制,并使用关键字增强它们以提高文档检索效率。
- 最后,处理后的文档存储在矢量数据库中,以便将来检索。
入门 Getting Started
:::color4 官网教程:https://docs.spring.io/spring-ai/reference/getting-started.html
:::
依赖管理
如果您是 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>
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'
}
添加特定组件的依赖项
文档中的以下每个部分显示了您需要添加到项目构建系统中的依赖项。
对于 OpenAI 聊天模型可引入
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
或您的 Gradlebuild.gradle构建文件。
dependencies {
implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
}
关键配置示例
spring.ai.openai.base-url=YOUR_PROXY_URL
spring.ai.openai.api-key=YOUR_API_KEY
spring.ai.openai.chat.options.model=gpt-3.5-turbo
spring.ai.openai.chat.options.temperature=0.7
完整介绍请看原文
https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html
langchain4j 与 SpringAI 对比评测
:::color3 🔗 SpringAI GitHub:https://github.com/spring-projects/spring-ai
🔗 langchain4j GitHub:https://github.com/langchain4j/langchain4j
:::
目的和愿景
- langchain4j:旨在简化将AI/LLM(大型语言模型)能力集成到 Java 应用程序中。通过提供统一的API,langchain4j使得开发者能够轻松地与各种LLM提供商(如OpenAI或Google)进行交互
- SpringAI:Spring AI项目的目标是简化包含人工智能功能的应用程序的开发过程,而无需引入不必要的复杂性。它提供了一套工具和库,帮助开发者更容易地构建AI驱动的应用程序。
技术实现
- langchain4j:作为一个Java实现的库,langchain4j使用了类似于Prompts(提示)、Chains(链)、Transformers(转换器)、Document Loaders(文档加载器)、Agents(代理)等概念,以便于开发者构建复杂的AI应用。
- SpringAI:Spring AI通过提供一系列与Spring框架集成的工具和库,使得在Spring环境中开发AI应用变得更加容易。它可能包括用于数据处理、模型训练和部署的组件。
集成和兼容性
- langchain4j:提供了与Spring Boot的集成方式,允许开发者在Spring Boot应用程序中使用langchain4j的功能。此外,langchain4j还支持与其他Java库和框架的集成。
- SpringAI:作为一个Spring项目,SpringAI自然与Spring生态系统紧密集成。它旨在为Spring开发者提供构建AI应用所需的一切,包括与Spring框架的深度集成。
社区和支持
- langchain4j:langchain4j有一个活跃的社区,开发者可以在GitHub上找到源代码,并参与到项目的开发中。此外,langchain4j也在社区中寻求反馈和贡献者,以促进项目的发展。
- SpringAI:SpringAI作为Spring生态系统的一部分,受益于Spring社区的强大支持。开发者可以期待稳定的文档、教程和社区支持。
应用场景
- langchain4j:特别适合需要将AI功能集成到Java应用程序中的开发者。它提供了与LLM服务的直接接口,使得构建基于语言的AI应用变得更加简单。
- SpringAI:适合那些已经在Spring生态系统中工作,希望添加AI功能的开发者。SpringAI提供了一套工具,使得在Spring环境中构建AI应用变得无缝。
总结
在选择langchain4j和SpringAI时,开发者应该考虑他们的具体需求、技术栈和项目目标。langchain4j为Java开发者提供了一个专注于LLM集成的解决方案,而SpringAI则为Spring开发者提供了一个全面的AI开发工具集。两者都有其独特的优势和社区支持,因此最佳选择将取决于开发者的个人偏好和项目需求。
学习更多关于 AI 大模型全栈知识👇
:::danger 🌈** AI大模型全栈通识课程**👇
:::
:::color1 🙋 个人介绍 **👉🏻**
:::
:::color5 🙋 AI 工具 **👉🏻**
:::
:::info 🙋 开源版知识库**👉🏻**
:::
:::warning 🙋 AI全栈通识课堂
:::
✅免责声明
素材来源于网络以及个人总结,仅供个人学习交流无商业用途,版本归原创者所有
如有侵权请及时与我联系(微信:AGI舰长-LHYYH0001)删除