ホームページ >テクノロジー周辺機器 >AI >理論から実装へのgraphrag -Analytics Vidhya

理論から実装へのgraphrag -Analytics Vidhya

Christopher Nolan
Christopher Nolanオリジナル
2025-03-17 11:17:09729ブラウズ

GraphRagは、より構造化された階層的な方法を採用して、組織化されていないテキストスニペットの基本的なセマンティック検索に依存する従来のRAGアプローチと区別して、より構造化された階層的な方法(RAG)を採用しています。このプロセスは、生のテキストを知識グラフに変換し、データをコミュニティ構造に整理し、これらのグループを要約することから始まります。この構造化されたアプローチにより、GraphRagはこの組織化された情報を活用し、RAGベースのタスクでの有効性を高め、より正確でコンテキスト対応の結果を提供することができます。

学習目標

  • GraphRagとは何かを理解し、GraphRagの重要性と、従来の素朴なRAGモデルでどのように改善するかを調査します。
  • MicrosoftのGraphRag、特に知識グラフ、コミュニティ検出、階層構造の適用をより深く理解します。このシステム内でグローバル検索機能とローカル検索機能の両方がどのように機能するかを学びます。
  • MicrosoftのGraphRagライブラリの実践的なPython実装に参加して、ワークフローと統合を実際に理解することができます。
  • GraphRagと従来のRAGメソッドによって生成された出力を比較対照して、改善と違いを強調します。
  • 大規模なアプリケーションでのリソース集約型プロセスや最適化のニーズなど、GraphRagが直面する重要な課題を特定します。

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

目次

  • 学習目標
  • graphragとは何ですか?
  • 従来の/素朴なぼろきれにグラフラグするのはなぜですか?
  • GraphRagが扱うRAGの制限
  • MicrosoftのGraphRagはどのように機能しますか?
    • インデックス作成フェーズ
    • クエリフェーズ
  • MicrosoftのGraphRagのPython実装
    • ステップ1:Python仮想環境の作成とライブラリのインストール
    • ステップ2:settings.yamlファイルの生成
    • ステップ3:インデックスパイプラインの実行
    • ステップ4:クエリの実行
    • ローカル検索
  • GraphRagの課題
  • 結論
    • キーテイクアウト
  • よくある質問

graphragとは何ですか?

検索された生成(RAG)は、事前に訓練された大規模な言語モデル(LLMS)と外部データソースの力を統合して、より正確で文脈的に豊富な出力を作成する新しい方法論です。

GraphRag(グラフベースの検索拡張生成)は、知識グラフを活用して情報の検索と応答の生成を改善することでそれを強化する標準または従来のRAGの高度な方法です。シンプルなセマンティック検索やプレーンテキストスニペットに依存する標準のRAGとは異なり、GraphRagは情報を構造化された階層形式で整理および処理します。

従来の/素朴なぼろきれにグラフラグするのはなぜですか?

さまざまな情報源に散らばっている情報との闘い。複数のソースに散らばっている情報の合成に関しては、従来の検索された生成(RAG)が課題に直面しています。微妙なまたは間接的な関係によってリンクされた洞察を特定して組み合わせるのに苦労しており、相互接続された推論を必要とする質問に対する効果が低下します。

より広いコンテキストをキャプチャすることが不足しています。従来のRAGメソッドは、より広いコンテキストをキャプチャしたり、複雑なデータセットを要約するのに不足していることがよくあります。この制限は、包括的なテーマを抽出したり、複雑なドキュメントからキーポイントを正確に蒸留するために必要な、より深い意味的理解の欠如に起因しています。 「データセットの主なテーマは何ですか?」などのクエリを実行すると、データセットがそれらのテーマを明示的に定義しない限り、従来のぼろきれが関連するテキストチャンクを識別することが困難になります。本質的に、これは、従来のぼろきれが苦労している明示的な検索タスクではなく、クエリ中心の要約タスクです。

GraphRagが扱うRAGの制限

GraphRagによって対処されたRAGの限界を調べます。

  • エンティティ間の相互接続を活用することにより、GraphRagは、関連するデータをより高い精度で特定して取得する能力を改善します。
  • GraphRagは、知識グラフを使用することで、より正確な応答生成を支援し、クエリのより詳細で微妙な理解を提供します。
  • 構造化された事実データにその応答を接地することにより、GraphRagは、誤った情報または製造された情報を作成する可能性を大幅に減らします。

MicrosoftのGraphRagはどのように機能しますか?

GraphRagは、2フェーズの運用設計、つまりインデックスングフェーズとクエリ段階を組み込むことにより、従来の検索された生成(RAG)の機能を拡張します。インデックス段階では、抽出された情報を階層的に整理し、知識グラフを構築します。クエリ段階では、この構造化された表現を活用して、ユーザークエリに対して非常にコンテキスト的で正確な応答を提供します。

インデックス作成フェーズ

インデックス化フェーズは、次の手順で構成されています。

  • 入力テキストを小さくて管理しやすいチャンクに分割します。
  • 各チャンクからエンティティと関係を抽出します。
  • エンティティと関係を構造化された形式に要約します。
  • エンティティとしてノードを使用して知識グラフを作成し、エッジを関係として作成します。
  • アルゴリズムを使用して、知識グラフ内のコミュニティを特定します。
  • 小規模コミュニティ内の個々のエンティティと関係を要約します。
  • 集約されたコミュニティの高レベルの要約を階層的に作成します。

クエリフェーズ

ナレッジグラフと詳細なコミュニティの要約を備えたGraphRagは、クエリフェーズに存在するさまざまな手順を活用する精度でユーザークエリに応答できます。

グローバル検索 - 「主なテーマは何ですか?」など、データセットの幅広い分析を要求する問い合わせについては、GraphRagはコンパイルされたコミュニティの要約を利用しています。このアプローチにより、システムはデータセット全体の洞察を統合し、徹底的でバランスの取れた回答を提供できます。

ローカル検索 - 特定のエンティティを対象とするクエリの場合、GraphRagは知識グラフの相互接続された構造を活用します。エンティティの即時接続をナビゲートし、関連する主張を調べることにより、適切な詳細を収集し、システムが正確でコンテキストに敏感な応答を提供できるようにします。

MicrosoftのGraphRagのPython実装

次の詳細な手順で、MicrosoftのGraphRagのPython実装をご覧ください。

ステップ1:Python仮想環境の作成とライブラリのインストール

フォルダーを作成し、その中にPython仮想環境を作成します。以下に示すように、フォルダーGraphRagを作成します。作成されたフォルダー内で、コマンド「PIPインストールGraphRag」を使用してGraphRagライブラリをインストールします。

 PIPインストールGraphRag

ステップ2:settings.yamlファイルの生成

GraphRagフォルダー内で、入力フォルダーを作成し、フォルダー内にテキストファイルを入れます。このTXTファイルを使用し、入力フォルダー内に保持しました。記事のテキストは、このニュースWebサイトから取得されています。

入力フォルダーを含むフォルダーから、次のコマンドを実行します。

 python -m graphrag.index  -  init -root

このコマンドは、.envファイルとsettings.yamlファイルの作成につながります。

理論から実装へのgraphrag -Analytics Vidhya

.envfileで、graphrag_api_keyにそれを割り当ててOpenaiキーを入力します。これは、「LLM」フィールドの下のsettings.yamlファイルによって使用されます。モデル名、max_tokens、他の多くの中のチャンクサイズなどの他のパラメーターは、settings.yamlファイルで定義できます。 「GPT-4O」モデルを使用し、settings.yamlファイルで定義しました。

理論から実装へのgraphrag -Analytics Vidhya

ステップ3:インデックスパイプラインの実行

「GraphRag」フォルダーの内側から次のコマンドを使用して、インデックスパイプラインを実行します。

 python -m graphrag.index -root。

上記のコマンドを実行するとすぐに、インデックス作成フェーズに基づく前のセクションで定義されているすべての手順がバックエンドで行われます。

プロンプトフォルダー

エンティティと関係検出、知識グラフの作成、コミュニティ検出、さまざまなコミュニティの概要生成など、インデックスフェーズのすべてのステップを実行するために、システムは「プロンプト」フォルダーで定義されたプロンプトを使用して複数のLLMコールを行います。インデックス作成コマンドを実行すると、システムはこのフォルダーを自動的に生成します。

理論から実装へのgraphrag -Analytics Vidhya

ドキュメントの特定のドメインに合わせてプロンプトを調整することは、結果を改善するために不可欠です。たとえば、Entity_extraction.txtファイルでは、テキストコーパスがRAGからより正確な結果を得るために、ドメインの関連するエンティティの例を維持できます。

lancedbに保存された埋め込み

さらに、LancedBは、各テキストチャンクの埋め込みデータを保存するために使用されます。

グラフデータ用の寄木細工ファイル

出力フォルダーは、下の図に示すように、グラフと関連データに対応する多くの寄木細工ファイルを保存します。

理論から実装へのgraphrag -Analytics Vidhya

ステップ4:クエリの実行

「ドキュメントのトップテーマ」などのグローバルクエリを実行するには、GraphRagフォルダー内の端末から次のコマンドを実行できます。

グローバル検索

python -m graphrag.query -root。 - グローバル「ドキュメントのトップテーマは何ですか?」

グローバルクエリは、生成されたコミュニティの要約を使用して質問に答えます。中間の回答は、最終的な回答を生成するために使用されます。

TXTファイルの出力は次のようになります。

理論から実装へのgraphrag -Analytics Vidhya

ナイーブラグの出力との比較:

ナイーブラグのコードは私のgithubにあります。

 1. SAPおよびMicrosoft 365アプリケーションの統合
2。シームレスなユーザーエクスペリエンスの可能性
3。SAPとMicrosoftのコラボレーション
4.生産性を最大化するという目標
5. Microsoft Igniteでのプレビュー
6.限られたプレビューアナウンス
7.限られたプレビューに登録する機会。

ローカル検索

「MicrosoftとSAPと共同で取り組んでいるのは何ですか?」などのドキュメントに関連するローカルクエリを実行するために、GraphRagフォルダー内の端末から次のコマンドを実行できます。以下のコマンドは、クエリをローカルクエリとして具体的に指定し、グローバルクエリで使用されるコミュニティの要約に依存するのではなく、実行が知識グラフに深く掘り下げることを保証します。

 python -m graphrag.query -root。 - メソッドローカル「SAPとMicrosoftと協力的に取り組んでいるのは何ですか?

GraphRagの出力

理論から実装へのgraphrag -Analytics Vidhya

ナイーブラグの出力との比較

ナイーブラグのコードは私のgithubにあります。

 MicrosoftとSAPは、職場の生産性を再定義し、アプリケーションを切り替えることなく両方のシステムからタスクを実行し、両方のシステムからデータにアクセスできるように、AI Copilots、JouleとMicrosoft 365 Copilotのシームレスな統合に取り組んでいます。

グローバル出力とローカル出力の両方から観察されたように、GraphRagからの応答は、ナイーブラグからの応答と比較して、はるかに包括的で説明可能です。

GraphRagの課題

GraphRagが闘争する特定の課題があります。

  • 複数のLLMコール:プロセスで作成された複数のLLMコールにより、GraphRagは高価で遅い可能性があります。したがって、スケーラビリティを確保するためには、コストの最適化が不可欠です。
  • 高いリソース消費:知識グラフの構築とクエリには、特に大規模なデータセットをスケーリングする場合、重要な計算リソースが含まれます。多くのノードとエッジで大きなグラフを処理するには、パフォーマンスのボトルネックを避けるために慎重に最適化する必要があります。
  • セマンティッククラスタリングの複雑さ: Leidenのようなアルゴリズムを使用して意味のあるクラスターを識別することは、特にゆるく接続されたエンティティを持つデータセットの場合、困難な場合があります。誤認されたクラスターは、断片化または過度に広いコミュニティの要約につながる可能性があります
  • 多様なデータ形式の処理: GraphRagは、意味のある関係を抽出するために構造化された入力に依存しています。構造化されていない、一貫性のない、または騒々しいデータは、抽出およびグラフ構築プロセスを複雑にする可能性があります

結論

GraphRagは、推論、コンテキストの理解、信頼性の制限に対処することにより、従来のぼろきれに対する大きな進歩を示しています。知識グラフと構造化されたエンティティ関係を活用して、より深いセマンティック理解を可能にすることにより、データセット間の分散情報を合成することに優れています。

MicrosoftのGraphRagは、2相のアプローチを組み合わせることにより、従来のぼろを強化します:インデックス作成とクエリ。インデックスフェーズは、抽出されたエンティティと関係から階層知識グラフを構築し、構造化された要約にデータを整理します。クエリ段階では、GraphRagはこの構造を正確でコンテキスト豊富な応答のために活用し、グローバルデータセット分析と特定のエンティティベースのクエリの両方に対応しています。

ただし、GraphRagの利点には、高いリソースの需要、構造化されたデータへの依存、セマンティッククラスタリングの複雑さなど、課題があります。これらのハードルにもかかわらず、正確で全体的な応答を提供する能力は、複雑なクエリを処理するための素朴なRAGシステムの強力な代替手段としてそれを確立します。

キーテイクアウト

  • GraphRagは、生のテキストを階層的な知識グラフに整理し、正確でコンテキストを意識した応答を可能にすることにより、RAGを強化します。
  • 幅広い分析のためのコミュニティの概要と、特定の詳細なクエリのグラフ接続を採用しています。
  • GraphRagは、エンティティの相互接続と構造化されたデータを活用することにより、コンテキストの理解と推論の制限を克服します。
  • MicrosoftのGraphRag Libraryは、知識のグラフの作成とクエリのためのツールを使用して、実用的なアプリケーションをサポートしています。
  • その精度にもかかわらず、GraphRagはリソースの強度、セマンティッククラスタリングの複雑さ、非構造化データの処理などのハードルに直面しています。
  • 構造化された知識の応答を接地することにより、GraphRagは従来のRAGシステムで一般的な不正確さを減らします。
  • テーマ分析やエンティティ固有の洞察など、相互接続された推論を必要とする複雑なクエリに最適です。

よくある質問

Q1。複雑なクエリに対して従来のぼろきれよりもGraphRagが好まれるのはなぜですか?

A. GraphRagは、微妙な関係を特定することに苦労している従来のぼろとは異なり、エンティティ間の相互接続を活用することにより、散在するソース全体の洞察を合成することに優れています。

Q2。 GraphRagは、インデックス段階で知識グラフをどのように作成しますか?

A.テキストチャンクを処理してエンティティと関係を抽出し、ライデンなどのアルゴリズムを使用して階層的に整理し、ノードがエンティティを表し、エッジが関係を示す知識グラフを構築します。

Q3。 GraphRagのクエリフェーズの2つの重要な検索方法は何ですか?

グローバル検索:「主なテーマは何ですか?」などのクエリに答えるために、幅広い分析にコミュニティの概要を使用します。
ローカル検索:知識グラフでの直接接続を調査することにより、特定のエンティティに焦点を当てています。

Q4。 Graphragはどのような課題に直面していますか?

A. GraphRagは、複数のLLMコール、セマンティッククラスタリングの困難、および非構造化またはノイズの多いデータの処理の合併症による高い計算コストなどの問題に遭遇します。

Q5。 GraphRagは、応答生成におけるコンテキストの理解をどのように強化しますか?

A.階層的な知識グラフとコミュニティベースの概要にその応答を接地することにより、GraphRagはより深い意味的な理解と文脈的に豊富な答えを提供します。

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

以上が理論から実装へのgraphrag -Analytics Vidhyaの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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