零基礎搭建Spring AI本地開發環境指南

Spring AI 是一個 Spring 官方團隊主導的開源項目,旨在將生成式人工智能(Generative AI)能力無縫集成到 Spring 應用程序中。它提供了一個統一的、Spring 風格的抽象層,簡化了與各種大型語言模型(LLMs)、嵌入模型(Embedding Models)、向量數據庫以及相關 AI 服務的交互。

文檔位置:開始 (Getting Started) | Spring AI1.0.0中文文檔|Spring官方文檔|SpringBoot 教程|Spring中文網

應用場景

  1. 構建檢索增強生成(RAG)應用: 這是 Spring AI 最核心和成熟的應用場景。
    • 簡化流程: 提供開箱即用的 VectorStore 抽象(支持 Chroma, Pinecone, Milvus, Redis, Azure Vector Search, PostgreSQL/PGVector 等)和 AiClient 抽象。
    • 無縫集成: 輕松實現:
      1. 從文檔(Txt, PDF, Word, Markdown, JSON 等)加載、分割文本。
      2. 使用嵌入模型將文本塊轉換為向量。
      3. 將向量和元數據存儲到向量數據庫。
      4. 用戶提問時,檢索相關文本塊。
      5. 構造包含檢索結果的提示詞(Prompt)。
      6. 調用 LLM 生成基于上下文的回答。
    • 應用: 智能問答系統、企業知識庫助手、基于文檔的客服機器人、個性化學習工具。
  2. 簡化與 LLMs 的交互:
    • 統一 API: 使用相同的 AiClientChatClient 接口調用 OpenAI GPT, Anthropic Claude, Azure OpenAI, Google Vertex AI, Hugging Face 上的模型,甚至本地運行的 Ollama 模型。
    • 提示詞模板: 提供強大的提示詞模板引擎,支持參數化、條件判斷、循環等,方便構造復雜提示,管理提示詞版本。
    • 結構化輸出: 輕松將 LLM 的自然語言輸出解析為預定義的 Java 對象(POJOs),簡化后續處理。
    • 函數調用: 支持 LLM 的函數調用功能,讓模型能夠觸發執行應用程序中定義的方法。
    • 應用: 任何需要文本生成、摘要、翻譯、代碼生成、內容創作、對話交互的場景。
  3. 集成嵌入模型:
    • 統一抽象: 通過 EmbeddingClient 接口調用不同的文本嵌入模型提供商(OpenAI, Ollama, Transformers on Hugging Face, Azure OpenAI 等)。
    • 簡化向量化: 輕松將文本轉換為向量,為存儲到向量數據庫或進行相似性計算做準備。
    • 應用: 為 RAG 準備數據、實現語義搜索、內容聚類、去重。
  4. AI 驅動的數據分析和處理:
    • 利用 LLM 處理非結構化或半結構化文本數據(如日志、用戶反饋、調查報告),進行情感分析、主題提取、關鍵信息抽取、分類。
    • 將抽取出的結構化信息存儲到傳統數據庫或用于生成報告。
    • 結合 Spring Batch 進行批處理。
  5. 增強現有應用功能:
    • 智能客服/聊天機器人: 在現有的 Web 或移動應用中集成智能對話能力。
    • 內容生成與輔助: 在 CMS、博客平臺、郵件系統中輔助生成或潤色內容。
    • 個性化推薦: 利用用戶行為或內容的嵌入向量,實現更語義化的推薦(結合向量數據庫)。
  6. 快速原型驗證和實驗:
    • Spring AI 簡潔的 API 和 Spring Boot 的自動配置讓開發者能極其快速地搭建 AI 概念驗證(PoC)或最小可行產品(MVP)。
    • 方便嘗試不同的模型提供商、提示詞策略、RAG 配置。

入門學習

項目當前環境是Win11,SpringBoot, Ollama,開發工具是Idea,需要提前對這些有些了解,以及安裝Ollama

大模型本地搭建

為了方便本地的大模型搭建,這里選擇Ollama,Ollama是一個開源工具,專為在本地計算機上輕松運行大型語言模型(LLM) 而設計。好處是方便部署運行大模型,命令一鍵部署,安裝的話比較簡單,Download Ollama on macOS 官網下載自己需要的版本,然后下一步下一步就好。

安裝好后打開命令行輸入命令即可,常用命令:

# 下載并運行 llama3 模型 (8B 參數版本是默認)
ollama run llama3
# 下載并運行 llama3 70B 參數版本 (需要足夠內存/顯存)
ollama run llama3:70b
# 下載并運行 mistral 模型
ollama run mistral
# 查看已下載的模型列表
ollama list  

除了llama3模型外,也有其他不同類型的大模型,

點進去后直接復制命令即可。

這里使用的是最近比較流行的大模型deepseek-r1

ollama run deepseek-r1

出現下面內容說明啟動成功

java項目創建

項目基于springBoot運行,所以首先搭建SpringBoot項目

1、創建java Maven項目,然后寫入依賴

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.5</version>
</parent><repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository><repository><name>Central Portal Snapshots</name><id>central-portal-snapshots</id><url>https://central.sonatype.com/repository/maven-snapshots/</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>
</repositories><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>1.0.0-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

2、創建java子項目,這個項目是springboot項目,pom添加依賴

<dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-ollama</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

3、項目下創建包com.demo,然后創建啟動類DemoApplication,并添加注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

4、創建包controller,里面存放Controller類,作為測試接口

import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController
public class ChatController {private final OllamaChatModel chatModel;@Autowiredpublic ChatController(OllamaChatModel chatModel) {this.chatModel = chatModel;}@GetMapping("/ai/generate")public Map<String,String> generate(@RequestParam(value = "message") String message) {return Map.of("generation", this.chatModel.call(message));}}

5、創建Resource包,里面創建application.yml配置文件,添加Spring ai配置,ollama是由于要連接ollama,base-url是當前ollama服務開啟后的地址,chat.model配置的是當前啟動的模型,當前啟動的deepseek-r1,如果你用的是其他模型,這里需要更換下

spring:ai:ollama:base-url: http://localhost:11434chat:model: deepseek-r1

項目搭建完后效果

config包下是后面的內容,現在不用管

6、啟動本地大模型

ollama run deepseek-r1

7、運行DemoApplication的main函數啟動,啟動正常后使用API訪問工具進行測試,這里使用的是Apipost,然后使用API測試工具訪問接口,這里用的時Apipost,Apipost 是一款國產的、一體化、全流程的 API 協作開發與測試平臺,類似PostMan,安裝直接去官網下載就好,如果使用其他的測試方案也行,直接能測接口就好

填寫完參數后,直接運行就好

結束語

Spring ai主要針對的是當下流行的大模型,根據不同的大模型處理方案提供了不同的接口,簡化java開發在使用大模型時的代碼,根據這塊估計是以后java開發常備的一個技能。

下一篇是如何使用java,針對大模型的輸出的內容進行優化,輸出符合自己情況的內容,使用Spring Ai RAG模塊,使LLM基于文檔內容進行生成

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86168.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86168.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86168.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

windows登錄系統配置雙因子認證的解決方案

在數字化浪潮席卷全球的今天&#xff0c;安全如同氧氣般不可或缺。Verizon《2023年數據泄露調查報告》指出&#xff0c;80%的黑客攻擊與登錄憑證失竊直接相關。當傳統密碼防護變得千瘡百孔&#xff0c;企業如何在身份驗證的戰場上贏得主動權&#xff1f;答案就藏在"雙保險…

Java數據結構——線性表Ⅱ

一、鏈式存儲結構概述 1. 基本概念&#xff08;邏輯分析&#xff09; 核心思想&#xff1a;用指針將離散的存儲單元串聯成邏輯上連續的線性表 設計動機&#xff1a;解決順序表 "預先分配空間" 與 "動態擴展" 的矛盾 關鍵特性&#xff1a; 結點空間動態…

技術基石:SpreadJS 引擎賦能極致體驗

在能源行業數字化轉型的浪潮中&#xff0c;青島國瑞信息技術有限公司始終以技術創新為核心驅動力&#xff0c;不斷探索前沿技術在能源領域的深度應用。其推出的 RCV 行列視生產數據應用系統之所以能夠在行業內脫穎而出&#xff0c;離不開背后強大的技術基石 ——SpreadJS 引擎。…

Typora - Typora 打字機模式

Typora 打字機模式 1、基本介紹 Typora 打字機模式&#xff08;Typewriter Mode&#xff09;是一種專注于當前寫作行的功能 打字機模式會自動將正在編輯的行保持在屏幕中央&#xff0c;讓用戶更集中注意力&#xff0c;類似于傳統打字機的體驗 2、開啟方式 點擊 【視圖】 -…

3.0 compose學習:MVVM框架+Hilt注解調用登錄接口

文章目錄 前言&#xff1a;1、添加依賴1.1 在settings.gradle.kts中添加1.2 在應用級的build.gradle.kts添加插件依賴1.3 在module級的build.gradle.kts添加依賴 2、實體類2.1 request2.2 reponse 3、網絡請求3.1 ApiService3.2 NetworkModule3.3 攔截器 添加token3.4 Hilt 的 …

git學習資源

動畫演示&#xff1a;Learn Git Branching 終極目標&#xff08;能看懂即入門&#xff09;&#xff1a;git 簡明指南 Git 教程 | 菜鳥教程

C++ 第二階段:模板編程 - 第一節:函數模板與類模板

目錄 一、模板編程的核心概念 1.1 什么是模板編程&#xff1f; 二、函數模板詳解 2.1 函數模板的定義與使用 2.1.1 基本語法 2.1.2 示例&#xff1a;通用交換函數 2.1.3 類型推導規則 2.2 函數模板的注意事項 2.2.1 普通函數與函數模板的調用規則 2.2.2 隱式類型轉換…

Docker 報錯“x509: certificate signed by unknown authority”的排查與解決實錄

目錄 &#x1f527;Docker 報錯“x509: certificate signed by unknown authority”的排查與解決實錄 &#x1f4cc; 問題背景 &#x1f9ea; 排查過程 步驟 1&#xff1a;確認加速器地址是否可訪問 步驟 2&#xff1a;檢查 Docker 是否真的使用了鏡像加速器 步驟 3&…

達夢以及其他圖形化安裝沒反應或者報錯No more handles [gtk_init_check() failed]

本人安裝問題和解決步驟如下&#xff0c;僅供參考 執行 DMInstall.bin 報錯 按照網上大部分解決方案 export DISPLAY:0.0 xhost 重新執行 DMInstall.bin&#xff0c;無報錯也無反應 安裝xclock測試也是同樣效果&#xff0c;無報錯也無反應 最開始猜測可能是連接工具問題&a…

項目節奏不一致時,如何保持全局平衡

項目節奏不一致時&#xff0c;如何保持全局平衡的關鍵在于&#xff1a;構建跨項目協調機制、合理配置資源、建立共享節奏看板、優先明確戰略驅動、引入緩沖與預警機制。其中&#xff0c;構建跨項目協調機制尤為關鍵&#xff0c;它能將各項目的排期、優先級和風險實時聯動&#…

macOS - 安裝微軟雅黑字體

文章目錄 1、下載資源2、安裝3、查看字體 app4、卸載字體 macOS 中打開 Windows 傳輸過來的文件的時候&#xff0c;經常會提示 xxx 字體缺失。下面以安裝 微軟雅黑字體為例。 1、下載資源 https://github.com/BronyaCat/Win-Fonts-For-Mac 2、安裝 雙擊 Fonts 文件夾下的 msy…

ArkUI-X資源分類與訪問

應用開發過程中&#xff0c;經常需要用到顏色、字體、間距、圖片等資源&#xff0c;在不同的設備或配置中&#xff0c;這些資源的值可能不同。 應用資源&#xff1a;借助資源文件能力&#xff0c;開發者在應用中自定義資源&#xff0c;自行管理這些資源在不同的設備或配置中的…

11-StarRocks故障診斷FAQ

StarRocks故障診斷FAQ 概述 本文檔整理了StarRocks故障診斷過程中常見的問題和解決方案,涵蓋了故障排查、日志分析、性能診斷、問題定位等各個方面,幫助用戶快速定位和解決StarRocks相關問題。 故障排查FAQ Q1: 如何排查連接故障? A: 連接故障排查方法: 1. 網絡連通性…

敏捷項目管理怎么做?4大主流方法論對比及工具適配方案

在傳統瀑布式項目管理中&#xff0c;需求定義、設計、開發、測試等環節如同工業流水線般嚴格線性推進&#xff0c;展現出強大的流程控制能力。不過今天的軟件迭代周期已壓縮至周級乃至日級&#xff0c;瀑布式管理難以應對需求的快速變化&#xff0c;敏捷式項目管理則以“小步快…

解決YOLO模型從Python遷移到C++時目標漏檢問題——跨語言部署中的關鍵陷阱與解決方案

問題背景 當我們將Python訓練的YOLO模型部署到C環境時&#xff0c;常遇到部分目標漏檢問題。這通常源于預處理/后處理差異、數據類型隱式轉換或模型轉換誤差。本文通過完整案例解析核心問題并提供可落地的解決方案。 一、常見原因分析 預處理不一致 Python常用OpenCV&#xff…

【2025CCF中國開源大會】開放注冊與會議通知(第二輪)

點擊藍字 關注我們 CCF Opensource Development Committee 2025 CCF中國開源大會 由中國計算機學會主辦的 2025 CCF中國開源大會&#xff08;CCF ChinaOSC&#xff09;擬于 2025年8月2日-3日 在上海召開。本屆大會以“蓄勢引領、眾行致遠”為主題&#xff0c;由上海交通大學校長…

本地聊天室

測試版還沒測試過&#xff0c;后面更新不會繼續開源&#xff0c;有問題自行修復 開發環境: PHP版本7.2 Swoole擴展 本地服務器環境&#xff08;如XAMPP、MAMP&#xff09; 功能說明: 注冊/登錄系統&#xff0c;支持本地用戶數據存儲 ? 發送文本、圖片和語音消息 ? 實…

golang學習隨便記x-調試與雜類(待續)

編譯與調試 調試時從終端鍵盤輸入 調試帶有需要用戶鍵盤輸入的程序時&#xff0c;VSCode報錯&#xff1a;Unable to process evaluate: debuggee is running&#xff0c;因為調試器不知道具體是哪個終端輸入。需要配置啟動文件 .vscode/launch.json 類似如下&#xff08;注意…

MultipartFile、File 和 Mat

1. MultipartFile (來自 Spring Web) 用途&#xff1a; 代表通過 multipart 形式提交&#xff08;通常是 HTTP POST 請求&#xff09;接收到的文件。 它是 Spring Web 中用于處理 Web 客戶端文件上傳的核心接口。 關鍵特性&#xff1a; 抽象&#xff1a; 這是一個接口&#xf…

.NET 9.0 SignalR 支持修剪和原生 AOT

什么是 SignalR&#xff1f; SignalR 是一個庫&#xff0c;可用于向應用程序添加實時 Web 功能。它提供了一個簡單的 API&#xff0c;用于創建可從服務器和客戶端調用的服務器到客戶端遠程過程調用 (RPC)。現在&#xff0c;SignalR 在 .NET 8.0 和 .NET 9.0 中支持修剪和原生 …