ホームページ >テクノロジー周辺機器 >AI >理論から実装へのgraphrag -Analytics Vidhya
GraphRagは、より構造化された階層的な方法を採用して、組織化されていないテキストスニペットの基本的なセマンティック検索に依存する従来のRAGアプローチと区別して、より構造化された階層的な方法(RAG)を採用しています。このプロセスは、生のテキストを知識グラフに変換し、データをコミュニティ構造に整理し、これらのグループを要約することから始まります。この構造化されたアプローチにより、GraphRagはこの組織化された情報を活用し、RAGベースのタスクでの有効性を高め、より正確でコンテキスト対応の結果を提供することができます。
この記事は、データサイエンスブログソンの一部として公開されました。
検索された生成(RAG)は、事前に訓練された大規模な言語モデル(LLMS)と外部データソースの力を統合して、より正確で文脈的に豊富な出力を作成する新しい方法論です。
GraphRag(グラフベースの検索拡張生成)は、知識グラフを活用して情報の検索と応答の生成を改善することでそれを強化する標準または従来のRAGの高度な方法です。シンプルなセマンティック検索やプレーンテキストスニペットに依存する標準のRAGとは異なり、GraphRagは情報を構造化された階層形式で整理および処理します。
さまざまな情報源に散らばっている情報との闘い。複数のソースに散らばっている情報の合成に関しては、従来の検索された生成(RAG)が課題に直面しています。微妙なまたは間接的な関係によってリンクされた洞察を特定して組み合わせるのに苦労しており、相互接続された推論を必要とする質問に対する効果が低下します。
より広いコンテキストをキャプチャすることが不足しています。従来のRAGメソッドは、より広いコンテキストをキャプチャしたり、複雑なデータセットを要約するのに不足していることがよくあります。この制限は、包括的なテーマを抽出したり、複雑なドキュメントからキーポイントを正確に蒸留するために必要な、より深い意味的理解の欠如に起因しています。 「データセットの主なテーマは何ですか?」などのクエリを実行すると、データセットがそれらのテーマを明示的に定義しない限り、従来のぼろきれが関連するテキストチャンクを識別することが困難になります。本質的に、これは、従来のぼろきれが苦労している明示的な検索タスクではなく、クエリ中心の要約タスクです。
GraphRagによって対処されたRAGの限界を調べます。
GraphRagは、2フェーズの運用設計、つまりインデックスングフェーズとクエリ段階を組み込むことにより、従来の検索された生成(RAG)の機能を拡張します。インデックス段階では、抽出された情報を階層的に整理し、知識グラフを構築します。クエリ段階では、この構造化された表現を活用して、ユーザークエリに対して非常にコンテキスト的で正確な応答を提供します。
インデックス化フェーズは、次の手順で構成されています。
ナレッジグラフと詳細なコミュニティの要約を備えたGraphRagは、クエリフェーズに存在するさまざまな手順を活用する精度でユーザークエリに応答できます。
グローバル検索 - 「主なテーマは何ですか?」など、データセットの幅広い分析を要求する問い合わせについては、GraphRagはコンパイルされたコミュニティの要約を利用しています。このアプローチにより、システムはデータセット全体の洞察を統合し、徹底的でバランスの取れた回答を提供できます。
ローカル検索 - 特定のエンティティを対象とするクエリの場合、GraphRagは知識グラフの相互接続された構造を活用します。エンティティの即時接続をナビゲートし、関連する主張を調べることにより、適切な詳細を収集し、システムが正確でコンテキストに敏感な応答を提供できるようにします。
次の詳細な手順で、MicrosoftのGraphRagのPython実装をご覧ください。
フォルダーを作成し、その中にPython仮想環境を作成します。以下に示すように、フォルダーGraphRagを作成します。作成されたフォルダー内で、コマンド「PIPインストールGraphRag」を使用してGraphRagライブラリをインストールします。
PIPインストールGraphRag
GraphRagフォルダー内で、入力フォルダーを作成し、フォルダー内にテキストファイルを入れます。このTXTファイルを使用し、入力フォルダー内に保持しました。記事のテキストは、このニュースWebサイトから取得されています。
入力フォルダーを含むフォルダーから、次のコマンドを実行します。
python -m graphrag.index - init -root
このコマンドは、.envファイルとsettings.yamlファイルの作成につながります。
.envfileで、graphrag_api_keyにそれを割り当ててOpenaiキーを入力します。これは、「LLM」フィールドの下のsettings.yamlファイルによって使用されます。モデル名、max_tokens、他の多くの中のチャンクサイズなどの他のパラメーターは、settings.yamlファイルで定義できます。 「GPT-4O」モデルを使用し、settings.yamlファイルで定義しました。
「GraphRag」フォルダーの内側から次のコマンドを使用して、インデックスパイプラインを実行します。
python -m graphrag.index -root。
上記のコマンドを実行するとすぐに、インデックス作成フェーズに基づく前のセクションで定義されているすべての手順がバックエンドで行われます。
エンティティと関係検出、知識グラフの作成、コミュニティ検出、さまざまなコミュニティの概要生成など、インデックスフェーズのすべてのステップを実行するために、システムは「プロンプト」フォルダーで定義されたプロンプトを使用して複数のLLMコールを行います。インデックス作成コマンドを実行すると、システムはこのフォルダーを自動的に生成します。
ドキュメントの特定のドメインに合わせてプロンプトを調整することは、結果を改善するために不可欠です。たとえば、Entity_extraction.txtファイルでは、テキストコーパスがRAGからより正確な結果を得るために、ドメインの関連するエンティティの例を維持できます。
さらに、LancedBは、各テキストチャンクの埋め込みデータを保存するために使用されます。
出力フォルダーは、下の図に示すように、グラフと関連データに対応する多くの寄木細工ファイルを保存します。
「ドキュメントのトップテーマ」などのグローバルクエリを実行するには、GraphRagフォルダー内の端末から次のコマンドを実行できます。
python -m graphrag.query -root。 - グローバル「ドキュメントのトップテーマは何ですか?」
グローバルクエリは、生成されたコミュニティの要約を使用して質問に答えます。中間の回答は、最終的な回答を生成するために使用されます。
TXTファイルの出力は次のようになります。
ナイーブラグの出力との比較:
ナイーブラグのコードは私の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の出力
ナイーブラグの出力との比較:
ナイーブラグのコードは私のgithubにあります。
MicrosoftとSAPは、職場の生産性を再定義し、アプリケーションを切り替えることなく両方のシステムからタスクを実行し、両方のシステムからデータにアクセスできるように、AI Copilots、JouleとMicrosoft 365 Copilotのシームレスな統合に取り組んでいます。
グローバル出力とローカル出力の両方から観察されたように、GraphRagからの応答は、ナイーブラグからの応答と比較して、はるかに包括的で説明可能です。
GraphRagが闘争する特定の課題があります。
GraphRagは、推論、コンテキストの理解、信頼性の制限に対処することにより、従来のぼろきれに対する大きな進歩を示しています。知識グラフと構造化されたエンティティ関係を活用して、より深いセマンティック理解を可能にすることにより、データセット間の分散情報を合成することに優れています。
MicrosoftのGraphRagは、2相のアプローチを組み合わせることにより、従来のぼろを強化します:インデックス作成とクエリ。インデックスフェーズは、抽出されたエンティティと関係から階層知識グラフを構築し、構造化された要約にデータを整理します。クエリ段階では、GraphRagはこの構造を正確でコンテキスト豊富な応答のために活用し、グローバルデータセット分析と特定のエンティティベースのクエリの両方に対応しています。
ただし、GraphRagの利点には、高いリソースの需要、構造化されたデータへの依存、セマンティッククラスタリングの複雑さなど、課題があります。これらのハードルにもかかわらず、正確で全体的な応答を提供する能力は、複雑なクエリを処理するための素朴なRAGシステムの強力な代替手段としてそれを確立します。
A. GraphRagは、微妙な関係を特定することに苦労している従来のぼろとは異なり、エンティティ間の相互接続を活用することにより、散在するソース全体の洞察を合成することに優れています。
Q2。 GraphRagは、インデックス段階で知識グラフをどのように作成しますか?A.テキストチャンクを処理してエンティティと関係を抽出し、ライデンなどのアルゴリズムを使用して階層的に整理し、ノードがエンティティを表し、エッジが関係を示す知識グラフを構築します。
Q3。 GraphRagのクエリフェーズの2つの重要な検索方法は何ですか?グローバル検索:「主なテーマは何ですか?」などのクエリに答えるために、幅広い分析にコミュニティの概要を使用します。
ローカル検索:知識グラフでの直接接続を調査することにより、特定のエンティティに焦点を当てています。
A. GraphRagは、複数のLLMコール、セマンティッククラスタリングの困難、および非構造化またはノイズの多いデータの処理の合併症による高い計算コストなどの問題に遭遇します。
Q5。 GraphRagは、応答生成におけるコンテキストの理解をどのように強化しますか?A.階層的な知識グラフとコミュニティベースの概要にその応答を接地することにより、GraphRagはより深い意味的な理解と文脈的に豊富な答えを提供します。
この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。
以上が理論から実装へのgraphrag -Analytics Vidhyaの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。