目錄
- LangChain是什麼?
- LangChain的三層架構
- LangChain的建構模塊
- 整合中心
- 文件載入器
- 嵌入模型
- 向量存儲
- 使用LangChain的建議
- LangSmith:可觀測性平台
- 使用LangSmith進行RAG應用
- 使用LangChain進行主題摘要
- 使用Prompt Hub管理提示
- 使用LangSmith進行模型微調評估
🧩 LangChain是什麼?
LangChain是一款應用開發框架,可幫助用戶輕鬆構建基於人工智能的應用程序。我們可以將其想像成一個三層的蛋糕結構。底層是我們的平台,包括LangSmith(一個可觀測性平台)和Prompt Hub。中間是我們非常受歡迎的開源庫,其中包含多個用於構建語言模型應用程序的組件。最頂層則是使用這些組件構建的不同應用用例。
📦 LangChain的三層架構
LangChain的架構包括三個層次:平台、開源庫和應用用例。
底層是 平台,其中包括LangSmith和Prompt Hub。LangSmith是我們的可觀測性平台,可以幫助您深入了解運行RAG應用程序時所發生的內部運作。它提供了一個跟踪功能,顯示了運行RAG應用程序時的所有操作。Prompt Hub是一個方便管理和存儲提示的庫,您可以在其中找到各種不同應用程序使用的提示。
中間層是 開源庫,擁有多個組件,用於構建LLM應用程序。這些組件包括整合中心、文件載入器、嵌入模型和向量存儲。整合中心展示了LangChain的各個組件之間的集成,包括500多個不同的整合,從文檔載入器、向量存儲到LLMs。其中,Elastic是第二受歡迎的向量存儲,被廣泛使用。
頂層是 應用用例,您可以使用這些組件構建各種不同的應用。您可能已經在之前的演示中看到了一些例子,例如摘要和RAG,這只是其中的一部分。從文件載入器到嵌入模型,LangChain給了用戶在每個組件中多種不同的選擇。
⚙️ LangChain的建構模塊
LangChain的開源庫包含多個模塊,用於構建LLM應用程序。以下是這些模塊的範圍:
整合中心
LangChain的整合中心展示了它與其他組件之間的集成。您可以在此處找到500多個整合的組件,包括文檔載入器、向量存儲和LLMs。其中,Elastic是第二受歡迎的向量存儲,被廣泛使用。
文件載入器
文件載入器是一個組件,用於從各種不同的結構化和非結構化數據源加載數據。您可以從公有或私有的來源中加載數據,並將其存儲到您想要的任何向量存儲中。
嵌入模型
嵌入模型是LangChain的組件之一,它擁有40多種不同的嵌入模型。嵌入模型是將文本轉換為特徵向量的關鍵組件。您可以輕鬆地使用這些嵌入模型來嵌入您的數據。
向量存儲
LangChain提供50多種不同的向量存儲組件,這些組件用於存儲嵌入向量。其中Elastic是其中一個最受歡迎的選項之一。向量存儲組件可與其他組件輕松交互,使您能夠在應用程序中輕鬆地更換和使用不同的LLMs。
🔑 使用LangChain的建議
使用LangChain構建應用程序時,我們有一些建議供您參考:
- 探索不同的組件選擇:LangChain提供了多個組件選擇,包括文件載入器、嵌入模型和向量存儲。請仔細研究這些組件,並根據您的應用需求作出選擇。
- 查看用例文檔:LangChain網站上提供了關於所有用例的文檔。您可以使用這些文檔來探索和了解不同用例的使用方法。還有Colab筆記本供您使用,以更深入地瞭解各種用例,包括摘要、代理和RAG等。
- 最大化組件選擇:LangChain為每個組件提供了多種不同的選項。例如,您可以選擇適合您文章載入的組件、超過40個的嵌入模型和50多個的向量存儲選項。請善用這些選擇,以滿足您的具體需求。
- 使用Prompt Hub進行提示管理:Prompt Hub是一個方便的庫,用於管理和存儲提示。您可以在其中找到各種不同用例的提示,也可以在其中存儲和共享您自己的提示。這樣可以更好地組織和管理提示。
- 使用LangSmith進行調試和評估:LangSmith是一個可觀測性平台,可以提供詳細的調試信息,幫助您深入了解應用程序的運行狀態。您可以使用LangSmith來記錄和查看LLM生成的結果,並進行分析和評估。
👁️ LangSmith:可觀測性平台
在運行RAG應用程序時,我們經常無法深入了解內部情況。LangSmith是一個可觀測性平台,可以幫助我們更好地理解應用程序內部的操作。
使用LangSmith,您可以看到運行RAG應用程序時的跟踪信息,對於定位問題和進行分析非常有幫助。您可以看到檢索階段、LLM生成、文檔加載等步驟的詳細信息。此外,LangSmith還提供了對生成結果的可視化,可以更清晰地了解應用程序的工作過程。
LangSmith的目的是向用戶展示應用程序的內部運行情況,以幫助用戶瞭解AI應用的運作方式。使用LangSmith,您可以更好地理解RAG應用程序的整體工作流程和每個步驟的作用。
🏭 使用LangSmith進行RAG應用
在之前的演示中,我們已經了解到了RAG(Retrieval-Augmented Generation)的工作原理。現在,讓我們看看如何使用LangSmith來構建並運行RAG應用程序。
首先,在LangChain中,您需要進行文件加載、拆分、存儲和檢索等步驟。在使用Elastic作為存儲方式的情況下,您可以輕松地從Elastic中檢索與您的問題相關的文檔。
接下來,您需要使用LLM來對結果進行摘要。在運行RAG應用程序時,您可以使用LangSmith,它可以幫助您更好地了解生成過程。從詳細的蹤跡信息到生成結果的可視化,LangSmith提供了對應用程序內部運行情況的全面觀察。
使用LangSmith,您可以輕鬆記錄、分析和評估RAG應用程序的運行狀態。它提供了一個便捷而直觀的工具,幫助您深入了解AI應用的運行情況。
📝 使用LangChain進行主題摘要
主題摘要是人們經常需要進行的一項任務,也是使用LangChain可以完成的一個任務。當有成千上萬的用戶問題需要摘要成主題時,我們希望構建一個工具來實現這一目標。
使用LangChain,您可以採用不同的方法來處理主題摘要。對於篇幅較小且可以容納在LLM中的上下文,您可以將所有內容包含在一個LLM中。例如,Anthropic目前具有10萬個令牌的上下文窗口,這可以容納一個72頁的PDF。這已經非常不錯了。
但對於更大範圍的數據源,您可以採用其他方法,例如分割數據、嵌入每個分割並進行聚類,從聚類中隨機抽樣,對這些樣本進行摘要。這是一種減少傳遞給LLM的信息量的方法。您還可以採用稱為Map-Reduce的方法,將文檔分割並進行摘要,然後摘要這些摘要。我們使用LangChain對所有這些問題進行了處理,並發現不同的方法是一致的。
使用LangChain,您可以從文件載入到嵌入模型再到向量存儲等每個組件中選擇多種不同的選項。請根據您的具體需求選擇適合您的方法。
📚 使用Prompt Hub管理提示
Prompt Hub是一個方便的庫,用於管理和存儲提示。您可以在其中找到各種不同用例的提示,也可以存儲和共享您自己的提示。
在Prompt Hub中,您可以找到許多您可以直接使用的提示,包括RAG應用程序、摘要和代理等。這些提示是由社區共享的,非常實用。當然,您也可以在其中存儲您自己的提示,可以選擇共享或僅供您自己使用。
在構建AI應用程序時,提示的管理可能會變得很複雜且難以控制。Prompt Hub為您提供了一個整體的解決方案,讓您能夠更好地組織、管理和共享提示。這將使開發過程更加流暢且高效。
請務必嘗試使用Prompt Hub,探索其中提供的各種提示。您將發現它對於加速開發過程非常有幫助。
💡 使用LangSmith進行模型微調評估
最近,我們使用LangSmith進行了一項微調評估實驗,用於知識圖譜提取。這是一個典型的問題,您可能已經聽說過微調,以及何時應該使用RAG。
微調非常適用於修改形式,例如提取,但不適用於事實檢索。事實檢索方面,RAG無疑更加優秀,也有許多相關資源可供參考。我們希望通過進行提取任務的微調評估,測試LangSmith的性能。
我們選擇了一個知識圖譜提取任務,該任務需要從文本中提取主謂賓三元組。這是一項有點特殊的任務。在最近的開源庫中,我們找到了一些有趣的例子,介紹了如何提問,如何從文本中檢索這些三元組。您可以使用LLM來執行此三元組提取。
使用LangSmith,您可以將您的應用程序生成的每一個結果都存儲到LangSmith中。這樣,您就可以隨時在LangSmith中查看所有生成的結果,並以不同的方式進行過濾。我們通過過濾出所有不好的生成語句來構建了一個訓練集。然後,我們使用來自LangSmith的數據集對LLMA2進行了微調,並使用LangSmith進行評估。
使用LangSmith,您可以輕鬆記錄、分析和評估您的生成結果。它提供了一個將應用程序的生成結果紀錄下來的便捷方法。您可以使用LangSmith來存儲、過濾、潔淨和評估數據,為您的模型微調提供有力的支持。
總結
LangChain是一個應用開發框架,可以幫助您構建基於人工智能的應用程序。它具有三層結構,包括平台、開源庫和應用用例。開源庫包括多個組件,用於構建不同的LLM應用程序。LangSmith是LangChain的一個重要組件,可以提供可觀測性功能,幫助您了解應用程序的內部運行情況。
建議您嘗試不同的組件選擇,像Prompt Hub等等。發掘以LangChain為基礎的不同用例,並根據具體需求選擇適合您的模塊。使用LangSmith,您可以更好地理解運行RAG應用程序的內部運作方式。
請隨時聯繫我,我們非常樂意回答您的問題。
FAQ
Q:LangChain支持哪些語言模型? A:LangChain具有多個嵌入模型可供選擇。您可以在LangChain文檔中找到有關這些模型的詳細信息,並根據您的需求進行選擇。
Q:我可以改變組件嗎? A:是的,使用LangChain,您可以在組件之間自由切換和更換。這使得構建應用程序變得非常靈活。
Q:LangSmith是否可用於其他模型的調試和評估? A:是的,LangSmith不僅適用於RAG模型,還適用於您使用LangChain構建的其他應用程序。它提供了一個可觀測性平台,幫助您更好地了解應用程序的運行情況。
Q:Prompt Hub是否支持共享提示? A:是的,Prompt Hub允許您共享提示。您可以選擇將提示共享給其他用戶,或僅供自己使用。
Q:LangChain是否支持微調? A:是的,LangChain支持微調。您可以使用LangSmith收集和整理生成結果,並使用這些結果進行微調和評估。
Q:哪裡可以找到LangChain的用例文檔? A:您可以在LangChain官網上找到用例文檔。那裡有對各種用例的詳細介紹和使用指南。