使用 LlamaIndex 建立簡單的 RAG 代理
LlamaIndex 是一個使用法學碩士建立情境增強生成式 AI 應用程式的框架。
什麼是上下文增強?
上下文增強是指向 LLM 模型提供附加相關資訊或上下文的技術,從而提高其對給定查詢的理解和回應。這種增強通常涉及檢索、整合外部資料來源(例如文件、嵌入)或將其附加到模型的輸入。目標是透過為模型提供必要的上下文來幫助模型提供更好、更準確和細緻的答案,從而使模型更加明智。檢索增強生成(RAG)是上下文增強最受歡迎的範例。
什麼是代理?
代理是由法學碩士提供支援的自動推理和決策引擎,它們使用工具來執行研究、資料擷取、網路搜尋和更多任務。它們可用於簡單的用例,例如基於資料回答問題,以便能夠決定並採取行動來完成任務。
在這篇文章中,我們將使用 LlamaIndex 建立一個簡單的 RAG 代理程式。
建構 RAG 代理
安裝依賴項
我們將使用 Python 使用 LlamaIndex 建立簡單的 RAG 代理程式。讓我們先安裝所需的依賴項,如下所示:
pip install llama-index python-dotenv
設定LLM並載入文檔
我們將使用 OpenAI 的 gpt-4o-mini 作為法學碩士。您需要將 API 金鑰放入環境變數檔案中。您可以在此處閱讀有關使用 LLamaIndex 設置本地法學碩士的更多資訊。
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, Settings from llama_index.llms.openai import OpenAI from dotenv import load_dotenv # Load environment variables (e.g., OPENAI_API_KEY) load_dotenv() # Configure OpenAI model Settings.llm = OpenAI(model="gpt-4o-mini") # Load documents from the local directory documents = SimpleDirectoryReader("./data").load_data() # Create an index from documents for querying index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine()
- 首先,我們使用 OpenAI 設定 LLM 模型並指定 gpt-4o-mini 模型。您可以根據您的需求切換到其他可用的模型/LLM。
- 然後,我們使用 SimpleDirectoryReader 從本機 ./data 目錄載入文件。此閱讀器掃描目錄、讀取檔案並建構資料以供查詢。
- 接下來,我們從載入的文件建立向量儲存索引,使我們能夠在查詢執行期間執行高效的基於向量的檢索。
為代理程式建立自訂函數
現在,讓我們定義代理可以用來執行任務的一些基本函數。
def multiply(a: float, b: float) -> float: """Multiply two numbers and returns the product""" return a * b def add(a: float, b: float) -> float: """Add two numbers and returns the sum""" return a + b
為代理程式創建工具
接下來,我們將根據先前定義的函數和查詢引擎建立工具,代理程式將使用這些工具來執行任務。這些工具可作為代理在處理不同類型的查詢時可以利用的實用程式。
from llama_index.core.tools import FunctionTool, QueryEngineTool # Wrap functions as tools add_tool = FunctionTool.from_defaults(fn=add) multiply_tool = FunctionTool.from_defaults(fn=multiply) # Create a query engine tool for document retrieval space_facts_tool = QueryEngineTool.from_defaults( query_engine, name="space_facts_tool", description="A RAG engine with information about fun space facts." )
- FunctionTool 包裝了加法和乘法函數並將它們公開為工具。代理現在可以存取這些工具來執行計算。
- QueryEngineTool 包裝了 query_engine,以允許代理從向量儲存中查詢和檢索資訊。我們將其命名為 space_facts_tool 並附有說明,表明工具可以檢索有關空間事實的資訊。您可以攝取任何內容並根據攝取的資料自訂工具。
創建代理
我們現在將使用 ReActAgent 建立代理程式。代理將負責決定何時使用這些工具以及如何回應查詢。
from llama_index.core.agent import ReActAgent # Create the agent with the tools agent = ReActAgent.from_tools( [multiply_tool, add_tool, space_facts_tool], verbose=True )
該代理程式使用 ReAct 框架,該框架允許模型透過以邏輯順序利用給定工具來推理並採取行動。代理程式使用我們建立的工具進行初始化,並且 verbose=True 標誌將輸出有關代理如何推理和執行任務的詳細資訊。
運行代理
最後,讓我們在互動式循環中執行代理,它會處理使用者查詢,直到我們退出。
while True: query = input("Query: ") if query == "/bye": exit() response = agent.chat(query) print(response) print("-" * 10)
RAG 代理如何工作?
- 當您提出與您攝取的文件相關的問題時,space_facts_tool(即向量儲存工具)會使用 query_engine 檢索相關資訊。
- 當您要求計算時,代理程式會使用 add_tool 或 multiply_tool 來執行這些任務。
- 代理程式根據使用者查詢即時決定使用哪個工具並提供輸出。
以上是使用 LlamaIndex 建立簡單的 RAG 代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。
