最近、人目を引く国産のオープンソースAI知識ベース・フレームワーク、KAG(Knowledge Augmented Generation)を発見した。
KAG アント・グループ、浙江大学、その他多くの組織が共同で立ち上げたもので、垂直分野の知識ベースの構築に重点を置いている。本論文のデータによると、電子政府分野のKAGは、浙江大学、Ant Group、浙江大学、浙江大学と共同で立ち上げた。 91.6%の驚異的な精度また、eヘルスケアのQ&Aのようなシナリオも得意としている。
この記事では、以下について詳しく紹介する。 KAG 原理、適用シナリオ、比較 ラグ この記事では、Antによってオープンソース化されたKAGフレームワークの没入感を体験してもらうために、ローカルインストールのチュートリアルとデモも提供しています。AIを使って独自の知識ベースを構築しようと考えているなら、この記事は見逃せません!
KAGとは何か? 新世代の知識ベース・フレームワークのコアコンセプト
KAG (Knowledge Augmented Generation)は、OpenSPGエンジンと大規模言語モデル(LLM)に基づいた推論Q&Aフレームワークです。そのコアコンセプトはナレッジグラフとベクトル検索の2つの利点を組み合わせることで、より厳密な意思決定支援と、より正確な情報検索サービスをユーザーに提供することを目指している。
KAGは、以下の4つのキーテクノロジーにより、LLMと知識グラフの深い融合と強化を実現します:
- LLMに適した表現に関する知識知識グラフの構造を最適化することで、大規模な言語モデルでも理解しやすく、活用しやすくする。
- 知識グラフと原文テキスト断片のクロスインデックス化検索効率と精度を向上させるために、知識グラフ内のエンティティや関係と、元のテキスト断片との双方向リンクを確立する。
- 論理形式誘導型ハイブリッド推論エンジンナレッジグラフの論理的推論力とLLMの意味理解力を組み合わせることで、より複雑な推論クイズを実現します。
- 意味推論による知識アライメント知識活用の効果を高めるために、知識グラフの知識が言語モデルの意味空間と整合していることを確認する。
つまり、KAGは知識グラフとベクトル検索の長所を革新的に組み合わせ、強力な知識ベースフレームワークを構築します。KAGはLLMの論理的推論能力を利用するだけでなく、知識グラフと組み合わせることでより深い推論を行い、複雑な情報検索タスクを完了することができます。さらに重要なことは、知識グラフの情報が不十分な場合、KAGはベクトル検索技術を巧みに利用して、関連するテキスト断片を補足し、回答の網羅性と正確性を確保することができます。
KAGの全体的なアーキテクチャの概要
KAGフレームワークは、知識構築(kg-builder)と問題解決(kg-solver)の2つのコアモジュールから構成されている。
- kgビルダー このモジュールは、知識の効率的な構築、LLMのための知識表現の最適化、柔軟な知識モデリングと双方向インデックスのサポートに重点を置いている。
- kgソルバー このモジュールは、複雑な問題を解決するために、検索、グラフィカル推論、言語的推論、数値計算などの複数の機能を統合したハイブリッド推論エンジンによって達成される、効率的な問題解決を担当する。
- 3番目のモジュールであるkag-modelは、KAGフレームワークをさらに改善するためにオープンソース化される予定である。
KAGと従来のRAGの比較:違いと利点の説明
RAG(Retrieval-Augmented Generation)は一般的な知識ベース技術として広く使われている。では、RAGに対するKAGの違いや利点は何だろうか?以下の次元で比較・分析する:
1.知識表現:
- RAGだ。 検索は主にベクトルの類似性に頼っており、知識表現は比較的単純であるため、マルチホップ推論を必要とする複雑な問題を扱うのは難しい。
- KAG。 LLMにとってより親しみやすい知識表現を採用し、スキーマレスおよびスキーマ制約付き知識と互換性があり、グラフ構造知識とテキスト知識の相互インデックス構造をサポートし、よりリッチで構造化された知識表現をサポートする。
2.推理力:
- RAGだ。 知識の論理的関係に鈍感で、複雑な推論を必要とする専門分野の問題に対処する論理的推論能力の欠如。
- KAG。 より複雑な専門的問題に対応するため、強力な論理的推論とマルチホップ事実クイズ機能を備えた論理記号ガイド付きハイブリッド推論エンジンを導入。
3.パフォーマンス
- RAGだ。 マルチホップ・タスクやクロスパッセージ・タスクの成績が悪く、首尾一貫性や論理性が比較的弱いテキストを生成する。
- KAG。 マルチホップやクロスパッセージのタスクで優れた性能を発揮し、推論精度と情報カバー率を大幅に向上させ、より正確で包括的な回答を生成する。
4.適用可能なシナリオ
- RAGだ。 一般的なテキスト生成や検索タスクには適しているが、法律、医学、科学など、複雑な推論が必要とされる専門的な分野では性能に限界があるだろう。
- KAG。 特に、複雑な推論を必要とするアプリケーションやマルチホップの事実クイズに適しています。 専門分野金融、医療、法律、行政など、より専門的で正確な知識サービスを提供することができる。
全体として、知識グラフとベクトル検索を融合し、知識表現と推論能力を深く最適化することで、KAGは複雑な問題やドメイン固有の知識クイズに対処する上で、従来のRAG技術を凌駕する可能性を示している。
フィードレベル」チュートリアルのローカル展開:KAGのインストール、使用、デモの効果
理論的な分析は、実際にテストする必要がある!次に、KAGをローカルにインストールし、デプロイし、使用する方法を、結果の簡単なデモンストレーションを交えて紹介しよう。
KAG関連リソース
- Githubアドレス。https://github.com/OpenSPG/KAG
- 公式サイトhttps://spg.openkg.cn/
ハードウェア構成の推奨:
- CPU≧8コア
- メモリー RAM≧32 GB
- ハードディスク ≥ 100 GB
公式の推奨構成は高めですが、私が実際に試したところ、16GB RAMのWindows PCでも基本的にはスムーズに動作しました。そのため、このチュートリアルではWindows環境でのKAGのインストールと使用方法を説明します。
ステップ1: Docker Desktopをインストールする
KAGのインストールとデプロイはDocker環境に依存しているため、お使いのコンピュータにDocker Desktopがインストールされていることを確認してください。
ステップ 2: docker-compose.ymlファイルの作成
- Dドライブ(または他のディスク)のルートディレクトリにKAGという名前のフォルダを作成します。
- KAGフォルダの中に、docker-compose.ymlという新しいファイルを作成する。
- 以下のYAMLコードをコピーしてdocker-compose.ymlファイルに貼り付け、保存する。
バージョン: "3.7
サービス
サーバーを再起動します。
再起動: 常に
image: spg-registry.cn-hangzhou.cr.aliyuncs.com/spg/openspg-server:latest
コンテナ名:release-openspg-server
ポート
- "8887:8887"
depends_on.
- mysql
- neo4j
- minio
#ボリューム。
# - /etc/localtime:/etc/localtime:ro
環境: /etc/localtime:/etc/localtime:ro
TZ: アジア/上海
LANG: C.UTF-8
命令: [
"java"、
"-Dfile.encoding=UTF-8"、
"-Xms2048m"、
"-Xmx8192m"、
"-jar".
"arks-sofaboot-0.0.1-SNAPSHOT-executable.jar"、
'---server.repository.impl.jdbc.host=mysql'、
'---server.repository.impl.jdbc.password=openspg'、
'---builder.model.execute.num=5'、
'--cloudext.graphstore.url=neo4j://release-openspg-neo4j:7687?user=neo4j&password=neo4j@openspg&database=neo4j', '--cloudext.graphstore.url=neo4j://release-openspg-neo4j:7687?
'--cloudext.searchengine.url=neo4j://release-openspg-neo4j:7687?user=neo4j&password=neo4j@openspg&database=neo4j'。
]
mysql.
再起動: 常に
image: spg-registry.cn-hangzhou.cr.aliyuncs.com/spg/openspg-mysql:latest
コンテナ名:release-openspg-mysql
ボリューム:mysql_data:release-openspg-mysql:latest
- mysql_data:/var/lib/mysql
環境:mysql_data:/var/lib/mysql
TZ: アジア/上海
LANG: C.UTF-8
mysql_root_password。 オープンエスピー
MYSQL_DATABASE: openspg
ポート。
- "3306:3306"
コマンド: [
'--character-set-server=utf8mb4'、
'--collation-server=utf8mb4_general_ci'.
]
neo4j.
再起動: 常に
image: spg-registry.cn-hangzhou.cr.aliyuncs.com/spg/openspg-neo4j:latest
コンテナ名: release-openspg-neo4j
ポート
- "7474:7474"
- "7687:7687"
環境。
- TZ=アジア/上海
- NEO4J_AUTH=neo4j/neo4j@openspg
- NEO4J_PLUGINS=["apoc"]です。
- NEO4J_server_memory_heap_initial__size=1G
- NEO4J_server_memory_heap_max__size=4G
- NEO4J_server_memory_pagecache_size=1G
- NEO4J_apoc_export_file_enabled=true
- NEO4J_apoc_import_file_enabled=true
- NEO4J_dbms_security_procedures_unrestricted=*。
- NEO4J_dbms_security_procedures_allowlist=*。
NEO4J_dbms_security_procedures_unrestricted
- neo4j_logs:/logs
- neo4j_data:/data
minio.
image: spg-registry.cn-hangzhou.cr.aliyuncs.com/spg/openspg-minio:latest
コンテナ名:release-openspg-minio
コマンド:server -コンソールアドレス ":9001" /data
再起動: 常に
環境: MINIO_ACCESS_KNOWLEDGE
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio@openspg
TZ: アジア/上海
TZ: アジア/上海
- 9000:9000
- 9001:9001
ボリューム: minio_data:/data
- ボリューム: minio_data:/data
ボリューム: minio_data:/data
mysql_data.
neo4j_logs.
minio_data: minio_data:/data ボリューム: mysql_data.
minio_data.
ステップ3:KAGサービスの開始
- コマンドプロンプトを開き、KAG フォルダディレクトリに移動します(KAG フォルダのアドレスフィールドに cmd と入力して Enter キーを押します)。
- コマンドラインに docker-compose up -d と入力して Enter すると、KAG の自動インストールとデプロイが始まる。
- しばらく待つと、mysql、neo4j、openspg-server、minioの4つのサービスがCreatedまたはStartedと表示されたら、KAGサービスが正常に開始されたことになります。
ステップ 4: KAGバックエンドの管理ページにアクセスします。
- ブラウザを開き、アドレス127.0.0.1:8887を入力し、KAGバックグラウンド操作ページにアクセスします。
- デフォルトのユーザー名 openspg とデフォルトのパスワード openspg@kag を使ってシステムにログインする。
ステップ5:KAGシステムの設定
- ログイン後、まずGlobal Configurationメニューをクリックする。
- 共通構成以下の設定を行います。
- 図 ストレージの構成
- データベース:neo4j
- パスワード:neo4j@openspg
- uri:neo4j://release-openspg-neo4j:7687
- ユーザー:neo4j
- 英語と中国語のキュー
- biz_scene: デフォルト
- 言語: zh
- ベクトル構成 (無料のベクトルモデリングAPIを使用)
- タイプ: openai
- model: BAAI/bge-large-zh-v1.5
- base_url:https://api.siliconflow.cn/v1
- api_key:に移動する シリコンベースのフロー プラットフォームで、無料のAPIキーを取得してください。
- シリコンベースのフロー 登録し、プラットフォームにログインした後、以下の画像のガイドラインに従って、無料のベクターモデルを見つけ、APIキーを作成することができます。
- モデル構成クリック maasモデルを追加(openaiインターフェースと互換性あり)使用したい大きな言語モデルを設定する。
- gpt-4oを例にして、モデル情報を入力し、OKをクリックして保存します。
- API中継局推奨モデル様々なビッグモデルのAPIコールのニーズがある場合、APIトランジットサービスの利用を検討することができます。 スノー などのドローイングや音楽制作のインターフェイスがある。価格もより有利になっている。
ステップ6:ナレッジベースの作成とドキュメントのインポート
- ホームページに戻り、ナレッジベースの作成をクリックします。
- ナレッジベースに名前を付け、「保存」をクリックします。
- 作成に成功したら、ホームページで新しく作成したナレッジベースを見つけ、ナレッジベースの作成をクリックします。
- タスクの作成」をクリックして、文書のインポートを開始します。
- ナレッジベースのドキュメントをアップロードします(現在、KAGは一度に1つのドキュメントしかアップロードできません。)ここでは、私の最新製品であるWeChat AI Assistantに関するドキュメントをアップロードしました。
- ファイル結合ツールの共有募集もし良いフリーファイル結合ツールがあれば、コメント欄で共有してください。
- 設定の次のステップでは、段落の文脈の一貫性を保つために、文書のセマンティクスに従って段落をカットするボックスにチェックを入れることをお勧めします。
- 抽出モデル オプション デフォルト (デフォルトの設定で問題ありません)。 手がかり 必要に応じてカスタマイズできるが、ここでは単に "Q&A分割 "に設定した(理解が必ずしも正確ではないので、訂正を歓迎する)。
- Finishをクリックすると、KAGはドキュメントの抽出と解析を開始します。
- 文書解析のプロセスは、下図に示すように6つのステップに分かれている:
- タスクのステータスがCompletedに変わり、ドキュメントがナレッジベースに正常にインポートされたことを示します。(ステータスが長い間更新されていない場合は、ページを更新してみてください)。
ステップ7:デモンストレーション
- 知識抽出相関図これはKAGが文書から抽出した知識アソシエーションを視覚化したものです。
- Q&A効果テスト::
- 質問1:"パーソナルマイクロAIアシスタントを簡単に紹介してください。"
KAGは、答えを検索して与える前に、思考と推論のプロセスを実行する。KAGの回答は比較的正確で包括的であることがわかる。しかし、応答時間は約40秒と遅い(そのため、KAGは単純なQ&Aシナリオには適していないかもしれない)。
- 質問2:"Personal Micro AI AssistantのAI Family Bucket秘密鍵の設定方法は?"
KAGも答えを出すことができるが、まだ時間がかかる。
総括と展望
上記の経験を通じて、我々はアリオープンソースのKAG知識ベースフレームワークはまだ急速な開発段階にあることがわかります、いくつかの機能とユーザーエクスペリエンスはまだ改善される(このような知識ベースのパラメータ調整、知識ベースの編集や機能の変更は完璧ではありませんが、いくつかのバグの使用の使用も発生する可能性があります)。しかし、Githubの更新記録から、KAGチームは積極的にコードの反復と機能の最適化を実施しています。
知識グラフとベクトル検索を融合したKAGの技術的方向性は非常に有望である。RAG技術が最適な結果を得るために高品質の知識ベースデータ、モデルの増強、パラメータのチューニングを必要とするように、KAGの開発も継続的な改善と最適化を必要とする。
冒頭で述べたように、KAGは(応答性が欠点となる)単純な日常のQ&Aシナリオよりも、複雑な推論を必要とする医療、金融、法律、政府などの専門分野に適している。
現時点では、KAGはまだAPIをオープンしておらず、将来APIがオープンされた後、エージェントアプリケーションに統合され、問題識別メカニズムを通じて、単純な問題と複雑な問題を振り分けることができ、複雑な問題処理においてKAGの利点を発揮することができると期待されています。
全体として、この記事はKAGという最先端技術を味わってもらうことを目的としています。 KAGはまだ完璧ではないかもしれませんが、オープンソースの知識ベースフレームワークとして大きな可能性を示しています。コミュニティの共同の努力と技術の継続的な反復により、KAGはAI知識ベースの分野にさらなる可能性をもたらすと信じています。