本地端 Ollama × LangChain × LangGraph × LangSmith 開發手冊:打造 RAG、Agent、SQL 應用
好崴寶(Weibert Weiberson)
- 出版商: 旗標
- 出版日期: 2025-09-03
- 定價: $750
- 售價: 7.9 折 $593
- 語言: 繁體中文
- 頁數: 384
- ISBN: 9863128449
- ISBN-13: 9789863128441
-
相關分類:
人工智慧、Data Science
尚未上市,歡迎預購
相關主題
商品描述
內容介紹:
>資 料 不 外 流,模 型 任 你 遊<
No data out, all models in play
本書是專為考量資料隱私問題但又想開發結合大型語言模型 LLM 應用者所設計,不倚賴大型 AI 公司的雲端服務,利用 Ollama 系統建置本機 LLM 推論引擎,既保護隱私又節省串接大型 AI 公司 API 服務的費用。更重要的是,可視需要變換模型,不會被大型 AI 公司綁架,完全彈性自主。本書還具備以下特色:
🛩️ LangChain 應用程式開發框架
除了簡化程式撰寫,更可跨模型,即使要改用大型 AI 公司的模型也不需要重新撰寫程式。LangChain 框架提供有外部函式(工具)的抽象層,可立即將既有的函式變成模型可用的工具,加上 LangChain 社群的豐富工具,簡直就像是 LLM 軍火庫,讓模型不只能說一口好話,還能付諸行動,可以達成像是執行 SQL 語句查詢資料庫等各種功能。
🛩️ RAG 應用開發
對於需要參考私有資料的應用情境,LangChain 也提供有完整的 RAG 支援,不但可讀取 PDF/網頁/JSON 等各種格式資料來源,也提供多種文檔切割方式與 FAISS 等嵌入式資料庫儲存/檢索機制,瞬間就能幫模型補足專屬知識,協助解答問題。
🛩️ AI Agent 代理應用
LangChain 設計有現成的 AI Agent 框架,搭配剛剛提到的各式工具與 RAG 機制,即可設計可自主思考,規劃行動並實際完成任務的 ReAct Agent。
🛩️ 獨家 LangGraph 主題
考量到一般 Agent 帶來的不確定性,LangChain 生態系加入了 LangGraph 框架,可以設計具備穩定流程的 Agent 代理,避免 Agent 陷入無窮迴圈無法完成任務的窘境。
🛩️ LangSmith 評估系統
補上 Agent 代理應用的最後一塊拼圖,透過 LangSmith 服務檢視 Agent 執行過程,可評估執行效能、prompt 成效、模型規劃行動優劣,不再只用感覺評斷。
本書特色:
🛩️ 自由彈性的本地端 Ollama 模型,節省 API 串接費用
🛩️ 出張嘴用自然語言替代 SQL 語句查詢資料庫
🛩️ 從 PDF/網頁/JSON 檔擷取資料補充模型知識打造 RAG 應用
🛩️ 善用 prompt 技巧避免模型產生幻覺
🛩️ 設計有記憶、可自主決策規劃並執行任務的 AI Agent 代理
🛩️ 獨家 LangGraph 教學,設計穩定流程的 AI Agent
🛩️ 利用 LangSmith 監測 AI Agent 執行流程
目錄大綱
目錄:
第 1 章 本地化低硬體門檻的 LLM 應用開發
1-1 解決高昂的 API 成本與硬體需求
API 成本的負擔
硬體需求的挑戰
免費與本地化運算的崛起
1-2 對雲端的依賴與資料安全性
雲端依賴的挑戰
資料安全性的考量
在本地運行模型以減少對雲端的倚賴
1-3 為什麼選擇免費的本地化運算
成本效益
自主性與可客製化
技術可行性
1-4 LangChain、Ollama 和 LangGraph 的特色與優勢
LangChain
Ollama
LangGraph
最低硬體需求與資源建議
第 2 章 環境建置與模型量化技術
2-1 低硬體需求的環境準備與 Ollama 模型選擇
本書撰寫時使用之硬體環境
本書推薦之大型語言模型
2-2 模型選擇指南與量化技術解析
模型的命名慣例
模型挑選方式
Ollama 模型尋找教學
2-3 如何在本地環境中運行 LangChain 和 Ollama
使用 Docker 快速部署
手動配置本地環境 (適合不方便使用 Docker 的讀者)
Colab 雲端部署
Ollama 版本相容性提醒
本書實作範例採用的量化模型說明
程式碼中更換模型的方法
第 3 章 LangChain 基礎入門
3-1 認識 LangChain 生態系統的架構與組成
3-2 認識 LangChain 底層模組
Base Packages (基礎套件群)
Integrations (整合模組群)
3-3 可執行單元 (Runnables)
最核心的 Runnable 元件:LLM 生成
提示模板 (Prompt Templates)
RunnableLambda
3-4 表達式語言 LCEL (LangChain Expression Language)
RunnableSequence
RunnableParallel
3-5 回呼 (Callbacks)
回呼事件 (Callback Events)
回呼處理器 (Callback Handlers)
回呼添加方式 (Passing Callbacks)
StreamingStdOutCallbackHandler
3-6 避免數字幻覺:用 Prompt 確保 LLM 只根據提供的數據回答
LLM 會如何產生數字幻覺?
提示詞 (Prompt):避免 LLM 生成錯誤數值
temperature (溫度)
結合 Prompt 與 LLM,驗證是否能有效抑制數字幻覺
3-7 建立多國語言翻譯助手應用
步驟 1:定義提示模版 (Prompt Template)
步驟 2:接收用戶輸入
步驟 3:建立流程鏈並在執行時傳入回呼
執行結果展示
3-8 建立搜尋引擎最佳化 SEO 標題產生器
步驟 1:定義提示模版 (Prompt Templates)
步驟 2:接收用戶輸入
步驟 3:建立流程鏈
步驟 4:使用 .stream() 實現串流輸出
執行結果展示
第 4 章 SQL:結合資料庫打造自然語言查詢系統
4-1 如何透過 LLM 達到 SQL 查詢自動化
認識 SQLite 資料庫
自然語言轉 SQL 查詢
4-2 建立 SQL 人資小幫手問答機器人
步驟 1:初始化模型與連接資料庫
步驟 2:獲取資料庫結構
步驟 3:執行 SQL 查詢的函式
步驟 4:SQL 查詢語句生成 (自然語言輸入 → SQL 語句)
步驟 5:執行 SQL 查詢,並將查詢結果轉換為自然語言回答
步驟 6:主程式
執行結果展示
4-3 跨資料表 SQL 查詢:讓 LLM 理解關聯資料並生成查詢語句
程式碼修改說明
執行結果展示
第 5 章 向量資料庫:基礎 RAG 與語義相似性檢索
5-1 認識檢索增強生成 (RAG)
RAG 使用檢索系統帶來的優勢
幫 LLM 擴展知識並減少幻覺 (Hallucination)
5-2 嵌入向量與語義相似性檢索流程
嵌入向量 (Embedding Vector)
語義相似性檢索 (Semantic Similarity Retrieval)
5-3 FAISS 向量資料庫與相似度計算方式
FAISS 的記憶體特性
FAISS 索引類型概覽
相似度計算方式介紹
5-4 OllamaEmbeddings 嵌入模型
在 Ollama 尋找、更換與下載嵌入模型的方法
正規化測試
嵌入模型測試與相似性檢索
5-5 設定相似度閾值:控制語義檢索範圍
L2 距離 (歐幾里得距離, Euclidean Distance)
使用 MAX_INNER_PRODUCT 實現餘弦相似度
(Cosine Similarity)
5-6 將 FAISS 向量資料庫本地化:實現持久化儲存與載入
向量資料庫本地化流程
檢索本地向量資料庫流程
建立與檢索本地 FAISS 向量資料庫
整合 LLM 來回答問題
第 6 章 進階 RAG:記憶、數據向量化、檔案載入器與多資料來源
6-1 認識檢索、生成與數據向量化流程
RAG 詳細運作流程
RAG 數據向量化流程
6-2 建立 RAG 向量化檢索泛用聊天機器人
步驟 1:初始化 LLM
步驟 2:儲存向量並初始化檢索器
步驟 3:建立提示模板
步驟 4:建立檢索鏈與檔案處理鏈
步驟 5:啟動對話系統
執行結果展示
常見觀念誤區整理
6-3 建立相似度閾值機制:本地 RAG 球員戰績問答機器人
步驟 1:新增 SIMILARITY_THRESHOLD 與準備數據
步驟 2:檢查數據是否需要更新
步驟 3:建立 FAISS 向量資料庫
步驟 4:建立檢索與問答系統
執行結果展示
6-4 文本分割 (Chunking)
短片段 vs. 長片段
分割時需要考量的因素
常見的文本分割策略
文本分割的實I建議
6-5 檔案載入器 (Document Loaders)
LangChain 的檔案載入器
檔案載入器用法介紹
6-6 建立 PDF、網頁爬蟲、JSON 檢索問答機器人
PDF 檢索問答機器人
執行結果展示
網頁爬蟲檢索問答機器人
執行結果展示
JSON 檢索問答機器人
執行結果展示
6-7 LangChain 記憶 (Memory)
LangChain 記憶類型介紹
LangChain 記憶執行流程
6-8 建立有記憶能力的檢索問答機器人
保留完整對話的 ConversationBufferMemory
執行結果展示
保留對話摘要的 ConversationSummaryMemory
執行結果展示
第 7 章 Agent × Memory:讓模型自己選擇工具並擁有對話記憶
7-1 認識代理 (Agent)
AgentExecutor (代理執行器)
AgentType (代理類型)
initialize_agent (初始化代理)
7-2 工具 (Tool)
使用 LangChain 提供的搜尋引擎查詢工具 (Tool)
建立函式當作自訂工具 (Tool)
7-3 建立有記憶的泛用電腦助手 Agent:密碼生成 × 網頁爬蟲 × 搜尋引擎
步驟 1:初始化 Ollama LLM
步驟 2:建立密碼生成函式當工具
步驟 3:建立網頁爬蟲函式當工具
步驟 4:加入搜尋引擎查詢工具 (DuckDuckGoSearchRun)
步驟 5:組成工具清單
步驟 6:設定 Prompt
步驟 7:加入記憶機制 (Memory)
步驟 8:建立代理 (Agent)
步驟 9:建立主程式
執行結果展示
第 8 章 LangGraph:用狀態、節點、邊建構圖結構流程
8-1 認識 LangGraph 圖結構流程控制原理
LangChain AgentExecutor 與 LangGraph 的差異
圖結構 (Graph)
節點與邊 (Nodes and Edges)
8-2 LangGraph 狀態與其更新機制 (State + Reducer)
狀態 (State)
Reducer:控制狀態的更新機制
8-3 建立圖結構條件邏輯 Agent:日期查詢 × 數學計算
步驟 1:初始化模型
步驟 2:定義狀態類別
步驟 3:定義節點函式
步驟 4:建構圖
步驟 5:添加節點與邊
步驟 6:編譯圖與主程式
執行結果展示
8-4 建立圖結構網路查詢助手 Agent:維基百科 × 搜尋引擎
步驟 1:定義狀態類別
步驟 2:初始化工具
步驟 3:定義節點函式
步驟 4:構建圖
步驟 5:執行主程式
執行結果展示
8-5 LangGraph 記憶:Checkpointer
Checkpointer (檢查點保存器)
Thread (執行緒) 與 Checkpoint (檢查點)
檢查點的獲取:get_state 與 get_state_history
8-6 建立有記憶的圖結構泛用聊天機器人
步驟 1:定義狀態類別
步驟 2:定義節點函式
步驟 3:構建圖
步驟 4:建立 Checkpointer 和初始化狀態
步驟 5:執行主程式
執行結果展示
第 9 章 LangSmith:視覺化追蹤與分析 LLM 工作流的每一步
9-1 LangSmith 核心功能與API 金鑰設定
LangSmith 使用教學
探索 LangSmith 的核心功能
9-2 追蹤 SQL、RAG、Agent、Memory 與 LangGraph 等執行流程
基礎執行流程
SQL 執行流程
RAG 執行流程
Agent × Memory 執行流程
LangGraph 執行流程