LangChain 與大型語言模型 (LLM) 的預訓練無關。它完全專注於應用層,圍繞已訓練好的模型建立用例和軟體。
為了理解 LangChain 的定位,我們可以將 LLM 應用的生命週期分為三個階段:
第一階段:預訓練(「大腦」的創建)
預訓練是什麼:這是透過向模型輸入大量資料集(例如,維基百科、Common Crawl)來訓練其理解語言的過程,它涉及調整神經網路中數十億個權重。
哪些機構或個人在進行預訓練有OpenAI(GPT-4)、Google(Gemini)、Meta(Llama 3)、Mistral,而使用的工具包括PyTorch、TensorFlow、JAX、大型 GPU 叢集。
LangChain 在此階段是沒有角色的。
第二階段:微調(可選專精)
基於預訓練模型,並在更小更具體的資料集(例如,醫療記錄)上對其進行進一步訓練,以使其更擅長特定任務。
LangChain 在此階段的作用亦是極少,始終LangChain 本身並非訓練框架。
第三階段:編排與應用(「邏輯」層)
將已完成的模型連接到現實世界,這包括向模型發送提示、獲取答案,並根據答案執行操作(例如,在 PDF 中尋找資料或發送電子郵件)。
這正是 LangChain 的角色,它是一個用於將不同組件「鏈接」在一起,以構建應用程式的框架。
換言之,LangChain 是一個中間件庫(支援 Python 和 JavaScript/TypeScript),旨在解決開發者在使用 LLM 時遇到的特定問題。如果把 LLM 比喻成引擎,那麼 LangChain 就是底盤、方向盤和變速箱,它們共同將引擎變成一輛可以駕駛的汽車。
其主要功能包括:
1) 情境管理 (RAG)
LLM 存在「知識截止點」(它們不知道今天發生了什麼),也不知道您的公司私有資料。若你希望 ChatGPT 回答有關您私有人力資源政策 PDF 的問題,LangChain 提供了一些工具來載入 PDF,將文字分割成區塊,將它們儲存在向量資料庫中,並檢索相關區塊,連同您的問題一起傳送給 LLM,這被稱為檢索增強生成 (RAG)。
2) 鍊式調用
現實世界的任務很少只有一個提示。若你想翻譯使用者的電子郵件,進行概括,然後撰寫一份禮貌的回覆,LangChain 允許你創造一個「鏈」:
輸入 -> 提示 1(翻譯) -> 輸出 A
輸出 A -> 提示 2(概括) -> 輸出 B
輸出 B -> 提示 3(撰寫回應) -> 最終結果
3) 智能體(推理循環)
有時你事先不知道步驟順序。你希望 AI 能自行推斷。
LangChain 定義了「智能體」,你給語言學習模型 (LLM) 提供一個工具清單(例如,「Google搜尋」、「計算器」、「天氣 API」),智能體向 LLM 詢問:「根據這個使用者問題,我應該使用哪個工具?」 LLM 做出決定,LangChain 運行該工具,並將結果反饋給 LLM,如此循環往復,直到找到答案。
4) 模型無關性
你使用 OpenAI 開發了一個應用,但突然間 Anthropic 的 Claude 3 變得更便宜或更好用了,你不想重寫整個應用程式。LangChain 提供了一個標準介面,你只需修改一行程式碼,即可在 ChatOpenAI 和 ChatAnthropic 之間輕鬆切換。
換言之,LangChain 是跟NLP 的用例有著密切的關係。