LangChain 是一個專為大語言模型(LLM)應用開發設計的開源框架,核心作用是把大模型和各種外部資源(數據庫、API、文檔)、工具(搜索引擎、計算器)“串” 起來,讓你不用從零寫代碼,就能快速搭建複雜的 AI 應用(比如智能問答機器人、文檔分析工具、自主代理)。
一、核心定位:解決大模型的 “先天缺陷”
二、LangChain 核心組件(白話版)
1. 模型輸入輸出(Model I/O):和大模型的 “對話接口”
- 核心功能:
- Prompt 模板:不用每次寫重複的指令,比如做 “文檔問答” 時,模板可以固定成
“請根據下面的文檔回答問題:{文檔內容}\n問題:{用户問題}”,只需填變量; - 模型調用:支持 OpenAI、Anthropic、國內的智譜 AI、文心一言等主流大模型,一行代碼切換模型;
- 輸出解析:把大模型返回的 “自然語言” 轉成結構化數據(比如 JSON、列表),方便後續處理。
- 白話例子:你要做一個 “古詩生成器”,可以用 Prompt 模板固定格式
“請生成一首關於{主題}的七言絕句,語言優美”,調用模型時只傳 “主題 = 春天”,輸出解析器自動把詩句拆分成 “標題 + 四句詩” 的結構。
2. 數據連接(Data Connection):讓大模型 “讀” 外部數據
- 核心功能:
- 文檔加載器:支持讀取各種格式的文件 ——PDF、Word、TXT、Excel,甚至網頁、Notion、數據庫的數據;
- 文本分割器:把大文檔切成小片段(因為大模型有上下文長度限制),比如把一本 100 頁的 PDF 切成 500 字 / 段的小文本;
- 向量存儲與檢索:這是最核心的功能!把文本片段轉成向量(用 Embedding 模型),存到向量數據庫(比如 Chroma、FAISS),用户提問時,先檢索和問題最相關的文本片段,再傳給大模型回答 —— 這樣既保證回答準確,又避免 “胡説八道”。
- 白話例子:你想做一個 “公司內部文檔問答機器人”,用 LangChain 的 PDF 加載器讀取公司手冊,分割成小片段,轉成向量存起來;用户問 “年假怎麼休”,系統先檢索手冊裏關於 “年假” 的片段,再讓大模型基於這個片段回答,保證答案 100% 符合公司規定。
3. 鏈(Chains):把組件串起來的 “流水線”
- 常見的鏈類型:
- LLMChain:最基礎的鏈 ——Prompt 模板 + 大模型 + 輸出解析器,比如 “生成古詩” 就用這個;
- RetrievalQA:檢索增強問答鏈 —— 文檔加載 → 分割 → 向量檢索 → 大模型回答,這是做 “文檔問答” 的標配鏈;
- SequentialChain:串行鏈 —— 把多個鏈串起來,比如 “先生成古詩 → 再把古詩翻譯成英文”。
- 白話例子:RetrievalQA 鏈的工作流程:
4. 記憶(Memory):讓大模型有 “長期記憶”
- 常見的記憶類型:
- ConversationBufferMemory:簡單的 “緩衝區記憶”,把所有歷史對話都存起來,適合短對話;
- ConversationSummaryMemory:摘要記憶,把長對話總結成一句話存起來,節省上下文空間;
- VectorStoreRetrieverMemory:向量記憶,把歷史對話轉成向量,只檢索和當前問題相關的歷史內容。
- 白話例子:你和機器人聊:“我叫張三,喜歡打籃球” → 過了一會兒問 “我喜歡什麼運動”,帶 Memory 的機器人會回答 “你喜歡打籃球”;沒有 Memory 的機器人會説 “我不知道”。
5. 智能代理(Agents):讓大模型 “自主幹活”
- 核心邏輯:
- 常用工具:搜索引擎(Google、Bing)、計算器、數據庫查詢、API 調用、代碼執行器(比如讓模型寫 Python 代碼算複雜數學題)。
- 白話例子:用户問 “幫我查一下蘋果公司最新的股價,再計算市盈率”,Agent 會:
6. 工具(Tools):Agent 能調用的 “外掛”
- 內置工具舉例:
SerpAPI:調用搜索引擎查實時信息;Calculator:做數學計算;PythonREPL:執行 Python 代碼;SQLDatabaseToolkit:操作 SQL 數據庫。
三、LangChain 能做什麼?(典型應用場景)
四、快速上手:5 行代碼搭一個簡單的 RAG 問答
python
運行
# 1. 安裝 LangChain 相關包
# pip install langchain openai chromadb pypdf
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
# 2. 加載 PDF 文檔
loader = PyPDFLoader("你的文檔.pdf")
documents = loader.load()
# 3. 分割成小文本片段
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
texts = text_splitter.split_documents(documents)
# 4. 轉成向量,存到 Chroma 向量庫
db = Chroma.from_documents(texts, OpenAIEmbeddings())
# 5. 搭建 RAG 鏈,開始問答
qa_chain = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=db.as_retriever())
print(qa_chain.run("你的問題是什麼?"))
五、關鍵注意事項(避坑指南)
六、LangChain 家族成員
- LangChain Python:最核心的版本,功能最全;
- LangChain JS/TS:前端開發者用的版本,適合做瀏覽器或 Node.js 應用;
- LangChain Hub:Prompt 模板和鏈的共享平台,直接抄別人的優秀模板;
- LangSmith:LangChain 官方的調試和監控平台,幫你排查應用問題。