歡迎來到 Spring AI 計畫!
Spring AI 計畫為開發 AI 應用程式提供了 Spring 友好的 API 和抽象。
讓你變得
@Beans
聰明起來!
有關更多資訊,請參閱我們的 Spring AI 參考文件 。
計畫連結
文件
問題
討論 - 如果您有問題、建議或反饋,請轉到此處!
從 0.7.1-SNAPSHOT 升級
教育資源
關註 Azure OpenAI 的研討會材料
該研討會包含從「hello world」到「檢索增強生成」的分步範例
一些精選的視訊。搜尋 YouTube!了解更多。
Spring 技巧:Spring AI
Spring AI 概述 @ Devoxx 2023
Spring AI 簡介 - 將生成式 AI 添加到您的 Spring 應用程式中
入門
請參閱 入門指南 以獲取有關添加依賴項的說明。
請註意,新的 Spring CLI 計畫讓您可以透過兩個簡單的步驟來啟動和執行, 詳細描述請參見此處 。
安裝 Spring CLI
輸入
spring boot new --from ai --name myai
你的終端
手動添加依賴項
請註意,有兩個主要步驟。
將 Spring Milestone 和 Snapshot 儲存庫添加到您的構建系統中 。
添加 Spring AI BOM
添加 特定 AI 模型、向量資料庫或您需要的其他元件依賴項的依賴項。
概述
盡管人工智慧有著悠久的歷史,但 Java 在該領域的作用相對較小。這主要是由於歷史上依賴於用 C/C++ 等語言開發的高效演算法,而 Python 則充當存取這些庫的橋梁。大多數 ML/AI 工具都是圍繞 Python 生態系構建的。然而,在 OpenAI 的 ChatGPT 等創新的推動下,生成式 AI 的最新進展已經普及了透過 HTTP 與預訓練模型的互動。這消除了對 C/C++/Python 庫的大部份依賴,並為使用 Java 等程式語言開啟了大門。
Python 庫 LangChain 和 LlamaIndex 已成為實作生成式 AI 解決方案的熱門工具,並且可以用其他程式語言實作。這些 Python 庫與 Spring 計畫共享基礎主題,例如:
人員攜行式服務抽象
模組化
可延伸性
減少樣板程式碼
與多種資料來源整合
針對常見用例的預構建解決方案
Spring AI 計畫從這些庫中汲取靈感,旨在為 AI 領域的 Spring 開發人員提供類似的體驗。
請註意,Spring AI API 不是 LangChain 或 LlamaIndex 的直接埠。如果您熟悉這兩個計畫,您將看到 API 中的顯著差異,盡管概念和想法相當可移植。
功能概述
這是高級功能概述。所實作的功能奠定了基礎,後續更復雜的功能將在此基礎上構建。
您可以在 參考文件中找到更多詳細資訊
與 AI 模型互動
ChatClient: Spring AI 的一個基本功能是一個可移植的客戶端 API,用於與生成式 AI 模型進行互動。借助此人員攜行式 API,您可以首先針對一種 AI 聊天模型(例如 OpenAI),然後輕松地將實作替換為另一種 AI 聊天模型(例如 Amazon Bedrock 的 Anthropic 模型)。必要時,您還可以下拉使用非人員攜行式型號選項。
Spring AI 支持多種 AI 模型。有關概述,請參見此處。目前支持的具體型號有
開放人工智慧
Azure 開放人工智慧
亞馬遜基巖(Anthropic、Llama2、Cohere、Titan、Jurassic2)
抱臉
谷歌 VertexAI(PaLM2、Gemini)
米斯特拉爾人工智慧
穩定性人工智慧
奧拉馬
PostgresML
變形金剛 (ONNX)
人類克勞德3
提示: AI 模型互動的核心是提示,它為 AI 提供采取行動的具體指令。制作有效的提示既是一門藝術也是一門科學,因此產生了「提示工程」學科。這些提示通常利用樣版引擎,使用占位符在預定義文本中輕松替換數據。
在我們的概念指南中 探索有關 提示 的更多資訊。要了解 Prompt 類,請參閱 Prompt API 指南 。
提示樣版: 提示樣版支持提示的建立,特別是在使用樣版引擎時。
深入研究我們的 概念指南 中的 PromptTemplates 。有關 PromptTemplate 的實踐指南,請參閱 PromptTemplate API 指南 。
輸出解析器:
AI 模型輸出通常作為原始
java.lang.String
值。輸出解析器將這些原始字串重組為對程式設計師更友好的格式,例如 CSV 或 JSON。
在我們的概念指南 中了解有關輸出解析器的見解 。有關實作詳細資訊,請存取 OutputParser API 指南 。
合並您的數據
將專有數據整合到生成人工智慧中而不需要重新訓練模型已經是一項突破。由於需要專門的硬體,重新訓練模型(尤其是具有數十億參數的模型)具有挑戰性。「上下文」學習技術提供了一種更簡單的方法,可以將數據(無論是來自文字檔案、HTML 還是資料庫結果)註入到預先訓練的模型中。正確的技術對於開發成功的解決方案至關重要。
檢索增強生成
檢索增強生成(簡稱 RAG)是一種使您能夠將數據引入預訓練模型的模式。RAG 擅長「查詢文件」用例。
了解有關 檢索增強生成的 更多資訊。
將數據引入模型遵循提取、轉換和載入 (ETL) 模式。後續的類和介面支持RAG的數據準備。
檔:
該類
Document
封裝了 AI 模型的數據,包括文本和後設資料。雖然文件可以表示大量內容(例如整個檔),但 RAG 方法將內容分割成較小的部份以包含在提示中。ETL 過程使用介面
DocumentReader
、
DocumentTransformer
、 和
DocumentWriter
,最後將數據儲存在向量資料庫中。該資料庫隨後辨識與使用者查詢相關的數據片段。
文件讀者:
文件閱讀器可
List<Document>
從多種來源生成文件,例如 PDF、Markdown 檔和 Word 文件。鑒於許多源都是非結構化的,文件閱讀器通常根據內容語意進行分段,避免表或程式碼部份內的拆分。初始建立後
List<Document>
,數據流經轉換器以進行進一步細化。
文件轉換器:
List<Document>
Transformer透過消除多余的數據(例如 PDF 頁邊距)或附加後設資料(例如主要關鍵字或摘要)來
進一步修改。
另一個關鍵的轉變是細分文件以適應人工智慧模型的令牌約束。每個模型都有一個上下文視窗,指示其輸入和輸出數據限制。通常,1 個令牌約等於 0.75 個單詞。例如,在 gpt-4-32k 等模型名稱中,「32K」表示令牌計數。
文件編寫者:
RAG 中的最後一個 ETL 步驟涉及將數據段送出到向量資料庫。盡管該
DocumentWriter
介面並非專門用於向量資料庫編寫,但它是主要的實作型別。
向量儲存:
向量資料庫有助於將您的數據與 AI 模型相結合。他們確定人工智慧應使用哪些文件部份來生成響應。向量資料庫的範例包括 Chroma、Postgres、Pinecone、Qdrant、Weaviate、Mongo Atlas 和 Redis。Spring AI 的
VectorStore
抽象允許在資料庫實作之間輕松轉換。
複制儲存庫
該儲存庫包含 大型模型檔 。要複制它,您必須:
忽略大檔(不會影響 spring-ai 的行為)
GIT_LFS_SKIP_SMUDGE=1 git clone [email protected]: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 :javadoc
./mvnw javadoc:javadoc -Pjavadoc
計畫地址: https://github.com/spring-projects/spring-ai.git
如果無法下載,請多次重新整理,還不行,就使用魔法上網