搜尋
首頁科技週邊人工智慧縮放多文件代理抹布來處理10個文檔

介紹

在我以前的博客文章中,使用LlamainDex構建多文件代理抹布,我演示瞭如何創建一個可以使用LlamainDex在三個文檔上處理和查詢的檢索型生成一代(RAG)系統。儘管這是一個有力的開始,但現實世界中的應用程序通常需要能夠處理更大的文檔語料庫。

該博客將著重於將該系統從三個文檔擴展到11及以後。我們將研究代碼,擴展的挑戰以及如何構建可以從較大的來源中動態檢索信息的有效代理。

學習目標

  • 了解使用LlamainDex的10多個文檔到超過10個文檔,了解縮放多文檔的代理抹布系統。
  • 了解如何構建和集成基於工具的查詢機制以增強抹布模型。
  • 了解在有效檢索相關文檔和工具中使用vectorStoreIndex和ObjectIndex的使用。
  • 實現一個動態代理,能夠通過從大量文檔中檢索相關論文來回答複雜查詢。
  • 將抹布系統擴展到多個文檔時,確定挑戰和最佳實踐。

本文作為數據科學博客馬拉鬆的一部分發表

目錄

  • 介紹
  • 涉及的關鍵步驟
  • 擴展10個文檔的關鍵挑戰
  • 實施代碼處理10個文檔
  • 通過工具檢索增強代理抹布
  • 查詢11個文檔
  • 結果和績效見解
  • 結論
  • 常見問題

涉及的關鍵步驟

在上一個博客中,我介紹了代理抹布的概念 - 一種方法,我們將信息檢索與生成模型結合在一起,以使用相關的外部文檔回答用戶查詢。我們使用LlamainDex構建了一個簡單的多檔案代理抹布,可以在三個文檔中查詢。

涉及的關鍵步驟:

  • 文檔攝入:使用SimpleDirectoryReader將文檔加載並分成塊。
  • 索引創建:利用矢量storeIndex進行語義搜索和摘要以進行摘要。
  • 代理設置:將OpenAI的API集成以通過從文檔中檢索相關的信息來回答查詢。

儘管此設置在少量文檔中效果很好,但我們在可擴展性方面遇到了挑戰。隨著我們超越三個文檔的擴展,出現了工具管理,性能開銷和較慢的查詢響應等問題。這篇文章解決了這些挑戰。

擴展10個文檔的關鍵挑戰

擴展到11個或更多文檔引入了幾個複雜性:

性能考慮

跨多個文檔查詢會增加計算負載,尤其是在內存使用和響應時間方面。當系統處理大量文檔時,確保快速準確的響應將成為主要挑戰。

工具管理

每個文檔都與自己的檢索和摘要工具配對,這意味著系統需要一種強大的機制來有效地管理這些工具。

指數效率

使用11個文檔,使用VectorStoreIndex變得更加複雜。索引越大,系統需要篩選以找到相關信息,可能會增加查詢時間。我們將討論LlamainDex如何通過其索引技術有效地應對這些挑戰。

實施代碼處理10個文檔

讓我們研究實施,以將我們的代理抹布從三個文檔擴展到11個文檔。

文檔收集

這是我們將要合作的11篇論文:

  • metagpt
  • Longlora
  • Loft-Q
  • SWE板凳
  • 自我rag
  • Zipformer
  • Finetune公平擴散
  • 知識卡
  • Metra
  • VR-MCL

第一步是下載論文。這是自動化以下的Python代碼:

 urls = [
    “ https://openreview.net/pdf?id=vtmbagcn7o”,
    “ https://openreview.net/pdf?id=6pmjorfdak”,
    “ https://openreview.net/pdf?id=lzpwwpady4”,
    “ https://openreview.net/pdf?id=vtf8ynqm66”,
    “ https://openreview.net/pdf?id=hsyw5go0v8”,
    “ https://openreview.net/pdf?id=9wd9kwssyt”,
    “ https://openreview.net/pdf?id=yv6fd7lykf”,
    “ https://openreview.net/pdf?id=hnrb5yhoyu”,
    “ https://openreview.net/pdf?id=wbwtoyizik”,
    “ https://openreview.net/pdf?id=c5pwl0soay”,
    “ https://openreview.net/pdf?id=tpd2ag1h0d”
這是給出的

論文= [
    “ metagpt.pdf”,
    “ longlora.pdf”,
    “ loftq.pdf”,
    “ swebench.pdf”,
    “ selfrag.pdf”,
    “ zipformer.pdf”,
    “ values.pdf”,
    “ finetune_fair_diffusion.pdf”,
    “知識_card.pdf”,
    “ Metra.pdf”,
    “ vr_mcl.pdf”
這是給出的

#下載論文
對於URL,郵政紙(URL,紙):
    !

工具設置

下載文檔後,下一步是創建查詢和總結每個文檔所需的工具。

來自llama_index.core導入simpledirectoryReader,vectorstoreIndex,summaryIndex
來自llama_index.core.node_parser import stonencesplitter
來自llama_index.core.tools import functionTool,queryenginetool
來自llama_index.core.core.vector_stores導入元數據,濾波器條件
從輸入導入列表,可選

def get_doc_tools(
    file_path:str,
    名稱:str,,
) - > str:
    “”“從文檔獲取矢量查詢和摘要查詢工具。”“”

    #加載文檔
    documents = simperedirectoryReader(input_files = [file_path])。 load_data()
    splitter = sensencesplitter(chunk_size = 1024)
    nodes = splitter.get_nodes_from_documents(文檔)
    vector_index = vectorstoreIndex(節點)
    
    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 = functionTool.from_defaults(
        name = f“ vector_tool_ {name}”,
        fn = vector_query
    )
    
    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

此功能為每個文檔生成向量和摘要查詢工具,從而使系統可以有效地處理查詢並生成摘要。

通過工具檢索增強代理抹布

現在,我們將通過工具檢索增強代理抹布。

建造代理

接下來,我們需要擴展代理商,能夠從所有11個文檔中檢索和管理工具。

來自utils import get_doc_tools
從pathlib導入路徑

paper_to_tools_dict = {}
紙中的紙:
    打印(f“獲取紙的工具:{paper}”)
    vector_tool,summary_tool = get_doc_tools(紙,路徑(PAPE).stem)
    Paper_to_tools_dict [Paper] = [vector_tool,summary_tool]

all_tools = [t paper_to_tools_dict [paper]的紙張中的紙張中的紙張

輸出看起來如下:

縮放多文件代理抹布來處理10個文檔

工具檢索

下一步是在這些工具上創建一個“對象”索引,並構建一個可以動態地提取給定查詢的相關工具的檢索系統。

來自llama_index.core導入vectorstoreindex
來自llama_index.core.objects import objectIndex

obj_index = objectIndex.from_objects(
    all_tools,
    index_cls = vectorstoreIndex,
)
obj_retriever = obj_index.as_retriever(samelity_top_k = 3)

現在,系統可以根據查詢檢索最相關的工具。

讓我們看看一個例子:

工具= obj_retriever.trieve(
    “告訴我METAGPT和SWE-BENCH中使用的EDAT數據集”
)

#retrieves 3個對象,讓我們看看第三個對象
打印(工具[2] .metadata)

縮放多文件代理抹布來處理10個文檔

代理設置

現在,我們將工具回收器集成到代理跑步者中,以確保它動態選擇響應每個查詢的最佳工具。

來自llama_index.core.agent intimpt functionCallingAgentWorker
來自llama_index.core.gagent Import Agentrunner

agent_worker = functionCallingAgentWorker.from_tools(
    tool_retriever = obj_retriever,
    llm = llm, 
    system_prompt =“”“ \
您是旨在回答一組給定論文的疑問的代理商。
請始終使用提供的工具來回答問題。不要依靠先驗知識。 \

”“”,
    冗長= true
)
代理= AgentRunner(Agent_worker)

查詢11個文檔

讓我們看看系統跨多個文檔查詢時的性能。我們將同時查詢METAGPT和SWE BENCEN紙張以比較其評估數據集。

響應= Agent.Query(“告訴我METAGPT中使用的評估數據集並將其與SWE-Bench進行比較”)
打印(str(響應))

輸出:

縮放多文件代理抹布來處理10個文檔

讓我們看看其他例子

響應= agent.query(Query)(
    “比較並對比洛拉論文(Longlora,Loftq)。首先在每篇論文中分析該方法。”
)
打印(str(響應))

輸出:

縮放多文件代理抹布來處理10個文檔

結果和績效見解

現在,我們將探討以下結果和績效見解:

性能指標

當縮放到11個文檔時,性能仍然很強,但是與3檔案設置相比,我們觀察到查詢時間增加了約15-20%。但是,總體檢索準確性保持一致。

可伸縮性分析

由於LlamainDex的有效分解和索引,該系統具有高度可擴展的。通過仔細管理工具,我們能夠處理11個文檔,其開銷最少。可以擴展這種方法以支持更多文檔,從而在現實世界應用程序中進一步增長。

結論

從三個文檔擴展到11個文檔是建立強大的抹布系統的重要里程碑。這種方法利用LlamainDex來管理大量文檔,同時保持系統的性能和響應能力。

我鼓勵您嘗試使用LlamainDex擴展自己的檢索型生成系統,並分享您的結果。隨時在此處查看我以前的博客以開始!

在GitHub上查看完整的代碼和資源。

關鍵要點

  • 可以使用有效的索引方法(如VectorStoreEndex和ObjectIndex)來擴展檢索功能的生成(RAG)系統,以處理更多文檔。
  • 通過將特定工具分配給文檔(向量搜索,摘要工具),代理可以利用專門的方法來檢索信息,從而提高響應準確性。
  • 使用AgentRunner與工具檢索使用,使代理可以根據查詢智能選擇和應用正確的工具,從而使系統更加靈活和自適應。
  • 即使處理大量文檔,抹布系統也可以通過動態檢索和應用工具來維持響應性和準確性,而不是蠻力搜索所有內容。
  • 在擴展抹布系統以確保性能和準確性時,優化分塊,工具分配和索引策略至關重要。

常見問題

Q1。多文檔代理抹布系統中處理3個文檔與10個文檔的處理有什麼區別?

A.處理3個文檔需要更簡單的索引和檢索過程。隨著文檔數量的增加(例如,至10),您需要更複雜的檢索機制,例如ObjectIndex和工具檢索,以保持性能和準確性。

Q2。 vectorStoreIndex和ObjectIndex如何促進擴展破布系統?

答:VectorStoreIndex有助於基於相似性有效地檢索文檔塊,而ObjectIndex允許您存儲和檢索與不同文檔關聯的工具。他們一起有助於有效地管理大規模文檔集。

Q3。為什麼基於工具的檢索在擴展到多個文檔時很重要?

A.基於工具的檢索使系統能夠將專用工具(例如,矢量搜索或摘要)應用於每個文檔,與以相同方式處理所有文檔相比,提高了答案的準確性並減少了計算時間。

Q4。如何修改此設置以處理更多文檔(例如20)?

答:要處理更多文檔,您可以使用分佈式計算技術微調索引來優化檢索過程,並可能引入更高級的過濾機制,以在應用工具之前縮小文檔集範圍。

Q5。有效地擴展多文檔代理抹布系統的關鍵策略是什麼?

A.縮放多文件代理抹布系統有效地涉及優化數據檢索方法,實施有效的索引策略,並利用先進的語言模型來提高查詢準確性。利用諸如LlamainDex之類的工具可以通過促進多個文檔管理並確保及時訪問相關信息來顯著改善系統的性能。

本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。

以上是縮放多文件代理抹布來處理10個文檔的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
人工智能治療師在這裡:您需要了解的14個開創性的心理健康工具人工智能治療師在這裡:您需要了解的14個開創性的心理健康工具Apr 30, 2025 am 11:17 AM

儘管它無法提供訓練有素的治療師的人類聯繫和直覺,但研究表明,許多人很樂意與相對無面和匿名的AI機器人分享他們的擔憂和擔憂。 這是否總是好我

叫AI到雜貨店過道叫AI到雜貨店過道Apr 30, 2025 am 11:16 AM

人工智能(AI)是一種技術數十年的技術,正在徹底改變食品零售業。 從大規模的效率提高和成本降低到精簡的各種業務功能的流程,AI的影響是Undeniabl

從生成的AI中進行佩普談話來提升您的精神從生成的AI中進行佩普談話來提升您的精神Apr 30, 2025 am 11:15 AM

讓我們來談談。 對創新的AI突破的分析是我正在進行的AI中正在進行的《福布斯》列覆蓋範圍的一部分,包括識別和解釋各種有影響力的AI複雜性(請參閱此處的鏈接)。此外,對於我的comp

為什麼AI驅動的超個性化是所有企業必須的為什麼AI驅動的超個性化是所有企業必須的Apr 30, 2025 am 11:14 AM

保持專業形象需要偶爾的衣櫃更新。 在線購物方便時,它缺乏面對面嘗試的確定性。 我的解決方案? AI驅動的個性化。 我設想AI助手策劃服裝Selecti

忘記Duolingo:Google Translate的新AI功能教授語言忘記Duolingo:Google Translate的新AI功能教授語言Apr 30, 2025 am 11:13 AM

谷歌翻譯新增語言學習功能 據Android Authority報導,應用專家AssembleDebug發現,最新版本的谷歌翻譯應用包含一個新的“練習”模式的測試代碼,旨在幫助用戶通過個性化活動來提高他們的語言技能。此功能目前對用戶不可見,但AssembleDebug能夠部分激活它並查看其一些新的用戶界面元素。 激活後,該功能會在屏幕底部添加一個新的“畢業帽”圖標,標有“Beta”徽章,表明“練習”功能最初將以實驗形式發布。 相關的彈出提示顯示“練習為你量身定制的活動!”,這意味著谷歌將生成定制的

他們正在為AI製作TCP/IP,這就是Nanda他們正在為AI製作TCP/IP,這就是NandaApr 30, 2025 am 11:12 AM

麻省理工學院的研究人員正在開發Nanda,這是為AI代理設計的開創性的Web協議。 Nanda的縮寫是網絡代理和分散的AI,通過添加Internet功能,使AI Agen能夠構建人類的模型上下文協議(MCP)。

提示:DeepFake檢測是一項蓬勃發展的業務提示:DeepFake檢測是一項蓬勃發展的業務Apr 30, 2025 am 11:11 AM

Meta的最新冒險:與Chatgpt競爭的AI應用程序 Facebook,Instagram,WhatsApp和Threads的母公司Meta正在啟動新的AI功能應用程序。 這個獨立的應用程序Meta AI旨在直接與Openai的Chatgpt競爭。 槓桿

接下來的兩年在AI網絡安全方面為業務領導者接下來的兩年在AI網絡安全方面為業務領導者Apr 30, 2025 am 11:10 AM

導航AI網絡攻擊的上升潮流 最近,CISO的傑森·克林頓(Jason Clinton)擬人化,強調了與非人類身份相關的新興風險 - 作為機器對機器的通信增殖,維護這些“身份”

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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