《LangChain大模型開發(fā)實踐》旨在提供一個全面、系統(tǒng)的LangChain學習指南。全書共7章,循序漸進地介紹LangChain的核心概念和使用方法。第1章討論人工智能、大語言模型的發(fā)展歷程和應用場景,闡述LangChain框架的設計理念和優(yōu)勢;第2章詳細介紹如何搭建LangChain的開發(fā)環(huán)境,引導讀者編寫優(yōu)質(zhì)個LangChain程序;第3、4章深入剖析LangChain的基礎組件和領域特定語言LCEL,幫助讀者掌握構建大語言模型應用的關鍵技能;第5~7章通過多個實戰(zhàn)項目,展示如何使用LangChain構建智能問答系統(tǒng)、智能文檔助手和知識圖譜應用,將所學知識應用到實踐中。適合具備一定Python編程基礎、對人工智能(特別是自然語言處理、大語言模型)感興趣的讀者閱讀,讀后可以掌握使用LangChain開發(fā)大語言模型應用的思路和方法,獨立設計和實現(xiàn)智能應用系統(tǒng)。
1.通過智能問答系統(tǒng)、文檔助手和知識圖譜應用三個實戰(zhàn)項目的完整解析,使讀者深入理解LangChain大模型項目開發(fā)的完整流程。2.詳細講解LangChain的核心概念、設計理念、開發(fā)環(huán)境及基礎組件等大模型開發(fā)的基礎知識。3.作者有豐富的大模型開發(fā)項目經(jīng)驗和培訓經(jīng)驗,講解通俗易懂,深受學員們歡迎。
前言
當今世界,人工智能和自然語言處理技術正以前所未有的速度發(fā)展,大語言模型(Large Language Model,LLM)的出現(xiàn)標志著自然語言理解和生成能力的重大突破。LLM使得計算機能夠以接近人類的方式理解、分析和生成自然語言,為構建更加智能化、個性化的應用系統(tǒng)提供了新的可能。然而,如何利用 LLM的能力,將其與各類數(shù)據(jù)源、知識庫和外部工具相結合,開發(fā)真正有價值、易部署的智能應用,仍然是一個巨大的挑戰(zhàn)。
LangChain是一個專為解決這一挑戰(zhàn)而誕生的開源框架。它為LLM應用開發(fā)提供了一套靈活、模塊化的工具集,使開發(fā)者能夠快速構建和擴展基于 LLM 的應用程序。通過 LangChain,可以方便地將LLM與各種數(shù)據(jù)源相連接,實現(xiàn)知識增強; 可以使用 Agents技術編排LLM和外部工具的協(xié)同工作,執(zhí)行復雜的認知任務; 還可以基于 Callbacks 機制實現(xiàn)應用程序各組件之間的交互與數(shù)據(jù)流動,搭建端到端的智能應用系統(tǒng)。
本書旨在為讀者提供一個全面、系統(tǒng)的LangChain學習指南。全書共分為7章,循序漸進地介紹了LangChain的核心概念和使用方法。第1章討論人工智能、LLM的發(fā)展歷程和應用場景,闡述LangChain框架的設計理念和優(yōu)勢。第2章詳細介紹如何搭建LangChain的開發(fā)環(huán)境,引導讀者編寫優(yōu)質(zhì)個LangChain程序。第3章和第4章深入剖析LangChain的基礎組件和領域特定語言LCEL,幫助讀者掌握構建LLM應用的關鍵技能。第5~7章則通過幾個實戰(zhàn)項目,展示如何使用 LangChain構建智能問答系統(tǒng)、智能文檔助手和知識圖譜應用,將所學知識應用到實踐中。
本書適合具備 Python 編程基礎、對人工智能和自然語言處理感興趣的讀者閱讀。通過學習本書,讀者將掌握使用LangChain開發(fā)LLM應用的思路和方法,能夠獨立設計和實現(xiàn)各類智能應用系統(tǒng)。同時,本書也力求與時俱進,緊跟 LangChain和LLM技術的發(fā)展,為讀者提供前沿的見解和指引。
在撰寫這本介紹LangChain框架的書籍過程中,我深切地感受到開源社區(qū)的力量。LangChain的發(fā)展離不開開發(fā)者的積極貢獻和真知灼見。在此,向所有為 LangChain 項目做出貢獻的個人和組織表示衷心的感謝,你們的智慧結晶為 LLM 應用開發(fā)鋪平了道路,也為本書的寫作提供了重要參考。衷心感謝清華大學出版社對本書出版給予的大力支持。最后,感謝我的家人在我埋頭寫作之時給予的理解、支持和鼓勵,你們的關愛是我不竭的動力源泉。
LangChain是一個蓬勃發(fā)展的開源項目,新的想法和實現(xiàn)方案層出不窮。受篇幅所限,本書無法面面俱到地涵蓋所有內(nèi)容。希望讀者在學習之余,多查看LangChain的官方文檔和代碼倉庫,與社區(qū)保持同步。也殷切期盼讀者能夠從本書汲取靈感、開闊視野,將LangChain和LLM技術應用到更多領域,創(chuàng)造出令人驚嘆的智能應用。讓我們攜手共進,用創(chuàng)新點亮人工智能的未來!
限于作者水平,書中難免存在疏漏和不足,敬請讀者不吝賜教,可通過電子郵件(404905510@qq.com)、GitHub Issues等方式與我交流。您的寶貴意見將幫助我改進后續(xù)的版本,提供更優(yōu)質(zhì)的學習內(nèi)容。
最后,預祝各位讀者學有所成,在LangChain和LLM應用開發(fā)的道路上一往無前。在人工智能快速發(fā)展的時代,唯有保持開放的心態(tài)和持續(xù)學習的熱情,方能駕馭萬千變化,創(chuàng)造無限可能。讓我們一起乘風破浪,擁抱人工智能的美好明天!
姜春茂
2025年春于福州
目錄
第1章LangChain基礎知識
1.1人工智能和LLM概述
1.1.1人工智能的發(fā)展歷程
1.1.2LLM的興起
1.1.3LLM的能力和局限性
1.2LLM應用及其挑戰(zhàn)
1.2.1LLM應用的定義和特點
1.2.2LLM應用的常見類型
1.2.3構建LLM應用面臨的挑戰(zhàn)
1.3LangChain框架簡介
1.3.1LangChain的設計理念和目標
1.3.2LangChain的核心組件
1.3.3LangChain的優(yōu)勢
1.4LangChain的應用場景
1.4.1構建支持知識增強的LLM應用
1.4.2實現(xiàn)基于多輪對話的聊天機器人
1.4.3開發(fā)面向特定領域的智能助手
1.4.4集成外部工具以執(zhí)行復雜任務
1.5其他LLM應用開發(fā)框架
1.5.1常見的LLM應用開發(fā)框架
1.5.2特點和局限性
1.5.3為什么選擇LangChain
小結
思考題
第2章搭建LangChain的開發(fā)環(huán)境
2.1選擇開發(fā)語言和工具
2.1.1Python簡介及其在人工智能領域的應用
2.1.2常用的Python集成開發(fā)環(huán)境(IDE)
2.1.3本書選用的開發(fā)語言和工具
2.2安裝LangChain及其依賴庫
2.2.1使用pip安裝LangChain
2.2.2LangChain的主要依賴庫
2.2.3處理安裝過程中的常見問題
2.3配置LangChain開發(fā)環(huán)境
2.3.1創(chuàng)建并激活Python虛擬環(huán)境
2.3.2在IDE中配置LangChain項目
2.3.3LangChain的配置文件和環(huán)境變量
2.4運行優(yōu)質(zhì)個LangChain程序
2.4.1問答程序示例的實現(xiàn)步驟
2.4.2運行程序并分析結果
2.4.3示例程序的代碼解析
2.4.4本書的開發(fā)環(huán)境搭建
2.4.5常見錯誤及解決方法
2.5LangChain開發(fā)資源
小結
思考題
第3章LangChain的基礎組件
3.1快速入門案例
3.1.1LLM鏈
3.1.2檢索鏈
3.1.3對話檢索鏈
3.1.4代理
3.2模型(Model I/O)
3.2.1簡介
3.2.2提示模板
3.2.3聊天模型
3.2.4大語言模型
3.2.5輸出解析器
3.3文檔檢索
3.3.1關鍵模塊
3.3.2文檔加載器
3.3.3文本分割器
3.3.4文本嵌入模型
3.3.5檢索器
3.3.6索引
3.4代理
3.4.1核心思想
3.4.2代理類型
3.4.3工具
3.4.4案例分析
3.5鏈
3.6記憶
3.7回調(diào)
小結
思考題
第4章LangChain表達式語言
4.1快速入門案例
4.2LCEL簡化LLM的開發(fā)
4.3Runnable接口
4.3.1簡介
4.3.2輸入輸出模式
4.3.3Runnable接口的方法
4.3.4異步事件流
4.3.5異步中間步驟流
4.3.6并行執(zhí)行
4.4LangChain中的流式處理
4.4.1Runnable接口與流式處理方法
4.4.2流式處理LLM和聊天模型
4.4.3構建支持流式處理的鏈
4.4.4處理不支持流式處理的組件
4.4.5事件過濾
4.4.6在自定義工具中傳播回調(diào)
4.4.7使用RunnableParallel操作輸入輸出
4.4.8并行執(zhí)行
4.5使用LangChain表達式語言完成常見的任務
4.5.1Prompt+LLM
4.5.2RAG
4.5.3對話式檢索鏈
4.5.4多鏈組合
4.5.5查詢SQL數(shù)據(jù)庫
4.5.6代理
4.5.7使用工具
4.5.8代碼編寫
小結
思考題
第5章LangChain實戰(zhàn): 構建智能問答系統(tǒng)
5.1智能問答系統(tǒng)概述
5.1.1什么是智能問答系統(tǒng)
5.1.2智能問答系統(tǒng)的應用場景和價值
5.1.3構建智能問答系統(tǒng)的關鍵技術和挑戰(zhàn)
5.2基于LangChain的問答系統(tǒng)架構
5.2.1問答系統(tǒng)的整體架構和流程
5.2.2LangChain在問答系統(tǒng)中的角色和優(yōu)勢
5.2.3問答系統(tǒng)的核心組件和功能
5.3數(shù)據(jù)準備和預處理
5.3.1構建知識庫的數(shù)據(jù)來源和格式
5.3.2使用LangChain的Document Loader加載數(shù)據(jù)
5.3.3使用LangChain的Text Splitter分割文本
5.4構建知識庫索引
5.4.1什么是向量數(shù)據(jù)庫和嵌入
5.4.2使用LangChain的Embedding類創(chuàng)建嵌入
5.4.3使用LangChain的Vector Store類創(chuàng)建向量數(shù)據(jù)庫
5.5實現(xiàn)問答流程
5.5.1問題理解和分析
5.5.2知識檢索和答案生成
5.5.3答案過濾和排序
5.6優(yōu)化和改進問答系統(tǒng)
5.6.1引入反饋機制和交互設計
5.6.2持續(xù)學習和知識更新
5.6.3擴展問答系統(tǒng)的功能和應用
小結
思考題
第6章LangChain實戰(zhàn): 構建智能文檔助手
6.1智能文檔助手概述
6.1.1什么是智能文檔助手
6.1.2智能文檔助手的應用場景和價值
6.1.3構建智能文檔助手的關鍵技術和挑戰(zhàn)
6.2基于LangChain的文檔助手架構
6.2.1文檔助手架構和流程
6.2.2LangChain在文檔助手中的優(yōu)勢
6.2.3文檔助手的核心功能模塊
6.3文檔數(shù)據(jù)的處理與分析
6.3.1支持的文檔格式和數(shù)據(jù)源
6.3.2使用LangChain的Document Loader加載文檔
6.3.3文檔結構分析和元數(shù)據(jù)提取
6.3.4文檔內(nèi)容的清洗和預處理
6.4文檔語義理解和信息抽取
6.4.1文檔主題和關鍵詞提取
6.4.2命名實體識別和關系抽取
6.4.3文檔摘要和重點句提取
6.4.4使用LangChain的LLM類實現(xiàn)語義理解
6.5基于文檔的問答和對話
6.5.1將文檔分割為知識片段
6.5.2使用LangChain的Retriever類檢索知識
6.5.3使用LangChain的LLM類生成答案
6.5.4支持多輪對話和上下文理解
6.6文檔助手的智能服務
6.6.1文檔智能檢索和推薦
6.6.2文檔自動分類和聚類
6.6.3文檔知識圖譜構建與可視化
6.6.4文檔智能問答
小結
思考題
第7章LangChain實戰(zhàn): 構建知識圖譜應用
7.1知識圖譜技術概述
7.1.1什么是知識圖譜
7.1.2構建知識圖譜的關鍵技術
7.2基于LangChain的知識圖譜構建流程
7.2.1知識圖譜構建的整體流程
7.2.2LangChain在知識圖譜構建中的作用
7.2.3知識圖譜構建的核心步驟和組件
7.3知識抽取和實體識別
7.3.1使用LangChain的命名實體識別組件
7.3.2使用LangChain的關系抽取組件
7.3.3基于規(guī)則和fewshot的知識抽取
7.3.4基于機器學習的知識抽取方法
7.4知識融合和本體構建
7.4.1實體鏈接和消歧
7.4.2知識去重和沖突消解
7.4.3本體構建與知識組織
7.4.4使用LangChain的Agents實現(xiàn)知識融合
7.5知識存儲和查詢
7.5.1知識圖譜的存儲方式和數(shù)據(jù)庫選擇
7.5.2知識圖譜的查詢語言和接口
7.5.3使用LangChain的GraphQL接口查詢知識圖譜
7.5.4基于自然語言的知識圖譜查詢
小結
思考題
參考文獻