新しいことを学び、古いものを見直す: ナレッジグラフからグラフデータベースへ

新しいことを学び、古いものを見直す: ナレッジグラフからグラフデータベースへ

人工知能技術といえば、まずディープラーニングや機械学習技術が思い浮かびます。人工知能の応用といえば、音声アシスタントや自動運転などがすぐに思い浮かぶでしょう。実際、業界で人工知能を応用するための前提条件は、まず業界を理解することです。業界とシナリオを理解することでのみ、真にインテリジェントになります。簡単に言えば、業界 AI ソリューションを提供するには、業界ナレッジ グラフを確立する必要があります。

[[255877]]

機械は人工知能技術を通じてユーザーと対話し、データを取得し、アルゴリズムを最適化し、さらに重要なことに、知識グラフを構築および改善し、世界を認識して理解し、そしてこの世界に貢献します。

では、ナレッジグラフとは何でしょうか?

[[255878]]

ナレッジグラフ

ナレッジ グラフは、本質的にはセマンティック ネットワークの知識ベースです。実際の応用の観点から見ると、ナレッジ グラフは実際には単純に複数の関係のグラフとして理解できます。

では、マルチリレーショナル グラフとは何でしょうか? データ構造における「グラフ」を思い出してください。グラフはノードとエッジで構成され、通常は特定のものの間の特定の関係を記述するために使用されます。グラフは点を使用して物事を表し、2 つの点を結ぶエッジを使用して対応する 2 つの物事間の特定の関係を表しますが、これらのグラフには通常、1 種類のノードとエッジのみが含まれます。記事「IOTA、モノのインターネット ブロックチェーン?」では、有向非巡回グラフについて説明しています。マルチリレーションシップ グラフには通常、複数の種類のノードと複数の種類のエッジが含まれます。 グラフの数学的基礎はグラフ理論であり、それ自体が応用数学の一部です。将来的には、おそらくトポロジーの分野も含まれるようになるでしょう。

[[255879]]

ナレッジ グラフでは、通常、「エンティティ」はグラフ内のノードを表すために使用され、「リレーションシップ」はグラフ内の「エッジ」を表すために使用されます。エンティティは現実世界の物事を指し、リレーションシップは異なるエンティティ間の特定のつながりを表現するために使用されます。エンティティとリレーションシップには独自の属性もあります。ナレッジ グラフの構築は、後続のアプリケーションの基礎となり、構築の前提として、さまざまなデータ ソースからデータを抽出することが必要になります。データ抽出の難しさは、非構造化データの処理にあり、これには、エンティティ命名認識、関係抽出、エンティティ統合、参照解決などの NLP の関連テクノロジが関係します。

ナレッジ グラフ プロジェクト自体は、依然としてビジネス中心かつデータ中心です。ビジネスとデータの重要性を過小評価しないでください。

[[255880]]

ナレッジ グラフの最も重要な中核は、ビジネスの理解とナレッジ グラフ自体の設計にあります。ビジネスロジックから始める必要があり、ナレッジグラフの設計を観察することで、その背後にあるビジネスのロジックを推測することは簡単です。設計時には、将来のビジネスの変化についても考慮する必要があります。ナレッジ グラフをできるだけ軽量にし、どのデータをナレッジ グラフに格納し、どのデータをナレッジ グラフに格納しないかを決定する鍵は、ナレッジ グラフを小型で軽量なストレージ キャリアに設計することです。

ナレッジ グラフを保存する主な方法は、RDF とグラフ データベースの 2 つです。それらの違いは以下の図に示されています。 RDF の重要な設計原則はデータの容易な公開と共有ですが、グラフ データベースは効率的なグラフ クエリと検索に重点を置いています。第二に、RDF はトリプル形式でデータを保存し、属性情報は含まれませんが、グラフ データベースは一般的に属性グラフを基本的な表現形式として使用するため、エンティティとリレーションシップに属性を含めることができ、実際のビジネス シナリオを表現しやすくなります。

では、なぜグラフ データベースを使用するのでしょうか。その核心は「関係性」にあります。

「関係性」を再考する

関係とは、人と人、人と物、物と物の間の相互のつながりを指します。

異なる物事は、空間と時間の関係、全体と部分の関係、原因と結果の関係、内容と形式の関係、さらには遺伝的関係、機能的依存関係、内部関係と外部関係など、さまざまな種類の関係に従って相互に接続されます。 データ構造内の関係とは、コレクション内の要素間の何らかの相関関係を指します。関係演算には、集合の減算、積、和、補数などが含まれます。

[[255881]]

数学において、相関関係とは不確定な相互依存関係のことです。

  • 程度別:完全に関連、不完全に関連、無関係
  • 影響別:正と負の相関
  • 形式別:線形相関と非線形相関
  • 変数の数による:単純相関、多重相関、部分相関
  • ......

物事同士の関係も複雑で、無限に多様です。

[[255882]]

現実の世界では、すべてのエンティティは周囲の他のエンティティと密接な関係があり、これらの関係に保存される情報はエンティティ自体の属性よりもさらに膨大です。

しかし、データベースはたくさんあるのに、なぜグラフ データベースが必要なのでしょうか? リレーショナル データベースや多くの NoSQL データベースでは、なぜナレッジ グラフを完全に構築できないのでしょうか?

データベースの保存と「関係性」の表現

世界は関係性で構成されています。リレーショナル データベースは関係性をうまく処理できるでしょうか?

[[255883]]

リレーショナルデータベース

従来のリレーショナル データベースは、エンティティの内部属性の記述に重点を置いています。エンティティ間の関係は通常、外部キーを使用して実装されます。すべてのデータは垂直スタックで表され、それらの直接的な関係が維持されます。関係を解決するには結合操作が必要になることが多く、結合操作には時間がかかります。多くの場合、相関性の高いデータではなく、集約されたデータ向けに最適化されています。

インターネット、特にモバイル インターネットの爆発的な成長は、従来のリレーショナル データベースをすでに圧倒しています。ソーシャル ネットワークなどのアプリケーションにおける関係性に対する高い需要と相まって、リレーショナル データベースは対応できないようです。

アプリケーション開発の観点から見ると、リレーショナル データベースの複雑さを増すことなく、データと関係をモデル化して保存することは不可能です。関係の数と階層が増加すると、データベースのサイズが大きくなり、パフォーマンスが低下します。新しいタイプのデータや関係が追加されると、再設計が必要になり、時間コストが増加します。そのため、従来のデータベースは、リアルタイムの価値を持つデータ関係には適していません。

[[255884]]

この場合、相関性の高いデータの保存と分析には NoSQL が必要になります。

ノーSQL

記事「ビッグデータ向け NoSQL」では、NoSQL はキー値、ドキュメントベース、列ベース、グラフ データベースの 4 つのカテゴリに分類されています。

Key-Value モデルは、単純なデータやリストに適しています。データが常に相互作用し、関連している場合、実際にはグラフがより必要になります。ドキュメントベースの NoSQL を使用してドキュメントを管理します。従来のデータベースでは、情報は個別のデータ セグメントに分割されますが、ドキュメント データベースでは、ドキュメントが情報処理の基本単位となります。文書は、ワープロ文書と同様に、長く、複雑で、構造化されていない場合があります。ドキュメントは、リレーショナル データベース内のレコードに相当します。ドキュメントベースのNoSQLは階層分割にドキュメントを使用し、自由なデータ計画もツリーとして簡単に表現できます。グラフに成長すると、ドキュメント間の関係をより代表的なデータ構造で保存する必要があり、列ベースの NoSQL でも同様です。

アプリケーション開発の観点から見ると、これらの NoSQL データベースはリレーションシップを処理せず、データ リレーションシップをモデル化または保存するためのデータ構造がなく、これらのデータ リレーションシップをサポートするクエリ構造もありません。さらに、アプリケーション内でデータを接続するには JOIN 操作も必要であり、トランザクションには ACID サポートがありません。

ACID は、データベース トランザクションを正しく実行するための 4 つの基本要素の略語です。含まれるもの: 原子性、一貫性、独立性、および永続性。

したがって、これら 3 つの NoSQL データベースは、リアルタイムの価値を持つデータ関係には適していません。

[[255885]]

グラフ データベースがついに登場しました。グラフ データベースは、データ間の関係を記述することに重点を置いたデータベースです。関係の処理に最適で、単純なものから複雑なものまで、相互接続されたデータ構造を作成できます。グラフ データベースは NoSQL の非常に重要な部分になっています。

グラフデータベース

グラフ データベースは、数学的なグラフ理論のアイデアとアルゴリズムに基づいて、複雑なリレーショナル ネットワークを効率的に処理できるデータベースです。グラフ データベースは、複雑で相互接続され、変化する大量のデータを効率的に処理するのに適しており、その計算効率は従来のリレーショナル データベースよりもはるかに高くなっています。

グラフ内の各ノードはオブジェクトを表し、ノード間の線はオブジェクト間の関係を表します。ノードにはラベルを付けることができ、ノードとリレーションシップの両方に複数の属性を持たせることができます。リレーションシップはノードを任意の構造に編成できるため、グラフをリスト、ツリー、マップ、または複雑なエンティティとして編成できます。このエンティティ自体も、複雑で高度に相互に関連した構造で構成されています。

グラフ データベース Neo4J を例にとると、Cypher を使用してノードとリレーションシップを作成する例は次のとおりです。

  1. CREATE (:Person {名前:“Abel Cao”} )-[:Love]-> (:Person {名前:“Andy Cao”} )

クエリも簡単です:

  1. MATCH (:Person {名前:“Abel Cao”} ) -[:Love]-> (:Person {名前:“Andy Cao”} )

ノードは単一の属性から始まり、数千、あるいは数十億にまで成長する可能性がありますが、少し面倒になります。ある意味、データを関係性と結び付けて、異なるノードに分散させることは理にかなっています。インデックスを使用して、特定のプロパティ値を持つノードまたは関係を検索する方が、グラフをトラバースするよりも効率的です。

グラフを使用してデータを保存することは、データを保存するための最も高性能なデータ構造方法の 1 つです。グラフ データベースは数多くありますが、最も一般的に使用され、よく知られているのは Neo4j です。

グラフデータベースにおける Neo4j

グラフデータベースの Neo4j は、データ関係に特化して設計されています。モデルのメンテナンスは簡単です。ホワイトボードモデルは物理モデルです。クエリも比較的単純です。テーブルマッピング関係はグラフ関係になります。より少ないリソースでより高いパフォーマンスを実現できます。

グラフを使用してソーシャルネットワーク内の人々の関係性を表す

実際には、Neo4j は、いくつかの注目すべき機能を備えた完全なエンタープライズ展開または軽量プロジェクトで使用されるサーバーのサブセットに最適です。

ACID サポート

ACID 操作はデータの一貫性を保証するための基礎です。 Neo4j は、トランザクション内の複数の操作が同時に実行されるようにし、データの一貫性を確保します。この機能は、デプロイメントが組み込みモードであるか、マルチサーバー クラスターであるかに関係なくサポートされます。

高可用性

グラフ ストレージは、あらゆるアプリケーションに簡単に統合できます。アプリケーションが運用されていくにつれて、パフォーマンスの問題が徐々に顕著になってきます。しかし、アプリケーションがどのように変化しても、Neo4j はコンピュータ ハードウェアのパフォーマンスによってのみ影響を受け、ビジネス自体によって制約されることはありません。

容易な拡張性

数億のノードと関係に拡張できます。neo4j サーバーをデプロイすると、数億のノードと関係をサポートできます。単一のノードでデータ需要をサポートできない場合は、分散クラスターの展開を実行できます。一般的に言えば、10 億ノード未満のグラフには Neo4j で十分です。

高速検索

Neo4j が提供するトラバーサル ツールを使用すると、1 秒あたり数億件のデータ取得量で効率的なデータ取得が可能になります。

Neo4j のユーザーには、eBay、Pitney Bowes、Walmart、Lufthansa、Cisco、HP、Accenture など、数多くの有名企業が含まれます。

[[255886]]

Neo4j プログラミングの概要

Neo4j は、組み込み型のディスクベースの完全トランザクション Java 永続化エンジンです。 Neo4j データベースにアクセスするには、主に 3 つの方法があります。

埋め込み

データベースのアドレスを指定してデータベースに直接アクセスします。

  1. 新しい GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);

REST API

API をリクエストしてデータベースにアクセスします。

  1. curl -D - -H Accept:application/json "http://neo4j:123456@loc​​alhost:8474/db/data/"  

ODBC ドライバ

Java API を介してデータベースにアクセスします。

  1. DriverManager.getConnection( "jdbc:neo4j:123456//localhost:8474/" );

人生は短い、私はPythonを使う

Python を使用して Neo4j ベースのアプリケーションを完成させるには、http://py2neo.org/v3/ から py2neo をインストールする必要があります。

  • Neo4j の接続
  1. mygraph = Graph(ホスト= 'localhost' 、http_port=8474、https_port=8473、bolt_port=8687、ユーザー名= 'Abel_Cao' パスワード= 'xxxxxx' )
  • ノードと関係の作成
  1. abel = Node( 'Person' , name = 'Abel' )
  2. zmx = ノード( 'Person' name = 'Zmx' )
  3. abel_love_zmx = 関係(abel, '愛' , zmx)
  4. グラフを作成します(abel_love_zmx)
  • プロパティを変更する
  1. abel.properties[ '年齢' ] = 47
  2. andy.properties[ '年齢' ] = 17
  3. アベル.プッシュ()
  4. andy.push()
  • ノードまたは関係を見つける
  1. アベル = graph.find_one(ラベル = '人' 、プロパティキー = '名前' 、プロパティ値 = 'アベル' )
  2. zmx = graph.find_one(ラベル = '人' 、プロパティキー = '名前' 、プロパティ値 = 'Zmx')
  3. abel_love_zmx = graph.match_one(開始ノード=abel、rel_type='Love'、終了ノード=zmx)
  • ノードと関係の削除
  1. グラフを削除します(alice_knows_bob)
  2. グラフの削除(アリス)
  3. グラフの削除(ボブ)

カスタムクエリ

  1. カーソル= graph.run(Cipher_statement)

暗号概要

簡単に類推すると、Cipher クエリ言語は SQL ステートメントとして理解できます。

  • ノードと関係の削除
  1. MATCH (abel:`Person` { name : "Abel" })-[abel_love_andy:`Love`]->(
  • ルートの検索
  1. MATCH p=(abel:`Person` { name : "Abel" })-[]->(andy:`Person` { name : "Andy" }) DELETE p;
  • 最短経路を見つける
  1. MATCH p=shortestPath((abel:`Person` { name : "Abel" })-[*..5]->(zmx:`Person` { name : "Zmx" })) DELETE p;

Cipher のその他の操作手順は次のとおりです。

  • タグと属性を削除する
  • ノードをトラバースする FOREACH
  • フィルター条件 WHERE
  • インデックスSTARTを使用する
  • 並べ替え ORDER BY
  • ページネーション LIMIT SKIP
  • 索引
  • 一意制約
  • 集計関数 COUNT SUM AVG DISTINCT など

Neo4j のクラスター展開では、通常、zookeeper を使用して neo4j サーバーのハートビートを検出します。

Zookeeper マスターの選出中は書き込み要求を処理できず、例外が直接返されることに注意してください。これを制御するには、クライアントにフェイルオーバー再試行メカニズムを提供するのが最適です。

さまざまなグラフデータベース

db-engines.com では、グラフデータベースの市場ランキングを見ることができます。

市場は大きく変化しており、過去の記憶は次のようになっているようです。

  • AWS は分散グラフデータベースである Titan を使用します。
  • Titan はデータベースではなく、Cassandra や Hadoop などの基盤となるストレージ エンジンに依存し、関連するクエリを実行するために Lucene、ElasticSearch、Solr などのインデックス エンジンにも依存するクライアント ライブラリです。
  • arangoDB は、ドキュメント、グラフ、キー値ストレージなどの柔軟なデータ モデルをサポートします。
  • OrientDB の主な機能は、ドキュメント、グラフ、キー/値、実際のオブジェクトなどのさまざまなモデルをサポートするマルチモデル オブジェクトのサポートです。
  • GUN は、リアルタイムの分散型組み込みグラフ データベース エンジンです。

私が注目したいくつかのグラフ データベースのいくつかの特性の比較:

Neo4j にはキャッシュ層がないため、読み取り QPS ボリュームをサポートできず、分散型大規模データ ストレージのニーズを満たすこともできません。多くの大企業は独自のグラフ データベースを持っています。たとえば、Baidu は、膨大なノード オブジェクトと複雑な関係を保存できる HugeGraph をオープンソース化しています。

グラフデータベースの応用

データ キャプチャ設計後にデータ駆動型の運用と意思決定を追求する組織にとって、グラフ分析は最も効果的な競争上の優位性となる可能性があります。そのため、グラフ データベースは、ソーシャル ネットワークや信用報告システムなど、多くの分野で広く使用されています。

  • リアルタイムの推奨事項
  • マスターデータ管理: 組織構造、ソーシャルネットワーク、製品発注、ITネットワーク
  • 詐欺検出、合成ID詐欺グループ
  • グラフベースの検索
  • ITネットワーク管理
  • アイデンティティとアクセス管理
  • 地理情報システム

重要なのは、グラフ データベースがビッグ データの洞察を行動に移すことができ、ナレッジ グラフを構築するための基礎の 1 つであり、人工知能とそのアプリケーションにおいて重要な役割を果たすことです。

参考文献

https://neo4j.com/開発者

https://www.jiqizhixin.com/articles/2018-06-20-4

https://db-engines.com/

Ian Robinson、Jim Webber、Emil Eifrem、Liu Lu、Liang Yue 訳「Graph Database (Second Edition)」、Posts and Telecommunications Press、2016 年

[この記事は51CTOコラムニスト「老曹」のオリジナル記事です。著者のWeChat公開アカウント:Oh Home ArchiSelf、id:wrieless-com]

この著者の他の記事を読むにはここをクリックしてください

<<:  2019年世界人工知能製品応用博覧会は今年5月に蘇州で開催される。

>>:  プログラミング啓蒙ロボット、本物の人形か、それとも本当の物語か?

ブログ    
ブログ    

推薦する

人工知能は人間と同じくらい創造的になれるのでしょうか?

創造性は、芸術、文学、科学、技術など、斬新で価値があり、意義のある作品を生み出すことを可能にする人間...

...

AI スペクトルをめぐる戦いは 5G にとって何を意味するのでしょうか?

インテリジェントな都市変革の活発なトレンドの中で、AI を使用して交通渋滞を管理することは、誰もが多...

製造業者はデジタルツインをどのように活用して生産性を向上できるでしょうか?

メーカーは、競争上の優位性を獲得し、コストを削減し、顧客によりカスタマイズされた体験を提供するために...

独自のビッグデータ知識システムを迅速かつ包括的に構築するにはどうすればよいでしょうか?

多くの人がさまざまな種類の本を読み、ビッグデータに関する多くの記事に出会ったことがありますが、それら...

...

新しいモデルは99%の精度で、ChatGPTによって生成されたテキストコンテンツを認識できます。

IT Homeは11月8日、sciencedirectに掲載された最新の論文によると、科学者は20...

コードを超高速で変更! GPT-3に編集機能とテキスト挿入機能が追加され、AIがあなたに代わって詩を書くことができる

いつもトラブルを起こしているAI分野の花形研究機関OpenAIが最近また別のことをしました。GPT-...

チャットボットの機械学習セキュリティの重要性

人工知能は、大手テクノロジー企業、新興企業、大学の研究チームによって推進されている成長産業です。 A...

...

バイトマルチモーダル大規模モデル PixelLM: SA に頼らない効率的なピクセルレベル推論

マルチモーダルな大規模モデルが爆発的に増加していますが、画像編集、自動運転、ロボット工学などのきめ細...

...

...

顔認証決済はまだ普及していないが、中央銀行はすでに新しい決済方法を発表しており、ジャック・マーは今回不意を突かれた

顔認識の隠れた危険性これらの便利な支払い方法が普及したのは、ジャック・マーのおかげです。アリペイの登...