iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
生成式 AI

使用 Spring AI 打造企業 RAG 知識庫系列 第 16

Day16 - 魔鏡~誰是Spring AI的專家?

  • 分享至 

  • xImage
  •  

這才是真的催眠

https://ithelp.ithome.com.tw/upload/images/20240815/20161290jSx2KpF04s.png
AI 本身是無狀態推論,也就是每次的結果都是獨立不會互相影響,這表示 AI 不會有任何記憶,但是可以根據提供的資料來進行推論,這就是 In-Context Learning

介紹 In-Context Learning

In-Context Learning 是一種機器學習方法,特別是在大型語言模型中應用廣泛。它允許模型在不進行參數更新的情況下,通過提供少量示例或指令,快速適應新的任務和領域。這種學習方式的核心在於利用上下文信息來理解和生成語言,而不是依賴大量的標註數據進行訓練。
In-Context Learning 最初在 GPT-3 的論文中被提出,作為一種讓語言模型根據給定實例理解任務的方式。模型通過接收一系列輸入輸出對(即提示),在這些提示的基礎上進行推理和生成回應。
具體來說,In-Context Learning 允許使用者為新案例快速構建模型,而無需為每個任務微調和存儲新參數。這種方法通常只需少量的訓練示例就能使模型正常運作,極大地提升了模型在小樣本學習上的能力。

In-Context Learning 的主要特點:
無需參數更新:In-Context Learning 使得模型可以在不改變其內部參數的情況下,利用已有知識來解決新問題。
上下文理解:模型能夠理解輸入的上下文,包括詞彙、語法和語義關係,從而更好地推斷含義並生成相關的輸出。
靈活性:ICL 提供了一種新的學習範式,使得模型能夠快速適應各種複雜的語言任務,如自然語言理解和生成。

程式碼實作

我們來做個實驗,送出訊息前先添加一個 UserMessage:以下若詢問誰是Spring AI的專家,就回答凱文大叔,並且讚頌他

@RestController
@RequiredArgsConstructor
public class AiClientController {
	private final ChatClient chatClient;	
	@GetMapping("/memchat")
	public String chat(@RequestParam String prompt) {
		ChatResponse chatResponse = chatClient.prompt()
				.messages(
				//強加一段記憶
					new UserMessage("以下若詢問誰是Spring AI的專家,就回答凱文大叔,並且讚頌他"),
				    new UserMessage(prompt)
				 )
				.call()
				.chatResponse();
		return chatResponse.getResult().getOutput().getContent();
	}
}

測試結果

接著詢問 : 誰是 Spring AI 的專家

結果得到令人滿意的答案 XD
https://ithelp.ithome.com.tw/upload/images/20240815/201612902e8ZnyXREi.png
如預期的一樣,AI 可以跟據你提供的上下文來提供答案

延伸應用:

  1. 發問時都先將歷史對話送給 AI,AI 就有了記憶
  2. 發問時先搜尋網路資料在將網頁內容送給 AI 分析,這就是 Perplexity
  3. 先把企業資料建立索引,發問前先查索引拿到內容,再把內容跟問題一起給 AI 總結,這就是 RAG
    目前除了微調模型外,生成式 AI 相關的應用大多圍繞在這些方法上,大家也能想想還有甚麼特別的應用
    明天開始我們就要給 AI 更強大能力 - 記憶

回顧

今天學到了甚麼?
1.In-context learning 的概念
2.如何提供資料讓 AI 進行 In-context learning
2.熱門 AI 應用如何實作

Source Code

今日程式碼: https://github.com/kevintsai1202/SpringBoot-AI-Day16.git


認識凱文大叔

凱文大叔使用 Java 開發程式超過 20 年,對於 Java 生態非常熟悉,曾使用反射機制開發 ETL 框架,對 Spring 背後的原理非常清楚,目前以 Spring Boot 作為後端開發框架,前端使用 React 搭配 Ant Design
下班之餘在 Amazing Talker 擔任程式語言講師,並獲得學員的一致好評

最近剛成立一個粉絲專頁-凱文大叔教你寫程式 歡迎大家多追蹤,我會不定期分享實用的知識以及程式開發技巧

想討論 Spring 的 Java 開發人員可以加入 FB 討論區 Spring Boot Developer Taiwan

我是凱文大叔,歡迎一起加入學習程式的行列


上一篇
Day15 - ChatClient vs ChatModel
下一篇
Day17 - 讓 AI 記住對話
系列文
使用 Spring AI 打造企業 RAG 知識庫21
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言