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