中文版文档
検索拡張生成 (RAG) テクノロジは、ドメイン アプリケーションと大規模な言語モデルの統合を促進します。しかし、RAGには、ベクトルの類似性と知識推論の相関の間に大きなギャップがあることや、知識ロジック(数値、時間関係、専門家ルールなど)に対する鈍感さなどの問題があり、専門知識サービスの実装を妨げています。
2024 年 10 月 24 日に、OpenSPG は v0.5 をリリースし、知識拡張生成 (KAG) のプロフェッショナル ドメイン ナレッジ サービス フレームワークを正式にリリースしました。 KAG は、ナレッジ グラフとベクトル検索の利点を最大限に活用し、RAG の課題を解決する 4 つの側面を通じて大規模言語モデルとナレッジ グラフを双方向に強化することを目指しています。(1) LLM フレンドリーなナレッジ表現、(2) ナレッジ グラフ、原文 フラグメント間の相互インデックス、(3) 論理形式によって導かれるハイブリッド推論エンジン、(4) 意味論的推論との知識の整合。
KAG は、マルチホップの質疑応答タスクにおいて、NaiveRAG、HippoRAG、およびその他の方法よりも大幅に優れています。 hotpotQA の F1 スコアは相対的に 19.6% 増加し、2wiki の F1 スコアは相対的に 33.5% 増加しています。電子政府質疑応答と電子ヘルス質疑応答を含むアント グループの 2 つの専門知識質疑応答タスクに KAG を適用することに成功し、RAG 手法と比較して専門性が大幅に向上しました。
KAG フレームワークには、kg-builder、kg-solver、kag-model の 3 つの部分が含まれています。このリリースには最初の 2 つの部分のみが含まれており、kag-model は将来的に徐々にオープンソース リリースされる予定です。
kg-builder は、大規模言語モデル (LLM) に適した知識表現を実装します。 DIKW(データ、情報、知識、知恵)の階層構造に基づいて、ITはSPGの知識表現能力を向上させ、同じ知識タイプ(エンティティタイプなど)に対するスキーマ制約のない情報抽出とスキーマ制約のある専門知識構築に対応します。およびイベント タイプ)、グラフ構造と元のテキスト ブロック間の相互インデックス表現もサポートし、推論の質問と回答の段階の効率的な検索をサポートします。
kg-solver は、計画、推論、検索の 3 種類の演算子を含む、論理シンボルに基づくハイブリッド解決および推論エンジンを使用して、自然言語の問題を言語とシンボルを組み合わせた問題解決プロセスに変換します。このプロセスでは、各ステップで完全一致検索、テキスト検索、数値計算、意味推論などの異なる演算子を使用して、検索、ナレッジグラフ推論、言語推論、数値計算という 4 つの異なる問題解決プロセスの統合を実現できます。 。
プライベートナレッジベースのコンテキストでは、非構造化データ、構造化情報、ビジネス専門家の経験が共存することがよくあります。 KAG は DIKW 階層を参照して、SPG を LLM に適したバージョンにアップグレードします。ニュース、イベント、ログ、書籍などの非構造化データ、およびトランザクション、統計、承認などの構造化データ、ビジネス経験やドメイン知識ルールに対して、KAG はレイアウト分析、知識抽出、プロパティ正規化、生のビジネス データと専門ルールを統合されたビジネス ナレッジ グラフに統合するためのセマンティック調整。
これにより、同じ知識タイプ (エンティティ タイプ、イベント タイプなど) に対するスキーマフリーの情報抽出とスキーマに制約された専門知識の構築との互換性が得られ、グラフ構造と元のテキスト ブロック間のクロスインデックス表現がサポートされます。 。この相互インデックス表現は、グラフ構造に基づいた転置インデックスの構築に役立ち、論理形式の統一的な表現と推論を促進します。
KAG は、論理的に形式的にガイドされたハイブリッド ソリューションと推論エンジンを提案します。このエンジンには、計画、推論、検索の 3 種類の演算子が含まれており、自然言語の問題を言語と表記法を組み合わせた問題解決プロセスに変換します。このプロセスでは、各ステップで完全一致検索、テキスト検索、数値計算、意味推論などの異なる演算子を使用して、検索、ナレッジグラフ推論、言語推論、数値計算という 4 つの異なる問題解決プロセスの統合を実現できます。 。
最適化後、垂直フィールドでの KAG の適応性を検証するだけでなく、一般的なデータセットのマルチホップ質疑応答における既存の RAG 手法との比較も行いました。 F1 は 2wiki で 33.5%、hotpotQA で 19.6% 増加しており、SOTA 手法よりも明らかに優れていることがわかりました。私たちはこのフレームワークの改良を続けており、エンドツーエンドの実験とアブレーション実験の測定基準を通じてその有効性を実証してきました。我々は、ロジックシンボル駆動の推論と概念的な調整によって、このフレームワークの有効性を実証します。
「ギャンブル APP」識別ルールの定義
RiskAppTaxo ルールを定義する
Define (s:App)-[p:belongTo]->(o:`TaxOfRiskApp`/`GamblingApp`) {
Structure {
(s)
}
Constraint {
R1("risk label marked as gambling") s.riskMark like "%Gambling%"
}
}
「アプリ開発者」識別ルールを定義する
アプリ開発者ルールを定義する
Define (s:Person)-[p:developed]->(o:App) {
Structure {
(s)-[:hasDevice]->(d:Device)-[:install]->(o)
}
Constraint {
deviceNum = group(s,o).count(d)
R1("device installed same app"): deviceNum > 5
}
}
「ギャンブルアプリ開発者」の識別ルールを定義する
ギャンブルアプリルールの RiskUser を定義する
Define (s:Person)-[p:belongTo]->(o:`TaxOfRiskUser`/`DeveloperOfGamblingApp`) {
Structure {
(s)-[:developed]->(app:`TaxOfRiskApp`/`GamblingApp`)
}
Constraint {
}
}
推論プロセスの主なステップは次のとおりです。
自然言語の問題を、プロジェクトの概念モデリングに依存する実行可能な論理式に変換し、ブラック製品マイニング ドキュメントを参照します。
変換された論理式を OpenSPG 推論器に送信して実行し、ユーザー分類結果を取得します。
ユーザーの分類結果に対する回答を生成します。
OpenSPG コンセプト モデリングと組み合わせると、KAG は自然言語変換グラフ クエリの難易度を軽減し、データ指向の変換を分類概念指向の変換に変更し、元の OpenSPG プロジェクトでの自然言語の質疑応答のフィールド アプリケーションを迅速に実現できます。
推奨システム バージョン:
macOS User:macOS Monterey 12.6 or later
Linux User:CentOS 7 / Ubuntu 20.04 or later
Windows User:Windows 10 LTSC 2021 or later
ソフトウェア要件:
macOS / Linux User:Docker,Docker Compose
Windows User:WSL 2 / Hyper-V,Docker,Docker Compose
次のコマンドを使用して docker-compose.yml ファイルをダウンロードし、Docker Compose でサービスを起動します。
# HOME 環境変数を設定します (このコマンドを実行する必要があるのは Windows ユーザーのみです)# set HOME=%USERPROFILE%curl -sSL https://raw.githubusercontent.com/OpenSPG/openspg/refs/heads/master/dev/release/ docker-compose.yml -o docker-compose.yml docker compose -f docker-compose.yml up -d
ブラウザで KAG 製品のデフォルトの URL に移動します: http://127.0.0.1:8887
詳細については、製品ガイドを参照してください。
エンジンと依存イメージのインストールを完了するには、3.1 セクションを参照してください。
macOS / Linux 開発者
# Create conda env: conda create -n kag-demo python=3.10 && conda activate kag-demo
# Clone code: git clone https://github.com/OpenSPG/KAG.git
# Install KAG: cd KAG && pip install -e .
Windows 開発者
# Install the official Python 3.8.10 or later, install Git.
# Create and activate Python venv: py -m venv kag-demo && kag-demoScriptsactivate
# Clone code: git clone https://github.com/OpenSPG/KAG.git
# Install KAG: cd KAG && pip install -e .
ツールキットの詳細については、クイック スタート ガイドを参照してください。その後、組み込みコンポーネントを使用して組み込みデータセットのパフォーマンス結果を再現し、それらのコンポーネントを新しいビジネス シナリオに適用できます。
KAG が提供する組み込みコンポーネントが要件を満たさない場合は、kag-builder および kag-solver の実装を独自に拡張できます。 KAG-Builder ExtensionおよびKAG-Solver Extensionを参照してください。
KAG は、BuilderChain を使用して、リーダー、スプリッター、マッピング、エクストラクター、アライナー、ベクターライザーなどのコンポーネントを連結します。開発者は、kag によって事前定義された BuilderChain を使用してグラフの構築を完了したり、事前定義されたコンポーネントを組み立てて BuilderChain を取得したりできます。
同時に、開発者はビルダー内のコンポーネントをカスタマイズし、実行のために BuilderChain に埋め込むことができます。
kag
├──interface
│ ├── builder
│ │ ├── aligner_abc.py
│ │ ├── extractor_abc.py
│ │ ├── mapping_abc.py
│ │ ├── reader_abc.py
│ │ ├── splitter_abc.py
│ │ ├── vectorizer_abc.py
│ │ └── writer_abc.py
kag ソルバーは、リーズナー、ジェネレーター、リフレクター コンポーネントで構成されるソルバー パイプラインを実行します。 KAG は、デフォルトの推論器、ジェネレータ、およびリフレクタを提供します。開発者は、次の API に基づいてカスタム実装を提供することもできます。
kag
├── solver
│ ├── logic
│ │ └── solver_pipeline.py
├── interface
├── retriever
│ ├── chunk_retriever_abc.py
│ └── kg_retriever_abc.py
└── solver
├── kag_generator_abc.py
├── kag_memory_abc.py
├── kag_reasoner_abc.py
├── kag_reflector_abc.py
└── lf_planner_abc.py
KAG は、Qwen / DeepSeek / GPT などの OpenAI サービスと互換性のある MaaS API とのドッキングをサポートし、vLLM / Ollama によってデプロイされたローカル モデルとのドッキングもサポートします。開発者は、llm_client インターフェイスに基づいてカスタム モデル サービスのサポートを追加できます。
kag
├── common
├── llm
├── client
│ ├── llm_client.py
│ ├── ollama_client.py
│ ├── openai_client.py
│ ├── vllm_client.py
KAG は、OpenAI 埋め込みサービス、Ollama によって展開される bge-m3 モデルを含む、OpenAI 表現モデルなどの呼び出しをサポートします。ローカル埋め込みモデルのロードと使用もサポートします。
kag
├── common
├── vectorizer
│ ├── vectorizer.py
│ ├── openai_vectorizer.py
│ ├── local_bge_m3_vectorizer.py
│ ├── local_bge_vectorizer.py
他のフレームワークと統合すると、外部のビジネス データと専門知識を入力として使用して、kag-builder パイプラインを呼び出し、ナレッジ グラフの構築を完了できます。また、kag ソルバーを呼び出して Q&A 推論プロセスを完了することもでき、推論結果と中間プロセスがビジネス システムに公開されます。
他のフレームワークが kag を統合する方法は、次のように簡単に説明できます。
ドメイン概念グラフとエンティティグラフの融合を実現するドメインナレッジインジェクション
KG構築とQ&Aの効率を向上させるkag-modelの最適化
幻覚 知識論理制約の抑制
このソフトウェアを使用する場合は、以下のように引用してください。
KAG: 知識拡張生成を通じて専門分野の LLM を強化
KGFabric: エンタープライズ データ相互接続のためのスケーラブルなナレッジ グラフ ウェアハウス
@article{liang2024kag, title={KAG: 知識拡張生成によるプロフェッショナル ドメインの LLM の強化}, author={Liang、Lei と Sun、Mengshu と Gui、Zhengke と Zhu、Zhongshu と Jiang、Zhouyu と Zhong、Ling と Qu、袁と趙、ペイロンと薄、中埔と楊、金など}、journal={arXiv preprint arXiv:2409.13731}、year={2024}}@article{yikgfabric, title={KGFabric: エンタープライズ向けのスケーラブルなナレッジ グラフ ウェアハウスデータ相互接続}、著者={イー、ペンとリャン、レイとダー・チャン、ヨン・チェンとチュー、ジンイェとリウ、シャンユーとタン、クンとチェン、嘉林と林、ハオとチウ、レイジエと周、ジュン}}
Apache ライセンス 2.0