LangChain簡介

LangChain 是一個用于構建基于大語言模型(LLM)的應用程序的開源框架,它提供了一套工具、組件和接口, 可以將 LLM 模型、向量數據庫、交互層 Prompt、外部知識、外部工具整合到一起,進而可以自由構建 LLM 應用。
LangChain 主要能做這些事:

1. 連接外部數據:大語言模型的訓練數據有時間限制,且無法直接訪問實時信息或私有數據。LangChain 可以連接數據庫、文檔(PDF、Word 等)、網頁等外部數據源,讓模型能基于最新或專有數據生成回答。例如,讓模型結合公司內部文檔回答員工問題,或結合實時新聞分析市場動態。2. 調用外部工具:除了處理文本,LangChain 能讓模型調用各種外部工具完成任務,比如調用計算器做數學運算、調用地圖 API 獲取地理位置信息、調用代碼解釋器執行代碼、甚至調用搜索引擎獲取實時數據。例如,讓模型幫你查詢天氣、預訂機票,或根據數據生成圖表。3. 構建復雜工作流:對于多步驟的任務,LangChain 支持將多個操作(如 “先查詢數據→再分析數據→最后生成報告”)組合成一個連貫的工作流,讓模型按步驟完成復雜任務。例如,自動生成市場調研報告:先調用工具收集行業數據,再讓模型分析數據,最后生成結構化報告。4. 實現記憶功能:在對話場景中,LangChain 可以幫助模型 “記住” 之前的對話內容,讓對話更連貫自然。比如聊天機器人能根據歷史對話上下文理解用戶的潛在需求。5. 支持多模態交互:除了文本,LangChain 還能擴展到大語言模型與圖像、音頻等其他模態數據的交互,構建多模態應用。

langchain核心組件包括:
模型(Models):封裝各類 LLM(如 GPT、Claude)和嵌入模型(用于數據向量化);
提示(Prompts):提示詞模板、輸出解析器(規范模型輸出格式);
Indexes(索引):從外部數據中高效查找與問題相關的信息;
鏈(Chains):將多個組件按邏輯串聯(如 “提示→模型調用→結果處理”);
記憶(Memory):保存對話上下文,支持多輪交互;
智能體(Agents):讓模型自主決策調用哪些工具或組件完成任務。
LangChain組件講解

1. Models(模型)
langchain的模型核心類型有

LLM(大語言模型)
單輪文本生成、摘要, 常用于內容創作、簡單問答②ChatModel(聊天模型)
多輪對話、上下文交互, 常用于聊天機器人、客服系統
ps: 聊天模型與傳統 LLM(輸入輸出均為純文本)不同,ChatModel 的輸入是結構化的消息列表(包含角色和內容),輸出是單一的消息對象。
聊天模型天然適合多輪對話,通過在消息列表中保留歷史對話,模型可以理解上下文邏輯(例如 “它”“這個” 等代詞指代的內容)。
LLM是 “文本生成工具”,ChatModel是 “對話交互引擎”③Embedding Model (嵌入模型)
文本語義編碼、相似度計算,用于文檔檢索(RAG)、聚類分析

2.Prompts(提示詞)
在 LangChain 中,Prompts(提示詞)是連接用戶輸入與語言模型的核心橋梁,它定義了模型的輸入格式、任務目標和輸出要求。


Prompts 的核心作用
明確任務目標:告訴模型需要完成什么任務(如 “總結文本”“翻譯句子”“生成代碼”)。
規范輸入輸出:定義用戶輸入的格式和模型輸出的格式(如 “用 JSON 返回結果”“分點回答”)。
注入背景信息:提供上下文、約束條件或示例,幫助模型更準確地理解需求(如 “你是一名醫生,請用專業術語回答”)。Prompts 的關鍵組件:PromptTemplate(提示模板): 最基礎的提示詞組件,用于定義包含變量的模板,運行時動態替換變量值。
② ChatPromptTemplate(聊天提示模板): 專為ChatModel設計,支持多角色消息(如SystemMessageHumanMessage)的模板化。
③ FewShotPromptTemplate(少樣本提示模板):通過提供示例(few-shot examples)引導模型輸出格式,適合需要嚴格格式約束的任務(如分類、提取)。
④ OutputParser輸出解析器)配合提示詞使用,將模型的原始輸出轉換為結構化格式(如 JSON、列表),方便后續處理。

3.Indexes(索引)
Indexes(索引)是處理和組織外部數據(如文檔、文本)的核心模塊,其主要作用是將原始數據轉換為可高效檢索的格式,為后續的檢索增強生成(RAG)等功能提供支持。


Indexes 的核心功能
①數據加載(Loading):從多種來源加載數據(如 PDF、TXT、網頁、數據庫等)。
②文本分割(Splitting):將長文檔拆分為小塊(chunks),避免超出模型的上下文長度限制。
③嵌入生成(Embedding):將文本塊轉換為向量(通過Embedding Model),捕捉語義信息。
④向量存儲(Vector Stores):將向量存入專門的數據庫(如 ChromaPinecone),支持高效的相似度檢索。Indexes 的核心組件
①文檔加載器(Document Loaders)
負責從不同來源加載數據,并統一轉換為 LangChainDocument對象(包含page_content文本內容和metadata元數據)。
常用加載器:PyPDFLoader:加載 PDF 文件;TextLoader:加載 TXT 文件;WebBaseLoader:加載網頁內容;DirectoryLoader:批量加載文件夾中的文件。②文本分割器(Text Splitters)
將長文檔分割為語義連貫的小塊(chunks),平衡 “上下文完整性” 和 “檢索精度”。
核心分割器:
RecursiveCharacterTextSplitter(推薦):按標點符號、空格等遞歸分割,適合大多數文本;
CharacterTextSplitter:按固定字符數分割,簡單但可能破壞語義;
TokenTextSplitter:按模型 token 數分割,精準控制長度。③向量存儲(Vector Stores)
存儲文本塊的向量表示,支持高效的相似度檢索(如余弦相似度)
LangChain 集成了很多常用的向量數據庫,包括 FaissMilvusPineconeChroma 等④檢索器(Retrievers)
主要用于從海量文檔中快速找到與當前問題最相關的信息,是實現 “檢索增強生成(RAG)” 的核心工具。
LangChain 提供了多種檢索器:
VectorStoreRetriever(向量存儲檢索器): 基于向量相似度檢索
BM25Retriever(關鍵詞檢索器):基于傳統的 TF-IDF(詞頻 - 逆文檔頻率)算法,通過關鍵詞匹配檢索文檔,不依賴向量嵌入。
ContextualCompressionRetriever(上下文壓縮檢索器): 在基礎檢索結果(如向量檢索)的基礎上,用 LLM 對文檔片段進行 “壓縮” 或 “過濾”,保留與問題最相關的核心信息。
ToolRetriever(工具檢索器): 將檢索能力封裝為工具,供智能體(Agent)調用,支持動態決定何時檢索(如 “不確定答案時自動檢索”)。

4. Chains(鏈)
Chains(鏈)是將多個組件(如模型、提示詞、工具、檢索器等)按特定邏輯組合起來的核心機制,用于實現復雜任務的自動化流程。

Chains 的核心價值
組件協同:將獨立的組件(如PromptTemplate→LLM→OutputParser)串聯起來,形成完整的任務流水線。
流程自動化:支持多步驟任務(如 “檢索文檔→生成回答→格式化輸出”),無需手動干預。
抽象復雜度:隱藏組件交互的細節,開發者只需關注整體邏輯(如 “調用鏈→獲取結果”)。Chains 的主要類型
LangChain 提供了數十種鏈,按功能可分為基礎鏈、組合鏈和專用鏈三大類
基礎鏈:單一功能的簡單組合
LLMChain: 最基礎的鏈,將PromptTemplate與LLM/ChatModel組合,實現 “提示詞→模型調用” 的簡單流程。
SimpleSequentialChain: 按順序執行多個鏈,前一個鏈的輸出作為后一個鏈的輸入(僅支持單輸入單輸出)。組合鏈:多步驟復雜流程
SequentialChain: 支持多輸入多輸出的順序鏈,可指定每個鏈的輸入來源和輸出目標(更靈活)。
RouterChain: 根據輸入動態選擇執行哪個鏈(類似 “路由” 功能),適合需要分支邏輯的場景。專用鏈:針對特定場景優化
RetrievalQA: 結合檢索器(Retriever)和模型,實現 “檢索相關文檔→生成回答” 的 RAG(檢索增強生成)流程。
ConversationalRetrievalChain:RetrievalQA基礎上增加對話記憶,支持 “多輪對話 + 檢索”適用場景
單步驟任務(如生成文本、翻譯)→ 用LLMChain;
固定流程的多步驟任務(如 “生成標題→寫摘要→翻譯”)→ 用SequentialChain;
動態分支任務(如 “根據問題類型選擇專家”)→ 用RouterChain;
基于文檔的問答→ 用RetrievalQA;
多輪對話 + 檢索→ 用ConversationalRetrievalChain

5. Memory(記憶)
Memory(記憶)是用于存儲和管理對話歷史的核心組件,它讓語言模型能夠 “記住” 之前的交互內容,從而實現連貫的多輪對話。沒有記憶組件,模型每次調用都相當于 “全新對話”,就無法理解上下文關聯
Memory 的核心作用
保存對話歷史:存儲用戶與 AI 的交互記錄(問題和回答)。
提供上下文:將相關歷史對話傳入模型,讓模型理解當前對話的背景。
支持多輪交互:讓對話能夠自然延續(如 “上一個問題你提到…,再詳細說說”)。

langchain 提供了不同的 Memory 組件

ConversationBufferMemory(基礎緩沖記憶)
完整保存所有對話歷史(用戶消息 + AI 回復)。
簡單直觀單,但歷史過長時會超出模型上下文長度限制②ConversationBufferWindowMemory(窗口記憶)
只保留最近的k輪對話(k為窗口大小),避免歷史過長③  ConversationSummaryMemory(摘要記憶)
用 LLM 將對話歷史總結為摘要,只保留摘要而非完整對話。
大幅壓縮歷史長度,適合超長對話。可能丟失細節(取決于摘要質量)。④ ConversationSummaryBufferMemory(摘要緩存記憶)
積核摘要記憶并使用token長度來確定何時刷新交互。⑤ ConversationKGMemory(知識圖譜記憶)
從對話中提取實體和關系,構建簡單知識圖譜。
結構化存儲關鍵信息,適合需要提取實體關系的場景(如客戶咨詢)。⑥ VectorStoreRetrieverMemory向量存儲記憶
它是將所有之前的對話通過向量的方式存儲到 VectorDB(向量數據庫)中,
在每一輪新的對話中,會根據用戶的輸入信息,匹配向量數據庫中最相似的 K 組對話。

6.Agents(代理)
在 LangChain 中,Agent(智能體)是一種能夠自主決策、調用工具并逐步解決復雜任務的高級組件,
它賦予大型語言模型(LLM)決策和行動能力。Agent 能夠根據用戶輸入動態選擇并調用工具(Tools)、處理復雜任務、維護狀態,并通過迭代推理(如 ReAct 框架)逐步解決問題。
Agent 的本質是 LLM(大腦) + 工具集(Tools) + 決策邏輯(Executor)

關鍵組件

LLM/ChatModel:作為 “大腦”,負責推理、決策和生成指令(如 GPT-4Claude 等)
Agent: 決策中樞,選擇工具或返回答案	 如: ZeroShotAgent, ReActAgent
Tools: 可執行的外部函數	例如: 搜索工具、計算器、自定義 API
AgentExecutor: 運行代理的循環控制器	例如: 處理迭代、錯誤、超時
Memory: 存儲對話/任務狀態	  例如: ConversationBufferMemory

常用 Agent 類型

① zero-shot-react-description	
基于工具描述直接決定調用哪個工具(無記憶)	
適用簡單工具調用、單輪任務② structured-chat-zero-shot-react-description	
支持結構化輸出(如 JSON),適合復雜工具參數	
適用需要精確控制工具輸入的場景③ chat-conversational-react-description	
結合對話記憶,支持多輪交互	
適用聊天式任務、需要上下文的工具調用④self-ask-with-search	
通過 “自問自答” 分解問題,逐步調用工具	
適用復雜推理任務(如多步數學題

Agent 的工作流程

1. 接收問題:理解用戶需要 例如計算質數之和。
2. 思考決策:是否需要工具? 選擇哪個工具? (因涉及數學計算所以判斷出需要調用Python_REPL工具)。
3. 生成工具調用:構造 Python 代碼(如編寫質數判斷函數并求和)。
4.執行工具:運行代碼并獲取結果(1060)。
5.整理回答:將工具返回的結果用自然語言解釋給用戶。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93142.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

為什么哈希表(字典)的查詢速度有時會突然變慢

哈希表(在許多語言中被稱為“字典”或“關聯數組”)的查詢速度,在理想情況下,應是接近“瞬時”的常數時間,然而,在特定場景下,其性能之所以會突然、無征兆地變慢,其根源,…

whisper 語種檢測學習筆記

目錄 transformers推理: transformers 源代碼 網上的語種檢測調用例子: 語種檢測 api transformers推理: https://github.com/openai/whisper/blob/c0d2f624c09dc18e709e37c2ad90c039a4eb72a2/whisper/decoding.py waveform, sample_rat…

第1節 從函數到神經網絡:AI思路的逆襲之路

🤔 開篇靈魂拷問 是不是覺得AI知識體系龐大到嚇人?看了一堆快餐視頻還是云里霧里?別慌!這個系列就是要幫你打通任督二脈,用"既快又慢、既深入又膚淺、既有趣又嚴肅"的方式講透AI基礎知識! &…

【科研繪圖系列】R語言繪制多種餅圖

文章目錄 介紹 加載R包 數據下載 導入數據 數據預處理 畫圖1 畫圖2 畫圖3 畫圖4 畫圖5 畫圖6 系統信息 參考 介紹 【科研繪圖系列】R語言繪制多種餅圖 加載R包 rm(list = ls()) library(ggstatsplot) library(ggplot2) library(plotrix) library(ggpubr

vue3權限樹封裝成組件

vue3權限樹組件 功能&#xff1a; 1、勾選節點、自動把父節點勾選。 2、取消勾選、子節點全部取消勾選。檢查父節點&#xff0c;如果只有這個子節點、遍歷把父節點取消勾選 3、filter過濾不僅展示父節點、相關子節點同時展示 4、 高亮顯示所有過濾數據 效果圖父組件引用 <te…

銓林接紙機學習記錄1

光電開關學習做保養也是檢查這些東西&#xff0c;包括氣路有沒漏氣&#xff0c;固定件松動、軌道清潔之內刀座暫停光電I23刀座行程磁性開關&#xff0c;這個是安全警戒光電&#xff0c;驅動側發射信號&#xff0c;操作側接收刀座暫停光電正常運行是空白的&#xff0c;當出現遮擋…

47.分布式事務理論

所有的事務都必須滿足ACID的原則: 原子性:事務中的所有操作,要么全部成功,要么全部失敗。 一致性:要保證數據庫內部完整性約束、聲明性約束。 持久性:對數據庫做的一切修改將永久保存,不管是否出現故障。 隔離性:對同一資源操作的事務不能同時發生。 分布式事務的…

【軟考】進度管理知識庫工具-挺方便

進度管理知識庫 全面解析項目管理中的進度管理核心概念、工具、技術和最佳實踐&#xff0c;幫助您高效管理項目時間線 六步流程法 規劃進度管理 - 制定進度管理計劃 定義活動 - 識別和記錄項目活動 排列活動順序 - 確定活動間的邏輯關系 估算活動持續時間 - 估算完成單項活動所…

PDF Replacer:高效便捷的PDF文檔內容替換專家

在日常工作和學習中&#xff0c;PDF文件因其格式穩定、兼容性強而被廣泛使用。然而&#xff0c;PDF文件的編輯和修改往往比其他文檔格式更加復雜。PDF Replacer正是為了解決這一痛點而設計的&#xff0c;它是一款方便實用的PDF文檔替換工具&#xff0c;能夠幫助用戶快速替換PDF…

Java中MybatisPlus使用多線程多數據源失效

Java中MybatisPlus使用多線程多數據源失效 文章目錄Java中MybatisPlus使用多線程多數據源失效一&#xff1a;背景二&#xff1a;解決方法三&#xff1a;其他導致DS失效的條件3.1、Transactional一&#xff1a;背景 Mybatis-Plus使用異步任務后不能找到指定設置的DS數據庫&…

機器翻譯:模型微調(Fine-tuning)與調優詳解

文章目錄一、模型微調&#xff08;Fine-tuning&#xff09;概述1.1 模型微調是什么&#xff1f;1.2 為什么需要微調&#xff1f;1.3 微調的核心步驟1.4 選擇微調策略1.5 訓練與優化1.6 微調 vs. 從頭訓練&#xff08;From Scratch&#xff09;1.7 微調工具推薦二、模型調優&…

如何使用 AI 大語言模型解決生活中的實際小事情?

在 AI 技術飛速發展的今天&#xff0c;大語言模型早已不是實驗室里的 “黑科技”&#xff0c;而是能實實在在融入日常生活的實用工具。從日常瑣事處理到學習工作輔助&#xff0c;只需掌握簡單的使用技巧&#xff0c;就能讓 AI 成為你的 “生活小助手”。本文將通過具體場景案例…

佰力博檢測與您探討低溫條件下如何測介電性能

在低溫條件下測量介電性能時&#xff0c;需要綜合考慮溫度控制、樣品制備、測試設備和測量方法等多個方面。1.溫度控制與降溫方法1.低溫測試中&#xff0c;溫度的精確控制是關鍵。低溫測試通常采用液氮或液氮泵進行降溫&#xff0c;以達到極低溫度&#xff08;如-196C&#xff…

大規模分布式光伏并網后對電力系統的影響

光伏發電作為一種清潔、可再生的能源&#xff0c;正融入我們的電力系統&#xff0c;但是&#xff0c;隨著新能源的發展&#xff0c;光伏發電的大規模并網&#xff0c;也給電網的穩定運行帶來了新的挑戰。下面小編將從四個方面&#xff0c;分別論述光伏并網對電網的影響以及如何…

LeetCode熱題100--146.LRU緩存--中等

1. 題目 請你設計并實現一個滿足 LRU (最近最少使用) 緩存 約束的數據結構。 實現 LRUCache 類&#xff1a; LRUCache(int capacity) 以 正整數 作為容量 capacity 初始化 LRU 緩存int get(int key) 如果關鍵字 key 存在于緩存中&#xff0c;則返回關鍵字的值&#xff0c;否則…

機器學習學習總結

一、機器學習到底是什么&#xff1f; 簡單說&#xff0c;機器學習就是讓計算機像人一樣 “從經驗中學習”。比如我們學騎自行車&#xff0c;摔多了就知道怎么保持平衡&#xff1b;計算機處理任務時&#xff0c;也能通過分析大量 “經驗數據”&#xff0c;自己找到規律&#xff…

Boost庫中boost::function函數使用詳解

1. 函數作用 boost::function 是 Boost 庫提供的一個 通用函數封裝器&#xff0c;可用于存儲、傳遞和調用任意可調用對象&#xff08;如普通函數、函數指針、Lambda、函數對象、成員函數指針等&#xff09;。它類似于 C11 及以上標準的 std::function。 作用總結&#xff1a; 可…

SQL Server安全刪除數據并釋放空間的技術方案

在SQL Server中執行大規模數據刪除時&#xff0c;直接使用DELETE語句可能導致日志文件暴漲、事務阻塞和性能下降。以下提供一種安全刪除數據并釋放磁盤空間的完整方案&#xff1a; 方案核心步驟 -- 設置讀未提交隔離級別&#xff08;避免鎖競爭&#xff09; SET TRAN ISOLATION…

EgoVLA——根據第一視角的人類視頻中訓練的VLA模型:助力家具組裝等人形靈巧操作任務的攻克(利用可穿戴手部追蹤)

前言 我在此文《ForceVLA——將具備力感知的MoE整合進π0的動作專家中&#xff1a;從而融合“視覺 語言 力反饋”三者實現精密插拔》的開頭說過&#xff0c;我司「七月在線」目前側重以下兩大本體的場景落地 人形層面&#xff0c;側重 1.1 人形靈巧操作 1.2 人形展廳講解機械…

廚具新風尚,解鎖廚房新體驗

在快節奏的現代生活中&#xff0c;廚房已不僅僅是烹飪的場所&#xff0c;更是家庭溫馨與創意的源泉。一款好的廚具&#xff0c;不僅能讓烹飪變得輕松愉悅&#xff0c;更能為餐桌增添無限風味。今天&#xff0c;就讓我們一起走進廚具的新世界&#xff0c;解鎖那些令人愛不釋手的…