従来の検索拡張生成(RAG)は、複雑な関係性の処理、マルチホップ推論、および知識の関連付けにおいて制限があります。これらの制限は、文脈理解の不十分さやドキュメント類似度バイアスなどの課題に起因します。GraphRAG は、知識グラフに基づくインデックス作成、取得、および生成機能を提供することで、従来の RAG 取得パスを強化します。これにより、複雑なデータに対する理解と応答生成の品質が向上します。
特徴
GraphRAG は以下の機能をサポートしています。
インデックス作成:知識抽出モデルを用いてドキュメントから情報を抽出し、知識グラフを生成して、グラフ分析エンジンに保存します。
取得:知識抽出モデルを用いてクエリからキーワードを抽出し、AnalyticDB for PostgreSQL グラフ分析エンジン内のサブグラフをトレースして関連するサブグラフを検索します。
生成:クエリおよび関連するサブグラフのコンテキストを大規模言語モデル(LLM)に送信し、応答を生成します。
統合ソリューション: AnalyticDB for PostgreSQL + DTS RAGFlow。このソリューションは、AnalyticDB for PostgreSQL のグラフ分析エンジンと DTS RAGFlow のデータ処理機能を統合します。ドキュメントの取り込みから知識グラフの作成、AI チャットまでを一貫して実現するパイプラインを構築します。詳細については、「チュートリアル:DTS RAGFlow および AnalyticDB for PostgreSQL を用いた GraphRAG の構築」をご参照ください。
バージョン要件
AnalyticDB for PostgreSQL 7.0 インスタンス(マイナーエンジンバージョン 7.2.1.3 以降)。
バージョン 7.3.0.0 および 7.3.1.0 では、adbpg_graphrag 拡張機能のインストールはサポートされていません。
マイナーバージョン は、AnalyticDB for PostgreSQL コンソールのインスタンスの基本情報ページで確認できます。ご利用のインスタンスが要件を満たさない場合は、「インスタンスのマイナーバージョンの更新」をご参照ください。
拡張機能のインストール
plpython3u、age、adbpg_graphrag の各拡張機能は、マイナーエンジンバージョン 7.2.1.4 以降の AnalyticDB for PostgreSQL 7.0 インスタンスに自動的にインストールされます。必要な操作は、search_path に ag_catalog を追加することのみです。age 拡張機能のインストール手順については、以下の説明をご参照ください。
plpython3u 拡張機能のインストール(デフォルトでインストール済み)。
拡張機能が正しくインストールされているかを確認するには、指定したデータベースの public スキーマに切り替えて、以下のコマンドを実行します。
SELECT * FROM pg_extension WHERE extname = 'plpython3u';以下の出力が表示された場合、plpython3u 拡張機能が正常にインストールされています。出力が表示されない場合は、指定したデータベースの public スキーマに拡張機能がインストールされていません。
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition -------+------------+----------+--------------+----------------+------------+-----------+-------------- 14674 | plpython3u | 10 | 11 | f | 1.0 | | (1 row)age 拡張機能をインストールした後は、クエリの簡略化のため、search_path に ag_catalog を追加できます。以下のいずれかの方法を使用してください。
セッションレベルでの設定
SET search_path TO "$user", public, ag_catalog;データベースレベルでの永続的な設定
ALTER DATABASE <database_name> SET search_path TO "$user", public, ag_catalog;
(任意)初期アカウント または RDS_SUPERUSER ロールを持つ特権ユーザー を使用して、他のユーザーにグラフ拡張機能に関する権限を付与できます。
GRANT USAGE ON SCHEMA ag_catalog TO <username>;
adbpg_graphrag 拡張機能のインストール。インストールについては、技術サポートにお問い合わせください。
adbpg_graphrag 拡張機能は、plpython3u および age 拡張機能に依存しています。この拡張機能をインストールする前に、依存する拡張機能が既にインストールされていることを確認してください。
使用上のヒント
モデルの選択
モデル選択に関して、Alibaba Cloud では主に qwen-max、qwen-plus-latest、qwen3-32b の各モデルをテスト済みです。
応答品質の観点では、モデルの優先順位は次のとおりです:qwen-max > qwen-plus-latest > qwen3-32b。最高品質の出力を得るには、qwen-max をご使用ください。
生成速度の観点では、モデルの優先順位は次のとおりです:qwen3-32b > qwen-plus-latest > qwen-max。応答速度を重視する場合は、qwen3-32b を選択してください。
画像を含むドキュメントのインポートおよび処理
システムは、画像を含むドキュメントに対して限定的なサポートを提供しています。画像を含むドキュメントをインポートするには、まずマルチモーダル大規模言語モデル(例:qwen2.5-vl-72b-instruct)を用いて画像をテキストによる説明に変換したうえで、ドキュメントをアップロードしてください。以下にサンプルプロンプトを示します。
あなたは専門の画像読み取りアシスタントです。提供された画像について、詳細な解釈および包括的なまとめを作成することが任務です。 ---要件--- 1. 画像に明確に区別されるモジュールが含まれている場合、各モジュールについて可能な限り詳細な情報を抽出・提示してください。 2. 抽出した情報をもとに、各モジュールについてまとめを作成してください。 3. 画像にチャートが含まれている場合、チャートから得られる情報をまとめてください。 4. 画像に旗アイコン、ピクトグラム、比喩的アイコン、ツールアイコン、ハイブリッドアイコンなど、意味のあるアイコンが含まれている場合、それらのアイコンからも詳細情報を抽出してください。 5. 抽出した情報をもとに、まとめを作成し、有用な全体的な情報を提供してください。 ---注意--- 第三者の視点で記述し、モジュール名を明記して、完全な文脈を確保してください。 *画像の主要言語を特定してください*(テキストの 80% を超える言語)。*画像の主要言語*を出力言語として使用してください。DMS を使用する際は、
initialize操作とquery操作を同一のクエリセッション内で実行してください。SQL ウィンドウで両方のステートメントを選択し、「実行」をクリックします。
操作手順
GraphRAG サービスの初期化
構文
SELECT adbpg_graphrag.initialize(config json);パラメーター
adbpg_graphrag.initialize 関数は、GraphRAG サービスの構成を指定する JSON 変数を入力パラメーターとして受け取ります。以下の表に構成パラメーターを示します。
パラメーター | 説明 |
llm_model | GraphRAG が使用する大規模言語モデル(LLM)を指定します。デフォルト値:qwen-max-2025-01-25。 |
embedding_model | GraphRAG が使用する埋め込みモデルを指定します。デフォルト値:text-embedding-v3。 |
language | GraphRAG が使用するデフォルト言語を指定します。デフォルト値:English(英語)。
|
entity_types | サービスがドキュメントを解析して知識グラフを生成する際に抽出するエンティティノードの種類を指定します。 |
relationship_types | サービスがドキュメントを解析して知識グラフを生成する際に抽出する関係性エッジの種類を指定します。 |
first_node_content | 決定木(tree)モードを使用する場合、このパラメーターは初期ノードの応答を指定します。デフォルト値:「Hello, how can I help you?」。 |
end_node_content | 決定木(tree)モードを使用する場合、このパラメーターは最終ノードの応答を指定します。デフォルト値:「Are there any other questions?」。 |
global_distance_threshold | 決定木(tree)モードを使用する場合、このパラメーターはグローバル検索結果をローカル検索結果よりも優先的に選択するしきい値を指定します。デフォルト値:0.1。値 0.1 は、ユーザーの返答に対するグローバル検索結果の類似度スコアが、ローカル検索結果のスコアより少なくとも 0.1 高い場合に、グローバル検索結果が選択されることを意味します。 |
ドキュメントのアップロード
構文
SELECT adbpg_graphrag.upload(filename text, context text);パラメーター
adbpg_graphrag.upload 関数は、ファイルの内容をアップロードします。ファイルがアップロードされると、GraphRAG はテキストのチャンク分割、ベクター生成、知識グラフ抽出など、一連のタスクを実行します。
filename:ファイル名。
context:ファイルの内容。
例
SELECT adbpg_graphrag.upload('ProductInfo.txt', 'Xiao Mi 顧客対応システムは、質問応答、休暇申請、ナレッジベース検索などの機能を提供します。');情報のクエリ
構文
SELECT adbpg_graphrag.query(query_str text);
SELECT adbpg_graphrag.query(query_str text, query_mode text);パラメーター
query_str:クエリ文字列(質問)。
query_mode:クエリモード。GraphRAG は以下のクエリモードをサポートしています。
mix(デフォルト):ベクター照合および知識グラフを用いて関連情報を取得し、それを LLM へのコンテキストとして提供します。
bypass:ベクターおよび知識グラフのクエリをスキップし、LLM に直接クエリを送信します。
naive:ベクター照合のみを用いて関連情報を取得し、それを LLM へのコンテキストとして提供します。
local:知識グラフ内のエンティティノードのみを用いて関連情報を取得し、それを LLM へのコンテキストとして提供します。
global:知識グラフ内の関係性エッジのみを用いて関連情報を取得し、それを LLM へのコンテキストとして提供します。
hybrid:知識グラフ内のエンティティノードおよび関係性エッジの両方を用いて関連情報を取得し、それを LLM へのコンテキストとして提供します。
tree:決定木モード。このモードでは、知識を Q&A 木構造として格納し、その構造を用いてクエリおよび応答を行います。
例
SELECT adbpg_graphrag.query('Xiao Mi システムにはどのような機能がありますか?', 'hybrid');