Project Icon

spring-ai

Spring应用智能化开发框架

Spring AI是一个面向Spring开发者的AI开发框架,提供友好API和抽象层,简化AI应用开发流程。该项目集成了OpenAI、Azure OpenAI等多种主流AI模型,支持向量数据库、提示工程和文档处理等功能。开发者可借助Spring AI为应用添加聊天机器人、文本生成、知识问答等智能化特性。

Spring AI 构建状态

欢迎来到Spring AI项目!

Spring AI项目为开发AI应用程序提供了一个Spring友好的API和抽象。

让我们让你的@Beans变得智能吧!

更多信息请参阅我们的Spring AI参考文档

重大变更

  • 请参阅升级说明了解如何升级到1.0.0.M1或更高版本。

项目链接

教育资源

一些精选视频。在YouTube上搜索更多!

  • Spring小贴士:Spring AI
    观看Spring小贴士视频
  • Devoxx 2023上的Spring AI概述
    观看Devoxx 2023视频
  • 介绍Spring AI - 为你的Spring应用添加生成式AI
    观看视频

入门

请参阅入门指南了解如何添加依赖项的说明。

注意,新的Spring CLI项目让你可以通过两个简单的步骤开始,这里有详细描述

  1. 安装Spring CLI
  2. 在终端中输入spring boot new --from ai --name myai

手动添加依赖项

请注意,主要有两个步骤。

  1. 将Spring Milestone和Snapshot仓库添加到你的构建系统中
  2. 添加Spring AI BOM
  3. 添加依赖项,包括你需要的特定AI模型、向量数据库或其他组件依赖。

概述

尽管AI有着悠久的历史,但Java在这个领域的作用相对较小。 这主要是因为历史上依赖于C/C++等语言开发的高效算法,而Python则充当了访问这些库的桥梁。 大多数ML/AI工具都是围绕Python生态系统构建的。 然而,最近生成式AI的进展,尤其是OpenAI的ChatGPT等创新,使得通过HTTP与预训练模型交互变得流行。 这消除了对C/C++/Python库的大部分依赖,为使用Java等编程语言打开了大门。

Python库LangChainLlamaIndex已成为实现生成式AI解决方案的流行选择,并可以在其他编程语言中实现。 这些Python库与Spring项目有一些共同的主题,例如:

  • 可移植的服务抽象
  • 模块化
  • 可扩展性
  • 减少样板代码
  • 与各种数据源集成
  • 常见用例的预构建解决方案

受这些库的启发,Spring AI项目旨在为Spring开发者在AI领域提供类似的体验。

请注意,Spring AI API并不是LangChain或LlamaIndex的直接移植。如果你熟悉这两个项目,你会发现API有显著的不同,尽管概念和想法相当可移植。

功能概述

这是一个高层次的功能概述。 已实现的功能奠定了基础,后续更复杂的功能将建立在这些基础之上。

你可以在参考文档中找到更多详细信息。

与AI模型交互

ChatClient: Spring AI的一个基础功能是用于与生成式AI模型交互的可移植客户端API。使用这个可移植API,你可以最初针对一个AI聊天模型,例如OpenAI,然后轻松地将实现切换到另一个AI聊天模型,例如Amazon Bedrock的Anthropic模型。必要时,你还可以使用非可移植的模型选项。

Spring AI支持许多AI模型。概述请参见此处。目前支持的具体模型包括:

  • OpenAI
  • Azure OpenAI
  • Amazon Bedrock (Anthropic, Llama, Cohere, Titan, Jurassic2)
  • Hugging Face
  • Google VertexAI (PaLM2, Gemini)
  • Mistral AI
  • Stability AI
  • Ollama
  • PostgresML
  • Transformers (ONNX)
  • Anthropic Claude3
  • MiniMax
  • Moonshot

提示: 与AI模型交互的核心是提示,它为AI提供了具体的指令。 制作有效的提示既是一门艺术也是一门科学,由此产生了"提示工程"这门学科。 这些提示通常利用模板引擎,在预定义的文本中使用占位符轻松替换数据。

在我们的概念指南中了解更多关于提示的信息。 要了解Prompt类,请参阅Prompt API指南

提示模板: 提示模板支持创建提示,特别是在使用模板引擎时。

在我们的概念指南中深入了解PromptTemplates。 有关PromptTemplate的实践指南,请参阅PromptTemplate API指南

输出解析器: AI模型的输出通常是原始的java.lang.String值。输出解析器将这些原始字符串重构为更适合程序员使用的格式,如CSV或JSON。

在我们的概念指南中获取关于输出解析器的见解。 有关实现细节,请访问StructuredOutputConverter API指南

整合你的数据

将专有数据整合到生成式AI中而无需重新训练模型是一个突破。 重新训练模型,尤其是那些有数十亿参数的模型,由于需要专门的硬件而具有挑战性。 "上下文内"学习技术提供了一种更简单的方法来将你的数据注入预训练模型中,无论是来自文本文件、HTML还是数据库结果。 正确的技术对于开发成功的解决方案至关重要。

检索增强生成

检索增强生成(简称RAG)是一种能让你将数据带入预训练模型的模式。 RAG在"查询你的文档"用例中表现出色。

了解更多关于检索增强生成的信息。

将你的数据带入模型遵循提取、转换和加载(ETL)模式。 以下类和接口支持RAG的数据准备。

文档:

Document类封装了你的数据,包括文本和元数据,供AI模型使用。 虽然一个Document可以代表大量内容,如整个文件,但RAG方法 将内容分割成更小的片段以包含在提示中。 ETL过程使用DocumentReaderDocumentTransformerDocumentWriter接口,最终将数据存储在向量数据库中。 该数据库后续会识别与用户查询相关的数据片段。

文档读取器:

文档读取器从各种来源(如PDF、Markdown文件和Word文档)生成List<Document>。 鉴于许多来源是非结构化的,文档读取器通常基于内容语义进行分段,避免在表格或代码段内分割。 在初始创建List<Document>之后,数据流经转换器进行进一步细化。

文档转换器:

转换器进一步修改List<Document>,删除多余的数据(如PDF边距),或添加元数据(例如,主要关键词或摘要)。 另一个关键的转换是将文档细分以适应AI模型的令牌限制。 每个模型都有一个上下文窗口,指示其输入和输出数据限制。通常,一个令牌相当于约0.75个词。例如,在gpt-4-32k这样的模型名称中,"32K"表示令牌数。

文档写入器:

RAG中的最后一个ETL步骤涉及将数据段提交到向量数据库。 虽然DocumentWriter接口不专门用于向量数据库写入,但它是主要的实现类型。

向量存储: 向量数据库在将你的数据与AI模型结合使用时起着重要作用。 它们确定AI应该使用哪些文档部分来生成响应。 向量数据库的例子包括Chroma、Oracle、Postgres、Pinecone、Qdrant、Weaviate、Mongo Atlas和Redis。Spring AI的VectorStore抽象允许在数据库实现之间轻松切换。

克隆仓库

这个仓库包含大型模型文件。 要克隆它,你必须:

  • 忽略大文件(不会影响spring-ai的行为):GIT_LFS_SKIP_SMUDGE=1 git clone git@github.com:spring-projects/spring-ai.git
  • 或在克隆仓库之前安装Git Large File Storage

构建

要运行单元测试并构建:

./mvnw clean package

要包括集成测试进行构建。 在运行之前设置OpenAI和Azure OpenAI的API密钥环境变量。

./mvnw clean verify -Pintegration-tests

运行特定的集成测试,最多允许两次尝试成功。当托管服务不可靠或超时时,这很有用。

./mvnw -pl vector-stores/spring-ai-pgvector-store -Pintegration-tests -Dfailsafe.rerunFailingTestsCount=2 -Dit.test=PgVectorStoreIT verify

构建文档

./mvnw -pl spring-ai-docs antora

然后文档位于spring-ai-docs/target/antora/site/index.html目录中

使用java-format插件重新格式化

./mvnw spring-javaformat:apply

使用license-maven-plugin更新许可证头中的年份

./mvnw license:update-file-header -Plicense

使用javadoc:javadoc检查javadocs

./mvnw javadoc:javadoc -Pjavadoc
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号