介紹
在人工智能快速發展的領域中,處理和理解大量信息的能力變得越來越重要。輸入多文件代理抹布 - 一種強大的方法,將檢索功能增強的生成(RAG)與基於代理的系統結合起來,以創建可以在多個文檔中推理的AI。本指南將為您介紹這項激動人心的技術的概念,實施和潛力。
學習目標
- 了解多文件代理抹布系統及其架構的基本面。
- 了解嵌入和基於代理的推理如何增強AI生成上下文準確響應的能力。
- 探索高級檢索機制,以改善知識密集型應用中的信息提取。
- 洞悉多文件代理抹佈在研究和法律分析等複雜領域的應用。
- 發展評估抹布系統在AI驅動的內容生成和分析中的有效性的能力。
本文作為數據科學博客馬拉鬆的一部分發表。
目錄
- 了解抹布和多文件代理
- 為什麼多文件代理抹布是改變遊戲規則的?
- 多文件代理抹布系統的關鍵優勢
- 多文件代理抹布的構建塊
- 實施基本的多文檔代理抹布
- 步驟1:安裝所需庫
- 步驟2:設置API鍵和環境變量
- 步驟3:下載文檔
- 步驟4:創建向量和摘要工具
- 步驟5:創建代理
- 步驟6:分析代理的響應
- 解釋代理商與Longlora論文的互動
- 解釋代理商的行為:總結自lag和longlora
- 挑戰和考慮因素
- 常見問題
了解抹布和多文件代理
檢索增強的生成(RAG)是一種通過允許其訪問和使用外部知識來增強語言模型的技術。 RAG模型不僅依靠他們的訓練有素的參數,還可以從知識庫中檢索相關信息,以產生更準確和知情的響應。
多文件代理抹布通過使AI代理同時使用多個文檔來進一步採用此概念。這種方法對於需要從各種來源(例如學術研究,市場分析或法律文件審查)綜合信息的任務特別有價值。
為什麼多文件代理抹布是改變遊戲規則的?
讓我們理解為什麼多文件代理抹布是一個改變遊戲規則的人。
- 對上下文的更聰明理解:想像一下擁有一個超級聰明的助手,不僅讀了一本書,而且要讀一個圖書館來回答您的問題。這就是增強上下文理解的含義。通過分析多個文檔,AI可以將更完整的圖片拼湊在一起,從而為您提供真正捕捉大圖的答案。
- 提高棘手任務的準確性:我們都在小時候玩過“連接點”。多文檔代理抹布做類似的事情,但是信息。通過將各種來源的事實連接起來,它可以以更高的精度解決複雜的問題。這意味著更可靠的答案,尤其是在處理複雜的主題時。
- 處理信息超載,例如專業人士:在當今的世界中,我們淹沒了數據。多文件代理抹布就像一個增壓過濾器,篩選大量信息以查找真正相關的內容。這就像讓一群專家全天候工作,以消化和總結大量知識圖書館。
- 適應性和可成長的知識庫:將其視為可以輕鬆學習和擴展的數字大腦。隨著新信息的可用,多文檔的代理抹布可以無縫地融合它。這意味著您的AI助手始終是最新的,隨時可以用最新鮮的信息來解決最新問題。
多文件代理抹布系統的關鍵優勢
現在,我們將研究多文件代理抹布系統的關鍵優勢。
- 增壓學術研究:研究人員經常花數週或數月的時間綜合數百篇論文的信息。多文件的代理抹布可以大大加快這一過程,幫助學者迅速確定廣大文獻體系之間的關鍵趨勢,知識差距以及潛在的突破。
- 革新法律文件分析:律師處理案件檔案,合同和法律先例的山。這項技術可以迅速分析數千個文檔,發現關鍵細節,不一致和相關判例法,這可能需要人類的幾天或幾週才能揭露。
- 渦輪增壓市場情報:企業需要領先於趨勢和競爭。多文件代理抹布可以不斷掃描新聞文章,社交媒體和行業報告,提供實時見解,並幫助公司比以往任何時候都更快地做出數據驅動的決策。
- 輕鬆地導航技術文檔:對於工程師和IT專業人員,在鋪設技術文檔中找到正確的信息可能就像在乾草堆中搜索針頭一樣。這種AI驅動的方法可以快速查明各種手冊,故障排除指南和代碼存儲庫的相關部分,從而節省了無數小時的挫敗感。
多文件代理抹布的構建塊
想像一下,您正在建立一個超級智能的數字圖書館助理。該助手可以閱讀數千本書,了解複雜的問題,並使用來自多個來源的信息為您提供詳細的答案。從本質上講,這就是多文檔的代理抹布系統。讓我們分解使其成為可能的關鍵組件:
文檔處理
將所有類型的文檔(PDF,網頁,文字文件等)轉換為我們的AI可以理解的格式。
創建嵌入
將處理的文本轉換為代表信息含義和上下文的數值向量(數字序列)。
簡而言之,想像一下庫中每個段落的超含量摘要,但是您使用唯一的代碼,而不是單詞。該代碼以計算機快速比較和分析的方式捕獲信息的本質。
索引
它創建了一個有效的結構來存儲和檢索這些嵌入。這就像為我們的數字圖書館創建世界上最有效的卡目錄。它允許我們的AI快速找到相關信息,而無需詳細掃描每個文檔。
檢索
它使用查詢(您的問題)從索引嵌入中找到最相關的信息。當您提出一個問題時,該組件會通過我們的數字圖書館進行比賽,使用該超高效卡目錄來刪除所有潛在的相關信息。
基於代理的推理
AI代理在查詢的上下文中解釋檢索到的信息,決定如何使用它來提出答案。這就像擁有一個天才的AI代理,他不僅找到了正確的文件,而且還了解您的問題的更深層次的含義。他們可以連接不同來源的點,並找出回答您的最佳方法。
一代
它根據代理商的推理和檢索到的信息產生可讀的答案。這是我們的天才代理商用清晰,簡潔的語言向您解釋他們的發現的地方。他們採用了他們收集和分析的所有復雜信息,並以直接回答您的問題的方式呈現它。
這種功能強大的組合允許多文檔的代理抹布系統提供洞察力和答案,從大量知識中汲取的洞察力和答案,使它們對於許多領域的複雜研究,分析和解決問題的任務非常有用。
實施基本的多文檔代理抹布
首先,讓我們構建一個可以與三本學術論文一起使用的簡單代理抹布。我們將使用Llama_index庫,該庫為構建抹布系統提供了強大的工具。
步驟1:安裝所需庫
要開始構建AI代理,您需要安裝必要的庫。這是設置您的環境的步驟:
- 安裝Python:確保您在系統上安裝了Python。您可以從Python官方網站下載它:下載Python
- 設置虛擬環境:為您的項目管理依賴項創建虛擬環境是一個好習慣。運行以下命令來設置虛擬環境:
Python -M Venv ai_agent_env 源ai_agent_env/bin/activate#在Windows上,使用`ai_agent_env \ scripts \ activate`
- 安裝OpenAI API和LlamainDex:
PIP安裝OpenAi Llama-index == 0.10.27 Llama-index-llms-openai == 0.1.15 PIP安裝Llama-index-embeddings-openai == 0.1.7
步驟2:設置API鍵和環境變量
要使用OpenAI API,您需要一個API鍵。請按照以下步驟設置您的API密鑰:
- 獲取API密鑰:在OpenAI網站上註冊帳戶,並從API部分獲取您的API密鑰。
- 設置環境變量:將API密鑰存儲在環境變量中以確保其安全。將以下行添加到您的.bashrc或.zshrc文件(或為操作系統使用適當的方法)
導出openai_api_key ='your_openai_api_key_here'
- 訪問代碼中的API鍵:在Python代碼,導入必要的庫,然後使用OS模塊訪問API鍵
導入操作系統 進口Openai 導入NEST_ASYNCIO 來自llama_index.core.node_parser import stonencesplitter 來自llama_index.core.tools import functionTool,queryenginetool 來自llama_index.core.core.vector_stores導入元數據,濾波器條件 來自llama_index.core.agent intimpt functionCallingAgentWorker 來自llama_index.core.gagent Import Agentrunner 從輸入導入列表,可選 導入子過程 OpenAI.API_KEY = OS.GEGENV('OpenAi_Api_Key') #optionion,您只需直接添加OpenAI鍵即可。 (不是一個好練習) #openai.api_key ='your_openai_api_key_here' nest_asyncio.apply()
步驟3:下載文檔
如前所述,我只使用三篇論文來製作這種代理抹布,以後我們將在其他博客中將其擴展到更多論文。您可以使用自己的文檔(可選)。
#要下載的URL列表 urls = [ “ https://openreview.net/pdf?id=vtmbagcn7o”, “ https://openreview.net/pdf?id=6pmjorfdak”, “ https://openreview.net/pdf?id=hsyw5go0v8”, 這是給出的 #對應的文件名將文件保存為 論文= [ “ metagpt.pdf”, “ longlora.pdf”, “ selfrag.pdf”, 這是給出的 #在這兩個列表上循環並下載每個文件都有其各自的名稱 對於URL,郵政紙(URL,紙): subprocess.run([[“ wget”,url,“ -o”,paper])
步驟4:創建向量和摘要工具
以下功能get_doc_tools旨在創建兩個工具:矢量查詢工具和摘要查詢工具。這些工具有助於使用基於代理的檢索生成(RAG)方法查詢和匯總文檔。以下是步驟及其解釋。
def get_doc_tools( file_path:str, 名稱:str,, ) - > str: “”“從文檔獲取矢量查詢和摘要查詢工具。”“”
加載文檔並準備向量索引
該函數首先使用SimpleDirectoryReader加載文檔,該函數採用提供的File_path並讀取文檔的內容。加載文檔後,它將通過SendencesPlitter處理,該句子將文檔分解為較小的塊或節點,每個節點最多包含1024個字符。然後使用VectorStoreIndex索引這些節點,該工具允許有效的基於向量的查詢。該索引將稍後將用於基於向量相似性對文檔內容進行搜索,從而更容易檢索相關信息。
#從指定的文件路徑加載文檔 documents = simperedirectoryReader(input_files = [file_path])。 load_data() #將加載的文檔分為1024個字符的較小塊(節點) splitter = sensencesplitter(chunk_size = 1024) nodes = splitter.get_nodes_from_documents(文檔) #從節點創建一個矢量索引,以進行有效的基於矢量的查詢 vector_index = vectorstoreIndex(節點)
定義向量查詢功能
在這裡,該函數定義了vector_query,該功能負責回答有關文檔的特定問題。該功能接受查詢字符串和頁碼的可選列表。如果沒有提供頁碼,則查詢整個文檔。該功能首先檢查是否提供了page_numbers;如果沒有,則默認為空列表。
然後,它創建與指定的頁碼相對應的元數據過濾器。這些過濾器有助於將搜索範圍縮小到文檔的特定部分。 query_engine是使用向量索引創建的,並配置為使用這些過濾器以及相似性閾值,以找到最相關的結果。最後,該功能使用此引擎執行查詢並返迴響應。
#向量查詢功能 def vector_query( 查詢:str, page_numbers:可選[list [str]] =無 ) - > str: ”“”用於通過給定論文回答問題。 如果您對論文有特定的問題,有用。 始終將page_numbers留為無,除非您要搜索特定頁面。 args: 查詢(str):要嵌入的字符串查詢。 page_numbers(可選[list [str]]):通過一組頁過濾。沒有離開 如果我們想執行矢量搜索 在所有頁面上。否則,通過指定頁面的集合過濾。 ”“” page_numbers = page_numbers或[] metadata_dicts = [ {“鍵”:“ page_label”,“ value”:p in page_numbers中的p 這是給出的 query_engine = vector_index.as_query_engine( samelity_top_k = 2, 過濾器= metadatafilters.from_dicts( metadata_dicts, 條件= filterCondition.or ) ) 響應= query_engine.query(query) 返迴響應
創建向量查詢工具
該函數的這一部分創建了vector_query_tool,該工具將先前定義的vector_query函數鏈接到基於調用get_doc_tools時提供的名稱參數的動態生成名稱。
該工具是使用functionTool.from_defaults創建的,該工具會自動使用必要的默認設置配置它。現在,該工具可用於使用前面定義的函數對文檔進行基於向量的查詢。
#創建向量查詢工具 vector_query_tool = functionTool.from_defaults( name = f“ vector_tool_ {name}”, fn = vector_query )
創建摘要查詢工具
在最後一節中,該函數創建了用於匯總文檔的工具。首先,它從先前被拆分和索引的節點創建了一個摘要。該索引專為摘要任務而設計。然後以“ Tree_summarize”的響應模式創建summary_query_engine,該模式允許該工俱生成文檔內容的簡明摘要。
最終使用queryenginetool.from_defaults創建了summary_tool,該工具將查詢引擎鏈接到基於名稱參數的動態生成的名稱。還給出了該工具的描述,指示其目的是與匯總相關的查詢。現在,可以使用此摘要工具根據用戶查詢來生成文檔的摘要。
#摘要查詢工具 summary_index = summaryIndex(節點) summary_query_engine = summary_index.as_query_engine( response_mode =“ tree_summarize”, use_async = true, ) summary_tool = queryenginetool.from_defaults( name = f“ summary_tool_ {name}”, query_engine = summary_query_engine, 描述=(( f“對{名稱}有關的摘要問題有用” ), ) 返回vector_query_tool,summary_tool
調用功能為每篇論文構建工具
paper_to_tools_dict = {} 紙中的紙: 打印(f“獲取紙的工具:{paper}”) vector_tool,summary_tool = get_doc_tools(紙,路徑(PAPE).stem) Paper_to_tools_dict [Paper] = [vector_tool,summary_tool] prient_tools = [T paper_to_tools_dict [paper]]的紙張中的紙張 len(initial_tools)
該代碼處理每篇論文並為每個論文創建兩個工具:用於語義搜索的向量工具,以及用於生成簡明摘要的摘要工具,在這種情況下為6個工具。
步驟5:創建代理
早些時候,我們為代理創建了工具,現在我們將使用然後使用FunctionCallingAgentWorker類創建代理。我們將使用“ GPT-3.5-Turbo”作為LLM。
llm = OpenAI(型號=“ GPT-3.5-Turbo”) agent_worker = functionCallingAgentWorker.from_tools( initial_tools, llm = llm, 冗長= true ) 代理= AgentRunner(Agent_worker)
該代理現在可以回答有關我們處理過的三篇論文的問題。
步驟6:分析代理的響應
我們從三篇論文中詢問了代理商的不同問題,這是它的回答。以下是有關其內部工作方式的示例和解釋。
解釋代理商與Longlora論文的互動
在此示例中,我們詢問我們的代理商從三個研究論文中提取特定信息,特別是關於評估數據集以及Longlora研究中使用的結果。代理使用Vector查詢工具與文檔進行交互,這是對信息進行逐步處理的方式:
- 用戶輸入:用戶詢問了有關Longlora評估方面的兩個順序問題:首先關於評估數據集,然後涉及結果。
- 代理的查詢執行:代理商確定需要專門搜索Longlora文檔以獲取有關評估數據集的信息。它使用vector_tool_longlora函數,該功能是專門為longlora設置的向量查詢工具。
===調用功能=== 呼叫函數:vector_tool_longlora with args:{“ query”:“評估數據集”}
- 評估數據集的功能輸出:代理從文檔中檢索相關部分,確定Longlora中使用的評估數據集是“ PG19測試拆分”,這是由於其長形式文本性質而用於語言模型評估的數據集。
- 代理商的第二個查詢執行:在第一個響應之後,代理然後處理用戶問題的第二部分,向文檔查詢了longlora的評估結果。
===調用功能=== 調用功能:with args:{“ query”:“評估結果”}
- 評估結果的功能輸出:代理返回的詳細結果,顯示模型在更大的上下文大小的困惑方面表現更好。它突出了關鍵發現,例如具有較大上下文窗口的改進和特定的上下文長度(100K,65536和32768)。它還指出了一個權衡,因為擴展模型在較小的上下文大小上經歷了由於位置插值而導致的某些困惑降低,這是由於位置插值而導致的 - 這種模型中的常見限制。
- 最終LLM響應:代理將結果綜合為簡潔的響應,回答有關數據集的初始問題。評估結果將進一步解釋,總結了績效結果及其含義。
其他論文的示例很少
解釋代理商的行為:總結自lag和longlora
在這種情況下,代理人的任務是提供自橡膠和longlora的摘要。在這種情況下觀察到的行為與上一個示例不同:
摘要工具用法
===調用功能=== 調用函數:summary_tool_selfrag with args:{“ input”:“ self-rag”}
與較早的示例不同,該示例涉及查詢特定細節(例如評估數據集和結果),這裡的代理直接利用了為自lag和longlora設計的summary_tool函數。這表明了代理商根據問題的性質在查詢工具之間自適應切換的能力 - 當需要更廣泛的概述時摘要。
獨立的呼叫來分開摘要工具
===調用功能=== 調用功能:summary_tool_longlora with args:{“ input”:“ longlora”}
代理分別稱為summary_tool_selfrag和summary_tool_longlora獲得摘要,證明其有效處理多部分查詢的能力。它確定了需要為每篇論文量身定制的不同摘要工具,而不是執行單個合併的檢索。
回應的簡潔性和直接性
代理商提供的答復是簡潔的,並直接解決了提示。這表明代理可以有效提取高級見解,與上一個示例形成鮮明對比,在該示例中,它根據特定的向量查詢提供了更多顆粒狀的數據點。
這種相互作用強調了代理商提供高級概述與先前觀察到的詳細的,特定於上下文的響應的能力。行為的這種轉變強調了代理抹布系統根據用戶問題的性質調整其查詢策略的多功能性 - 無論是需要深入細節還是廣泛的摘要。
挑戰和考慮因素
雖然多文檔的代理抹布很強大,但要記住一些挑戰:
- 可伸縮性:隨著文檔的數量的增加,有效的索引和檢索變得至關重要。
- 連貫性:確保代理在整合來自多個來源的信息時會產生連貫的響應。
- 偏見和準確性:系統的輸出僅與其輸入文檔和檢索機制一樣好。
- 計算資源:處理和嵌入大量文檔可能是資源密集的。
結論
多文檔代理抹布代表了AI領域的重大進步,通過綜合來自多個來源的信息來實現更準確和上下文感知的響應。這種方法在研究,法律分析和技術文檔等複雜領域中尤其有價值,而精確的信息檢索和推理至關重要。通過利用嵌入,基於代理的推理和強大的檢索機制,該系統不僅可以增強AI生成的內容的深度和可靠性,而且還為在知識密集型行業中更複雜的應用鋪平了道路。隨著技術的不斷發展,多文件代理抹布有望成為從大量數據中提取有意義見解的重要工具。
關鍵要點
- 多文件代理抹布通過整合來自多個來源的信息來提高AI響應精度。
- 嵌入和基於代理的推理增強了系統生成上下文感知和可靠內容的能力。
- 該系統在研究,法律分析和技術文檔等複雜領域中特別有價值。
- 高級檢索機制可確保精確的信息提取,並支持知識密集型行業。
- 多文檔代理抹布代表了AI驅動的內容生成和數據分析中向前邁出的重要一步。
常見問題
Q1。什麼是多文檔代理抹布?答:多文件代理RAG結合了檢索功能生成(RAG)與基於代理的系統,使AI能夠跨多個文檔進行推理。
Q2。多文件代理抹佈如何提高準確性?答:通過綜合來自各種來源的信息,使AI可以連接事實並提供更精確的答案,從而提高了準確性。
Q3。在哪些領域是多文件代理抹布最有益的?答:它在學術研究,法律文檔分析,市場情報和技術文檔中特別有價值。
Q4。多文檔代理抹布系統的關鍵組件是什麼?答:關鍵組件包括文檔處理,創建嵌入,索引,檢索,基於代理的推理和生成。
Q5。嵌入在該系統中的作用是什麼?A.嵌入將文本轉換為數值向量,從而捕獲信息的含義和上下文,以進行有效的比較和分析。
本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。
以上是使用llamaindex構建多文件代理抹布的詳細內容。更多資訊請關注PHP中文網其他相關文章!

介紹 在Excel中有效地處理數據對於分析師來說可能具有挑戰性。鑑於關鍵的業務決策取決於準確的報告,因此格式化錯誤可能會導致重大問題。本文將幫助您

潛入擴散模型的世界:綜合指南 想像一下,在頁面上觀看墨水,其顏色巧妙地擴散到了迷人的圖案。這種自然擴散過程,其中顆粒從高濃度向低濃度移動

介紹 想像一下,瀏覽複雜的迷宮 - 您的目標是盡快逃脫。 存在幾條路徑?現在,圖片有一張圖的地圖,該地圖突出顯示有希望的路線和死胡同。這就是人造中啟發式功能的本質

介紹 回溯算法是一種有力的解決問題的技術,可以逐步構建候選解決方案。 這是計算機科學中廣泛使用的方法,在丟棄任何Potenti之前,系統地探索了所有可能的途徑

介紹 統計數據是一項至關重要的技能,適用於學術界。無論您是追求數據科學,進行研究還是簡單地管理個人信息,對統計的掌握都是必不可少的。 互聯網,尤其是距離

介紹 嘿,AI愛好者! 歡迎來到AV字節,即您友好的社區來源,以獲取AI的所有事物。扣緊了,因為本週在AI世界中一直很瘋狂!我們有一些令人震驚的東西

介紹 在我們在Raspberry Pi上構建RAG應用程序的系列文章的第二部分中,我們將在第一部分奠定的基礎上擴展,並在該基礎上創建並測試了核心管道。在第一部分中,我們將

介紹 在Andrej Karpathy的病毒推文“英語已成為新的編程語言”之後,這是X上的另一條趨勢推文,說:“未來像選項卡”。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具

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

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。