
化学企業で働く人たちの中には、話題の生成AIを業務で使ってみたけど精度が今一つ、と思っている人は多いのではないでしょうか。 本日は、そんな化学企業で働く方々に是非とも興味を持ってもらいたいKnowledge Graphの話です。
なぜKnowledge Graph?
背景と必要性
生成AIやLLM(大規模言語モデル)を業務で使用している読者も多いと思いますが、化学分野特有の業務での本格的な運用にはハードルがあります。
その理由は、生成AIのデフォルト知識が専門知識を十分にカバーしていないためです。専門知識が不足していると、ハルシネーション(誤情報)が発生しやすくなります。
特に化学品の表現方法は多岐にわたり、日本語名、英語名、慣用名、化学式、SMILESなどがあります。さらに、化学品には上位概念や下位概念も多く存在し、業務に特有の用語や略号なども数多くあります。
私たち人間はこれらの表現を自由に使いこなしていますが、生成AIはこれら特定領域の知識が不足しています。 そのため、データベース内の検索ジョブであっても、生成AIだけでは精度が不足します。これを向上させるためには、生成AIの知識を補ってくれるKnowledge Graph(KG) が必須です。
グラフRAGという技術が、生成AIの足りない知識をKGで補う検索技術であり、マイクロソフトやアマゾンのような巨大IT企業も真剣に取り組んでいる、注目の技術です。業務に生成AIを組み込む際には、グラフRAGの利用を考えることが増えているようです。
Microsoft GraphRAGのGihhub画面
引用元:https://microsoft.github.io/graphrag/
Knowledge Graph(KG)で実現したいこと
先程グラフRAGについて触れましたが、ここでは、単純に検索ソフトで行うデータベース(DB)内の検索ジョブについて考えます。もちろん、生成AIを組み込んだグラフRAGであれば、自然な会話文で検索結果を回答してくれますが、実際のところ、機械的な回答だけでも十分な場面は多いものです。
DB内での検索ジョブで満足度を向上させるには、以下をカバーできる必要があります。
- 同義語の検索:和名、英名、正式名、慣用名、記号、全角、半角 など
- 関連事項の検索:上位概念、下位概念、類義語 など
お分かりの通り、ここでいう満足度とは、人間が普通にやっている、読み替えや抽象化を高次元に実現することを指しています。同義語の検索はイメージしやすいと思うので、関連事項の検索例を挙げておくと、「ナイロンの性能がよさそうなので、アミド系の材料を使った実験結果を集めたい」などです。
そこで必要なのがKGということなのですが、次に、なぜKGが適しているのかについて考えてみたいと思います。
KGと辞書などの違い
ここではKGと類似概念である辞書、タクソノミー (Taxonomy)を取り上げて、それらの違いを簡潔に説明しつつ、KGの優位性を述べたいと思います。なお、各概念の詳しい解説は末尾に記載しました。
辞書 | タクソノミー | ナレッジグラフ |
---|---|---|
単語の意味・用法のリスト | 階層的分類、親子関係 | 概念と関係のグラフ |
階層構造なし | 上位・下位関係 | データの連携・検索 |
この表からわかることは、
- 和英辞書や化学用語辞書などの辞書があれば同義語の検索精度は上げられる
- しかし、上位概念、下位概念、関係性の検索が伴う関連事項の推薦にはタクソノミーが必要
- KGがあれば、同義語の検索精度も上がり、関連事項の推薦にも対応可能
従って、KGを活用することのが、目的達成への近道になります。
化学分野の既存KG
KGは大変優れた知識ベースですが、膨大な情報を正しく整理する必要があるため、作成にはコストがかかる、というのも事実です。 従って、独自のKGを持つことが他社との優位性につながる可能性があるため、自由に使える化学系のKGは、あまり出回っていないようです。
ただし、論文で検索すると、いくつか化学分野のKnowledge Graphが作成されていることが分かります。 従って、用途に合ったKGが見つけられれば、そのデータを利用するのがよいでしょう。ただし、学術レベルで作られたKGでは業務特有の用語は含まれないため、直ちに適用するのは難しいので注意が必要です。これら業務に特有の用語は自分で追加する必要はありますが、それでも、スクラッチでKGを作成するよりも断然短時間で済みます。
例として、論文検索で見つけた化学系KGのリンクを二つ載せておきます。
どうやって作る?
ご自身の業務で利用できる既存の化学系KGが見つけられない時は、自分で構築しなくてはなりません。日本の化学会社の実務で利用することを考えると、日本語をベースとした化学系KGが欲しいところですが、見つけるのは難しいでしょう。
今回は、スクラッチでKGを作成する時の手順を紹介します。具体的なコードなどは、別の機会に紹介しようと思います。 スクラッチでと書きましたが、使えるデータがあれば使います。そうでなければ、現実的な時間でKGを作ることなどできるはずがありません。
KG作成の大まかな手順は、以下の通りです。
1.オープンデータを用いてベースとなるKGを作成する
- 生成AIを利用する方法 :大規模コーパス(簡単に言うと大量の化学系技術文書)を与えて、KGを作ってもらう
- 既存の辞書やデータベースを活用する方法 :用語の定義、関係性が含まれるWikidata等から必要な情報を抽出する
2.特定分野、業務に特有な用語を追加する
- 人手で追加する方法 :当該分野に詳しい人物が用語を抽出・整理する
- 生成AIを利用する方法 :大規模コーパス(特定領域の化学系技術文書)を与えて、必要な情報を抽出する
- 人手と生成AIのハイブリッド :生成AIがドラフトを作成し、人間がチェックする
1の『ベースとなるKGの作成』に関して、生成AIの性能が向上したことにより、こちらの方法がよさそうに思いますが、少し気を付ける必要があります。そもそも、今回は、生成AI単独では精度不足という前提で話をしています。従って、生成AI単独の精度でも業務に支障がないのであれば、わざわざKGを作る必要はありません。ただし、既にベースとなるKGを所有しており、そのKGを更に拡張する、つまり2の場面では大いに使える可能性があるので、後ほど述べます。
やはり、本命は、Wikidataなどの既存の辞書やデータベースを活用する方法だと思います。Wikidataという単語を初めて聞いたという人のために補足すると、Wikipediaのデータ版がWikidataになります。Wikipediaには、用語の上位・下位の関係性などの情報も付随しており、オントロジーと言えるようなデータソースです。PythonやSPARQLといったプログラミング言語を使って、Wikipediaから所望のデータをダウンロードすることができるため、自身が望む形でベースKGを作成することができます。
Wikidataのトップ画面
引用元:https://www.wikidata.org/wiki/Wikidata:Main_Page
次に、2の『特定分野、業務に特有な用語を追加する』に関してです。三つの方法を記載していますが、本命は三番目のハイブリッド方式です。人手はコストが高すぎますし、生成AIは精度に不安が残るため、ハイブリッドが現時点での最適解だと思います。
生成AIに、ベースとなるKGに足りない分野の文書、例えば、特定分野の論文や社内の技術報告書を与え、KGを作るよう指示を出します。そして、生成AIが作ったKGを人間が修正を加えます。生成AIにKGを作らせるツールは先に挙げたマイクロソフトやアマゾンを始め、多数存在しますが、この分野の発展速度は速いので、ツールはご自身で探されることを推奨します。
最後に、KGを作成する際に気を付けておいた方がよい点を挙げておきます。
必要とする情報源の特定
ベースKGに足りない情報を正しく見極めてください。これは、業務が異なれば「最適なKGは変わる」ためです。そして、使われない知識をどれだけ拡張しようとも、無駄になってしまうからです。
人手と生成AIのハイブリッドでは、人間側の気持ちに立って
ハイブリッドな方法は、現時点で最良のやり方だと思っています。しかし、この作業を行う人物は「AIのしりぬぐいをさせられている」「自分の知識をAIに吸い取られている」と感じる場合も多いため、注意が必要です。私も、これに関して苦い経験をしたことがあります。
おそらく特効薬はないと思いますが、少なくとも、作業を行う人間側の立場に立って話を聞き、作業計画を立てることが重要だと思います。
情報源からデータのダウンロードはサーバー負荷に配慮して
APIなどを通じてダウンロードを行う際は、ダウンロード先の規定を理解し、なるべくサーバー負荷をかけないよう配慮する必要があります。Wikidataのような非営利団体が運営するサイトの負荷を挙げることは、好ましい行為とは言えません。
次回は、作ってみた(予定)
- 実際の作成プロセス: 具体的な手順やツールの紹介。
- 結果の評価: 作成したKnowledge Graphの評価や改善点。
用語解説
辞書 (Dictionary)
- 定義: 辞書は、単語や用語の意味、発音、用法などを記載したリストです。
- 特徴: 単語の定義や用例を提供し、言語学習や翻訳に役立ちます。階層構造や関係性は持ちません。
- 例: 英和辞典、医学辞典、技術用語辞典
タクソノミー (Taxonomy)
- 定義: タクソノミーは、対象を階層的に分類するための体系です。生物学における分類体系が有名ですが、情報科学や他の分野でも使用されます。
- 特徴: 階層構造を持ち、親子関係(上位・下位関係)で分類されます。
- 例: 動物界 > 脊椎動物門 > 哺乳綱 > 霊長目 > ヒト科 > ヒト属 > ヒト
オントロジー (Ontology)
- 定義: オントロジーは、特定の領域における概念とその関係を形式的に定義したものです。知識の表現と共有を目的としています。
- 特徴: 概念間の関係を詳細に定義し、論理的な推論が可能です。タクソノミーよりも複雑な関係を表現できます。
- 例: 医療オントロジーでは、病気、症状、治療法などの概念とそれらの関係を定義します。
ナレッジグラフ (Knowledge Graph)
- 定義: ナレッジグラフは、知識をグラフ構造で表現したものです。ノードが概念やエンティティを表し、エッジがそれらの関係を表します。
- 特徴: 概念やエンティティ間の多様な関係を視覚的に表現し、データの連携や検索に利用されます。
- 例: Googleのナレッジグラフは、検索結果に関連する情報を統合して表示します。
オントロジーとナレッジグラフの違い
- オントロジーは、概念とその関係を形式的に定義するための枠組みです。
- ナレッジグラフは、オントロジーを基にして構築されることが多く、知識をグラフ構造で視覚的に表現します。
従って、オントロジーはナレッジグラフの基盤となるものであり、ナレッジグラフはオントロジーを活用して知識を視覚的に表現する手段、ということになります。
Profile