目次
導入
学習目標
目次
関係する重要な手順
10のドキュメントへのスケーリングにおける重要な課題
パフォーマンスに関する考慮事項
ツール管理
インデックス効率
10のドキュメントを処理するためのコードを実装します
ドキュメントコレクション
ツールセットアップ
ツール検索によるエージェントRAGの強化
エージェントの構築
ツール検索
エージェントのセットアップ
11のドキュメントにわたってクエリ
結果とパフォーマンスの洞察
パフォーマンスメトリック
スケーラビリティ分析
結論
キーテイクアウト
よくある質問
ホームページ テクノロジー周辺機器 AI マルチドキュメントエージェントラグをスケーリングして、10のドキュメントを処理します

マルチドキュメントエージェントラグをスケーリングして、10のドキュメントを処理します

Apr 09, 2025 am 09:44 AM

導入

私の以前のブログ投稿であるLlamainDexを使用してマルチドキュメントエージェントRAGを構築して、LlamainDexを使用して3つのドキュメントで処理および照会できる検索された生成(RAG)システムを作成する方法を示しました。それは強力なスタートでしたが、現実世界のアプリケーションでは、多くの場合、より大きなドキュメントのコーパスを処理する能力が必要です。

このブログは、そのシステムの3つのドキュメントから11以降に拡大することに焦点を当てます。コード、スケーリングの課題、およびより大きなソースセットから情報を動的に取得できる効率的なエージェントを構築する方法に飛び込みます。

学習目標

  • LlamainDexを使用して、いくつかのドキュメントを10を超えるドキュメントに処理することから、マルチドキュメントエージェントRAGシステムのスケーリングを理解します。
  • ツールベースのクエリメカニズムを構築および統合して、RAGモデルを強化する方法を学びます。
  • 関連するドキュメントとツールを効率的に取得する際に、VectorStoreIndexとObjectIndexの使用を理解します。
  • 大規模なドキュメントセットから関連する論文を取得することにより、複雑なクエリに答えることができる動的エージェントを実装します。
  • RAGシステムを複数のドキュメントにスケーリングする際の課題とベストプラクティスを特定します。

この記事は、データサイエンスブログソンの一部として公開されました

目次

  • 導入
  • 関係する重要な手順
  • 10のドキュメントへのスケーリングにおける重要な課題
  • 10のドキュメントを処理するためのコードを実装します
  • ツール検索によるエージェントRAGの強化
  • 11のドキュメントにわたってクエリ
  • 結果とパフォーマンスの洞察
  • 結論
  • よくある質問

関係する重要な手順

前のブログでは、エージェントRAGの概念を紹介しました。これは、情報検索と生成モデルを組み合わせて、関連する外部ドキュメントを使用してユーザークエリに答えるアプローチです。 LlamainDexを使用して、3つのドキュメントで照会できるシンプルでマルチドキュメントエージェントRAGを構築しました。

関係する重要なステップ:

  • ドキュメントの摂取: SimpleDirectoryReaderを使用して、ドキュメントをチャンクにロードして分割します。
  • インデックス作成:セマンティック検索のためにVectorStoreIndexを活用し、要約のためのsummaryIndex。
  • エージェントのセットアップ:文書から関連する情報のチャンクを取得することにより、OpenaiのAPIを統合してクエリに回答します。

このセットアップは少数のドキュメントでうまく機能しましたが、スケーラビリティの課題に遭遇しました。 3つのドキュメントを超えて拡大するにつれて、ツール管理、パフォーマンスオーバーヘッド、クエリ応答の遅いなどの問題が発生しました。この投稿では、これらの課題に対処しています。

10のドキュメントへのスケーリングにおける重要な課題

11以上のドキュメントにスケーリングすると、いくつかの複雑さが紹介されます。

パフォーマンスに関する考慮事項

複数のドキュメントに照会すると、特にメモリの使用と応答時間の観点から、計算負荷が増加します。システムがより多くのドキュメントを処理すると、迅速かつ正確な応答が主要な課題になります。

ツール管理

各ドキュメントは独自の検索と要約ツールとペアになっています。つまり、システムはこれらのツールを効率的に管理するための堅牢なメカニズムが必要です。

インデックス効率

11のドキュメントでは、VectorStoreIndexを使用すると、より複雑になります。インデックスが大きいほど、システムが関連する情報を見つけるためにふるいにかける必要があり、潜在的にクエリの時間を増やします。 Llamaindexがインデックステクニックでこれらの課題を効率的に処理する方法について説明します。

10のドキュメントを処理するためのコードを実装します

実装に飛び込み、3つのドキュメントから11のドキュメントからエージェントのぼろを拡大しましょう。

ドキュメントコレクション

これが私たちが協力する11の論文です:

  • メタグプト
  • longlora
  • loft-q
  • swe-bench
  • セルフラグ
  • zipformer
  • Finetune Fair拡散
  • ナレッジカード
  • メトラ
  • 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"、
    "knowledge_card.pdf"、
    「Metra.pdf」、
    「vr_mcl.pdf」
]

#論文のダウンロード
URLの場合、zip(urls、論文)の紙:
    !wget "{url}" -o "{Paper}"
ログイン後にコピー

ツールセットアップ

ドキュメントがダウンロードされたら、次のステップは、各ドキュメントのクエリと要約に必要なツールを作成することです。

 llama_index.coreからImport SimpledirectoryReader、VectorStoreIndex、summaryIndexから
llama_index.core.node_parserからimportsentencesplitterから
llama_index.core.tools Import functionTool、QueryEngineToolから
llama_index.core.vector_storesからメタデータをインポートする、filterconditionから
インポートリストの入力からオプション

def get_doc_tools(
    file_path:str、
    名前:str、
) - > str:
    "" "ドキュメントからベクトルクエリと概要クエリツールを取得します。" ""

    #ドキュメントを読み込みます
    documents = simpledirectoryreader(input_files = [file_path])。load_data()
    splitter = sentencesplitter(chunk_size = 1024)
    nodes = splitter.get_nodes_from_documents(documents)
    vector_index = vectorStoreIndex(ノード)
    
    def vector_query(
        クエリ:str、 
        page_numbers:optional [list [str]] = none
    ) - > str:
        "" "特定の論文に対する質問に答えるために使用します。
    
        紙に具体的な質問がある場合に便利です。
        検索したい特定のページがない限り、必ずPage_Numbersをまったく残しません。
    
        args:
            クエリ(str):埋め込まれる文字列クエリ。
            page_numbers(optional [list [str]]):ページのセットごとにフィルタリングします。何も残してください 
                ベクトル検索を実行したい場合
                すべてのページにわたって。それ以外の場合は、指定されたページのセットでフィルタリングします。
        
        "" "
    
        page_numbers = page_numbersまたは[]
        metadata_dicts = [
            {"key": "page_label"、 "value":p} for page_numbers
        ]
        
        query_engine = vector_index.as_query_engine(
            類似性_top_k = 2、
            filters = metadatafilters.from_dicts(
                metadata_dicts、
                条件= filtercondition.or
            ))
        ))
        response = 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「{name}に関連する要約の質問に役立ちます」
        )、、
    ))

    return vector_query_tool、summary_tool
ログイン後にコピー

この関数は、各ドキュメントのベクトルと概要クエリツールを生成し、システムがクエリを処理し、概要を効率的に生成できるようにします。

ツール検索によるエージェントRAGの強化

次に、ツール検索を使用してエージェントラグを強化します。

エージェントの構築

次に、11のドキュメントすべてからツールを取得および管理する機能を備えたエージェントを拡張する必要があります。

 utilsからImport get_doc_tools
Pathlibインポートパスから

Paper_to_tools_dict = {}
論文の論文の場合:
    印刷(f "紙のツールの取得:{紙}")
    vector_tool、summary_tool = get_doc_tools(紙、path(紙).stem)
    Paper_to_tools_dict [Paper] = [vector_tool、summary_tool]

all_tools = [t for paper_to_tools_dict [paper]]の論文の論文の場合
ログイン後にコピー

出力は以下のようになります。

マルチドキュメントエージェントラグをスケーリングして、10のドキュメントを処理します

ツール検索

次のステップは、これらのツールを介して「オブジェクト」インデックスを作成し、特定のクエリに関連するツールを動的にプルすることができる検索システムを構築することです。

 llama_index.coreからVectorStoreIndexからインポート
llama_index.core.objectsからObjectIndexをインポートします

obj_index = objectIndex.from_objects(
    all_tools、
    index_cls = vectorStoreIndex、
))
obj_retriever = obj_index.as_retriever(signility_top_k = 3)
ログイン後にコピー

これで、システムはクエリに基づいて最も関連性の高いツールを取得できます。

例を見てみましょう:

ツール= obj_retriever.retrieve(
    「MetagptとSWE-Benchで使用されている評価データセットについて教えてください」
))

#retrieves 3つのオブジェクト、3番目のオブジェクトを見てみましょう
印刷(ツール[2] .Metadata)
ログイン後にコピー

マルチドキュメントエージェントラグをスケーリングして、10のドキュメントを処理します

エージェントのセットアップ

次に、ツールレトリバーをエージェントランナーに統合し、各クエリに応答するのに最適なツールを動的に選択するようにします。

 llama_index.core.agent Import functioncallingagentworkerから
llama_index.core.agent Import agentrunnerから

agent_worker = functioncallingagentworker.from_tools(
    tool_retriever = obj_retriever、
    LLM = LLM、 
    System_prompt = "" "\
あなたは、指定された一連の論文に関するクエリに答えるように設計されたエージェントです。
質問に答えるために提供されているツールを常に使用してください。事前知識に依存しないでください。\

"" "、
    verbose = true
))
agent = agentrunner(agent_worker)
ログイン後にコピー

11のドキュメントにわたってクエリ

複数のドキュメントに照会するときにシステムがどのように機能するかを見てみましょう。 MetagptとSWEベンチの両方の論文の両方を照会して、評価データセットを比較します。

 Response = Agent.Query( "メタグプトで使用されている評価データセットについて教えて、それをSWEベンチと比較してください"))
印刷(str(応答))
ログイン後にコピー

出力:

マルチドキュメントエージェントラグをスケーリングして、10のドキュメントを処理します

他の例を見てみましょう

response = agent.query(
    「Lora Papers(Longlora、LoftQ)を比較対照します。最初に各論文のアプローチを分析します。」
))
印刷(str(応答))
ログイン後にコピー

出力:

マルチドキュメントエージェントラグをスケーリングして、10のドキュメントを処理します

結果とパフォーマンスの洞察

次に、以下の結果とパフォーマンスの洞察を探ります。

パフォーマンスメトリック

11のドキュメントにスケーリングすると、パフォーマンスは堅牢なままでしたが、3ドキュメントのセットアップと比較して、クエリ時間の約15〜20%の増加が観察されました。ただし、全体的な検索精度は一貫していました。

スケーラビリティ分析

Llamaindexの効率的なチャンキングとインデックス作成のおかげで、このシステムは非常にスケーラブルです。ツールを慎重に管理することで、最小限のオーバーヘッドで11のドキュメントを処理することができました。このアプローチは、さらに多くのドキュメントをサポートするために拡張でき、実際のアプリケーションのさらなる成長を可能にします。

結論

3から11のドキュメントのスケーリングは、堅牢なRAGシステムを構築する上で重要なマイルストーンです。このアプローチは、LlamainDexを活用して、システムのパフォーマンスと応答性を維持しながら、大きなドキュメントセットを管理します。

LlamainDexを使用して独自の検索された生成システムをスケーリングして、結果を共有することをお勧めします。開始するには、ここで私の以前のブログをチェックしてください!

GitHubの完全なコードとリソースをご覧ください。

キーテイクアウト

  • 検索された生成(RAG)システムをスケーリングして、VectorStoreIndexやObjectIndexなどの効率的なインデックス作成方法を使用して、より多くのドキュメントを処理することができます。
  • 特定のツールをドキュメント(ベクトル検索、要約ツール)に割り当てることにより、エージェントは情報を取得するための特殊な方法を活用して、応答の精度を向上させることができます。
  • ツール検索を使用してAgentRunnerを使用すると、エージェントはクエリに基づいて適切なツールをインテリジェントに選択および適用することで、システムの柔軟性と適応性を高めることができます。
  • 多数のドキュメントを扱う場合でも、RAGシステムは、すべてのコンテンツを検索するのではなく、動的にツールを取得および適用することにより、応答性と精度を維持できます。
  • パフォーマンスと正確性を確保するためにRAGシステムをスケーリングする場合、チャンク、ツールの割り当て、およびインデックス作成戦略の最適化が重要です。

よくある質問

Q1。マルチドキュメントエージェントRAGシステムの10のドキュメントと10のドキュメントを処理することの違いは何ですか?

A. 3つのドキュメントを処理するには、より簡単なインデックス作成および検索プロセスが必要です。ドキュメントの数が増加すると(例:10)、パフォーマンスと精度を維持するために、ObjectIndexやツール検索などのより洗練された検索メカニズムが必要です。

Q2。 VectorStoreIndexとObjectIndexは、RAGシステムのスケーリングにどのように貢献しますか?

A. VectorStoreIndexは、類似性に基づいてドキュメントチャンクの効率的な取得を支援しますが、ObjectIndexを使用すると、さまざまなドキュメントに関連付けられたツールを保存および取得できます。一緒に、彼らは大規模なドキュメントセットを効果的に管理するのに役立ちます。

Q3。複数のドキュメントにスケーリングするときに、ツールベースの検索が重要なのはなぜですか?

A.ツールベースの検索により、システムは各ドキュメントに特殊なツール(ベクトル検索または要約)を適用し、回答の精度を改善し、すべてのドキュメントを同じ方法で処理するのと比較して計算時間を短縮できます。

Q4。このセットアップを変更して、さらに多くのドキュメントを処理するにはどうすればよいですか(例:20)?

A.より多くのドキュメントを処理するために、インデックスを微調整し、分散コンピューティング技術を使用して、より高度なフィルタリングメカニズムを導入して、ツールを適用する前にドキュメントセットを絞り込むことにより、検索プロセスを最適化できます。

Q5。マルチドキュメントエージェントRAGシステムを効果的にスケーリングするための重要な戦略は何ですか?

A.マルチドキュメントエージェントRAGシステムのスケーリングには、データ検索方法の最適化、効率的なインデックス作成戦略の実装、および高度な言語モデルを活用してクエリの精度を高めることが含まれます。 LlamainDexのようなツールを使用すると、複数のドキュメントの管理の改善を促進し、関連情報へのタイムリーなアクセスを確保することにより、システムのパフォーマンスを大幅に改善できます。

この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。

以上がマルチドキュメントエージェントラグをスケーリングして、10のドキュメントを処理しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

カーソルAIでバイブコーディングを試してみましたが、驚くべきことです! カーソルAIでバイブコーディングを試してみましたが、驚くべきことです! Mar 20, 2025 pm 03:34 PM

バイブコーディングは、無限のコード行の代わりに自然言語を使用してアプリケーションを作成できるようにすることにより、ソフトウェア開発の世界を再構築しています。 Andrej Karpathyのような先見の明に触発されて、この革新的なアプローチは開発を許可します

2025年2月のトップ5 Genai発売:GPT-4.5、Grok-3など! 2025年2月のトップ5 Genai発売:GPT-4.5、Grok-3など! Mar 22, 2025 am 10:58 AM

2025年2月は、生成AIにとってさらにゲームを変える月であり、最も期待されるモデルのアップグレードと画期的な新機能のいくつかをもたらしました。 Xai’s Grok 3とAnthropic's Claude 3.7 SonnetからOpenaiのGまで

オブジェクト検出にYolo V12を使用する方法は? オブジェクト検出にYolo V12を使用する方法は? Mar 22, 2025 am 11:07 AM

Yolo(あなたは一度だけ見ています)は、前のバージョンで各反復が改善され、主要なリアルタイムオブジェクト検出フレームワークでした。最新バージョンYolo V12は、精度を大幅に向上させる進歩を紹介します

ChatGpt 4 oは利用できますか? ChatGpt 4 oは利用できますか? Mar 28, 2025 pm 05:29 PM

CHATGPT 4は現在利用可能で広く使用されており、CHATGPT 3.5のような前任者と比較して、コンテキストを理解し、一貫した応答を生成することに大幅な改善を示しています。将来の開発には、よりパーソナライズされたインターが含まれる場合があります

クリエイティブプロジェクトのための最高のAIアートジェネレーター(無料&有料) クリエイティブプロジェクトのための最高のAIアートジェネレーター(無料&有料) Apr 02, 2025 pm 06:10 PM

この記事では、トップAIアートジェネレーターをレビューし、その機能、創造的なプロジェクトへの適合性、価値について説明します。 Midjourneyを専門家にとって最高の価値として強調し、高品質でカスタマイズ可能なアートにDall-E 2を推奨しています。

Google' s Gencast:Gencast Mini Demoを使用した天気予報 Google' s Gencast:Gencast Mini Demoを使用した天気予報 Mar 16, 2025 pm 01:46 PM

Google Deepmind's Gencast:天気予報のための革新的なAI 天気予報は、初歩的な観察から洗練されたAI駆動の予測に移行する劇的な変化を受けました。 Google DeepmindのGencast、グラウンドブレイク

chatgptよりも優れたAIはどれですか? chatgptよりも優れたAIはどれですか? Mar 18, 2025 pm 06:05 PM

この記事では、Lamda、Llama、GrokのようなChatGptを超えるAIモデルについて説明し、正確性、理解、業界への影響における利点を強調しています(159文字)

O1対GPT-4O:OpenAIの新しいモデルはGPT-4Oよりも優れていますか? O1対GPT-4O:OpenAIの新しいモデルはGPT-4Oよりも優れていますか? Mar 16, 2025 am 11:47 AM

OpenaiのO1:12日間の贈り物は、これまでで最も強力なモデルから始まります 12月の到着は、世界の一部の地域で雪片が世界的に減速し、雪片がもたらされますが、Openaiは始まったばかりです。 サム・アルトマンと彼のチームは12日間のギフトを立ち上げています

See all articles