LlamaIndex:賦能大型語言模型的數據框架
LlamaIndex是一個基於大型語言模型(LLM)的應用數據框架。像GPT-4這樣的LLM預先訓練了海量公共數據集,開箱即用地提供強大的自然語言處理能力。然而,如果沒有訪問您自己的私有數據,它們的效用將受到限制。
LlamaIndex允許您通過靈活的數據連接器,從API、數據庫、PDF等多種來源攝取數據。這些數據被索引成針對LLM優化的中間表示。然後,LlamaIndex允許通過查詢引擎、聊天界面和LLM驅動的智能體與您的數據進行自然語言查詢和對話。它使您的LLM能夠大規模訪問和解釋私有數據,而無需對模型進行重新訓練。
無論您是尋求簡單自然語言查詢數據方法的初學者,還是需要深度定制的高級用戶,LlamaIndex都能提供相應的工具。高級API讓您只需五行代碼即可上手,而低級API則允許您完全控制數據攝取、索引、檢索等更多功能。
LlamaIndex使用檢索增強生成(RAG)系統,該系統將大型語言模型與私有知識庫相結合。它通常包括兩個階段:索引階段和查詢階段。
圖片來自高級概念
在索引階段,LlamaIndex會將私有數據高效地索引到向量索引中。此步驟有助於創建特定於您領域的、可搜索的知識庫。您可以輸入文本文檔、數據庫記錄、知識圖譜和其他數據類型。
本質上,索引將數據轉換為數值向量或嵌入,以捕捉其語義含義。它能夠快速進行跨內容的相似性搜索。
在查詢階段,RAG管道根據用戶的查詢搜索最相關的信息。然後,將這些信息與查詢一起提供給LLM,以創建準確的響應。
此過程允許LLM訪問其初始訓練中可能未包含的當前和更新的信息。
此階段的主要挑戰是從可能存在的多個知識庫中檢索、組織和推理信息。
在我們的PineCone檢索增強生成代碼示例中了解更多關於RAG的信息。
在我們深入LlamaIndex教程和項目之前,我們必須安裝Python包並設置API。
我們可以使用pip簡單地安裝LlamaIndex。
<code>pip install llama-index</code>
默認情況下,LlamaIndex使用OpenAI GPT-3 text-davinci-003模型。要使用此模型,您必須設置OPENAI_API_KEY。您可以創建一個免費帳戶,並通過登錄OpenAI的新API令牌來獲取API密鑰。
<code>pip install llama-index</code>
此外,請確保您已安裝openai包。
<code>import os os.environ["OPENAI_API_KEY"] = "INSERT OPENAI KEY"</code>
在本節中,我們將學習如何使用LlamaIndex創建一個簡歷閱讀器。您可以通過訪問LinkedIn個人資料頁面,單擊“更多”,然後“保存為PDF”來下載您的簡歷。
請注意,我們使用DataLab運行Python代碼。您可以在LlamaIndex:向LLM添加個人數據工作簿中訪問所有相關的代碼和輸出;您可以輕鬆創建自己的副本以運行所有代碼,而無需在您的計算機上安裝任何內容!
在運行任何內容之前,我們必須安裝llama-index、openai和pypdf。我們安裝pypdf以便我們可以讀取和轉換PDF文件。
<code>pip install openai</code>
我們有一個名為“Private-Data”的目錄,其中只包含一個PDF文件。我們將使用SimpleDirectoryReader讀取它,然後使用TreeIndex將其轉換為索引。
<code>%pip install llama-index openai pypdf</code>
一旦數據被索引,您就可以開始通過使用as_query_engine()提問。此函數使您可以詢問文檔中特定信息的問題,並在OpenAI GPT-3 text-davinci-003模型的幫助下獲得相應的響應。
注意:您可以按照在Python教程中使用GPT-3.5和GPT-4通過OpenAI API的說明,在DataLab中設置OpenAI API。
正如我們所看到的,LLM模型準確地回答了查詢。它搜索了索引並找到了相關信息。
<code>from llama_index import TreeIndex, SimpleDirectoryReader resume = SimpleDirectoryReader("Private-Data").load_data() new_index = TreeIndex.from_documents(resume)</code>
<code>query_engine = new_index.as_query_engine() response = query_engine.query("When did Abid graduated?") print(response)</code>
我們可以進一步詢問認證信息。似乎LlamaIndex已經完全了解了候選人,這對於尋找特定人才的公司來說可能是有利的。
<code>Abid graduated in February 2014.</code>
<code>response = query_engine.query("What is the name of certification that Abid received?") print(response)</code>
創建索引是一個耗時的過程。我們可以通過保存上下文來避免重新創建索引。默認情況下,以下命令將保存存儲在./storage目錄中的索引存儲。
<code>Data Scientist Professional</code>
完成後,我們可以快速加載存儲上下文並創建索引。
<code>new_index.storage_context.persist()</code>
為了驗證它是否正常工作,我們將向查詢引擎提出簡歷中的問題。看來我們已經成功加載了上下文。
<code>from llama_index import StorageContext, load_index_from_storage storage_context = StorageContext.from_defaults(persist_) index = load_index_from_storage(storage_context)</code>
<code>query_engine = index.as_query_engine() response = query_engine.query("What is Abid's job title?") print(response)</code>
除了問答之外,我們還可以使用LlamaIndex創建個人聊天機器人。我們只需要使用as_chat_engine()函數初始化索引即可。
我們將問一個簡單的問題。
<code>Abid's job title is Technical Writer.</code>
<code>query_engine = index.as_chat_engine() response = query_engine.chat("What is the job title of Abid in 2021?") print(response)</code>
並且無需提供額外的上下文,我們將提出後續問題。
<code>Abid's job title in 2021 is Data Science Consultant.</code>
<code>response = query_engine.chat("What else did he do during that time?") print(response)</code>
很明顯,聊天引擎運行完美無缺。
構建語言應用程序後,您時間軸上的下一步是閱讀關於在雲中使用大型語言模型(LLM)與在本地運行它們的優缺點。這將幫助您確定哪種方法最適合您的需求。
我們的下一個項目涉及開發一個可以響應來自維基百科的問題並將它們轉換為語音的應用程序。
代碼源和附加信息可在DataLab工作簿中找到。
首先,我們將從意大利 - 維基百科網頁抓取數據,並將其保存為data文件夾中的italy_text.txt文件。
<code>pip install llama-index</code>
接下來,我們需要安裝必要的包。 elevenlabs包允許我們使用API輕鬆地將文本轉換為語音。
<code>import os os.environ["OPENAI_API_KEY"] = "INSERT OPENAI KEY"</code>
通過使用SimpleDirectoryReader,我們將加載數據並將TXT文件轉換為使用VectorStoreIndex的向量存儲。
<code>pip install openai</code>
我們的計劃是詢問有關該國的一般性問題,並從LLM query_engine獲得答复。
<code>%pip install llama-index openai pypdf</code>
之後,我們將使用llama_index.tts模塊訪問ElevenLabsTTS api。您需要提供ElevenLabs API密鑰才能啟動音頻生成功能。您可以在ElevenLabs網站上免費獲得API密鑰。
<code>from llama_index import TreeIndex, SimpleDirectoryReader resume = SimpleDirectoryReader("Private-Data").load_data() new_index = TreeIndex.from_documents(resume)</code>
我們將response添加到generate_audio函數中以生成自然語音。為了收聽音頻,我們將使用IPython.display的Audio函數。
<code>query_engine = new_index.as_query_engine() response = query_engine.query("When did Abid graduated?") print(response)</code>
這是一個簡單的示例。您可以使用多個模塊來創建您的助手,例如Siri,它通過解釋您的私有數據來回答您的問題。有關更多信息,請參閱LlamaIndex文檔。
除了LlamaIndex之外,LangChain還允許您構建基於LLM的應用程序。此外,您可以閱讀數據工程和數據應用程序的LangChain入門,以了解您可以使用LangChain執行的操作概述,包括LangChain解決的問題和數據用例示例。
LlamaIndex提供了一個完整的工具包來構建基於語言的應用程序。最重要的是,您可以使用Llama Hub中的各種數據加載器和智能體工具來開發具有多種功能的複雜應用程序。
您可以使用一個或多個插件數據加載器將自定義數據源連接到您的LLM。
來自Llama Hub的數據加載器
您還可以使用智能體工具來集成第三方工具和API。
來自Llama Hub的智能體工具
簡而言之,您可以使用LlamaIndex構建:
要詳細了解這些用例,請訪問LlamaIndex文檔。
LlamaIndex提供了一個強大的工具包,用於構建檢索增強生成系統,該系統結合了大型語言模型和自定義知識庫的優勢。它能夠創建一個特定領域數據的索引存儲,並在推理過程中利用它,為LLM提供相關的上下文以生成高質量的響應。
在本教程中,我們學習了LlamaIndex及其工作原理。此外,我們僅使用幾行Python代碼就構建了一個簡歷閱讀器和文本轉語音項目。使用LlamaIndex創建LLM應用程序非常簡單,它提供了一個龐大的插件、數據加載器和智能體庫。
要成為一名專家級LLM開發人員,下一步是參加大型語言模型概念大師課程。本課程將使您全面了解LLM,包括它們的應用、訓練方法、倫理考慮和最新研究。
以上是LlamainDEX:基於大語模型(LLM)應用程序的數據框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!