ナレッジグラフ: インテリジェントなコンテキスト アウェア検索の実現

ナレッジグラフは、ユーザーコンテンツインタラクションという 3 つの主要な柱にわたってデータをリンクすることで、Gemini Enterprise を強化します。ナレッジグラフは、コーパス内のさまざまなインスタンスとエンティティの関係を理解し、詳細なコンテキスト アウェア検索を提供することで、検索の品質とエクスペリエンスを向上させます。

ナレッジグラフは、次の方法で検索機能を強化します。

  • 組織のコンテキスト(派生したレポートラインや他のエンティティとの関係など)でユーザー関連データを拡充します。
  • エンティティの認識、関係、インテントの理解を改善し、ユーザーのクエリからより多くの分析情報を検出します。
  • コンテキストに基づく正確なデータで検索レスポンスを改善し、ユーザーが関連する人物や組織情報を簡単に見つけられるようにします。

ナレッジグラフでサポートされているデータソース

ナレッジグラフは、次のデータソースを利用するアプリで利用できます。

始める前に

ナレッジグラフの機能を使用するには、まずユーザー コネクタを構成して、ユーザーデータをナレッジグラフに接続する必要があります。ユーザーデータを接続しないと、これらの機能は正常に動作しません。

ユーザーデータは、次のようなナレッジグラフの主な機能で活用されます。

  • エンティティ解決
  • コンテキストの理解
  • パーソナライズ
  • 予測入力
  • 推奨事項

ユーザーデータでサポートされるソース

各アプリに設定できるユーザー コネクタは 1 つのみです。ただし、アプリごとに異なるユーザー コネクタを設定できます。ID システムに基づいてデータソースを選択してください。

Gemini Enterprise は、ナレッジグラフへのユーザーデータの取り込みについて次のオプションをサポートしています。

  • Workspace ソース

    Advanced Google Identity コネクタは、Google Workspace からユーザーデータを同期し、Vertex AI Search インデックスに直接コピーします。データをインデックスにコピーすることで、このコネクタは自然言語処理(NLP)などのナレッジグラフのすべての機能を有効にします。Advanced Google Identity コネクタはクラウドネイティブであり、インデックスにデータを保持することで Advanced Drive コネクタと同様に動作します。

    コネクタがアクティブな場合は、次の操作を行う必要があります。

    1. 既存のユーザー検索データストアを使用中の場合は、リンクを解除します。
    2. 新しいデータストアをエンジンに追加します。
  • ネイティブ ソース

    カスタム ユーザー コネクタを使用すると、Google 指定のスキーマを使用して BigQuery または Cloud Storage からユーザーデータをアップロードできます。これは、カスタムまたはハイブリッド ID ソースを使用する組織に最適です。

  • サードパーティのソース

    Gemini Enterprise は、ユーザーデータの取り込みに次のサードパーティ ID プロバイダをサポートしています。

ナレッジグラフを使用したクエリのアノテーションについて

ナレッジグラフによるクエリ アノテーションは、構造化データを検索キーワードに関連付けることで、検索クエリの理解を深めます。このプロセスでは、ナレッジグラフのコンテキスト分析情報を活用して、検索結果の精度と関連性を高めます。

スタンドアロンの情報パネルとは異なり、クエリ アノテーションはメタデータで検索クエリを拡充することで独立して機能し、より正確なエンティティ検出、エンティティ リンキング、ユーザー コンテキストの理解を可能にします。検索キーワードを入力すると、ナレッジグラフは、ユーザー、組織、問題、その他のエンティティとの関係に基づいてクエリを分類し、解釈します。

クエリ アノテーションの主なコンポーネントは次のとおりです。

  • 言及の検出: 検索クエリに含まれる主要エンティティ(ユーザーなど)と関係(上司など)を識別し、構造化データに関連付けます。

  • ユーザー コンテキストの理解: ユーザーのコンテキストを分析し、関連するユーザー シグナル(上位の同僚など)を取得して、検索結果の関連性を高めます。

  • エンティティ リンキング: キーワードを最も関連性の高いエンティティにリンクすることで、曖昧さを解消します(たとえば、企業としての「Apple」と果物を区別します)。

ナレッジグラフのパネル

ナレッジグラフを有効にすると、検索エンジンは拡充されたパネルを検索結果に統合し、コンテキストに基づく正確な情報を提供して、ユーザーが関連性の高い人物、ロール、組織をすばやく見つけられるようにします。検索を実行すると、search API は、検索クエリに関連する追加のコンテキストと分析情報を提供する詳細パネルを返します。

検索結果ページには、関連性の高いエンティティを特定しやすくするために、次の種類のパネルが表示されます。

  • ユーザーパネル: このパネルには、ユーザーの役職、部門、他のユーザーとの関係(管理系統、直属の部下、同僚など)などの情報が表示されます。これにより、組織内の関連するユーザーとそのロールをすばやく確認できます。[ユーザー] パネルはナレッジグラフで強化され、ユーザーが長文カードとして表示されるため、組織内でのユーザーのロールと関係を包括的に把握できます。ナレッジグラフの検索 API のレスポンスには、統合型の 1 ボックスの検索形式の拡充されたデータパネルが含まれます。[ユーザー] パネルには、役職、部門、関連するユーザー情報(管理系統、直属の部下、上司が共通の同僚など)が表示されます。ナレッジグラフから派生したフィールドは、[ユーザー] パネルの結果の derived_struct_data で返されます。

  • 組織パネル: このパネルには、組織の名前、説明、ウェブサイト情報など、組織に関する重要な詳細情報が表示されます。ナレッジグラフの検索 API のレスポンスには、統合型の 1 ボックスの検索形式の拡充されたデータパネルが含まれます。[組織] パネルには、組織の名前、説明、ウェブサイト情報が表示されます。組織の結果は、[組織] パネルの結果の knowledge_graph_results フィールドで返されます。

ナレッジグラフの構成

ナレッジグラフは、内部および外部のデータソースから取得したコンテキストに基づく正確な情報で拡充されたパネルを統合することで、検索結果を向上させています。

ナレッジグラフの種類

ナレッジグラフには次の 2 種類があります。

  • Google Cloud ナレッジグラフ: 外部データソースを組み込むことで検索結果を拡張します。これにより、検索結果の範囲が広がり、追加の分析情報によって関連性が向上します。 Google Cloud ナレッジグラフは、ロケーションが [グローバル] に設定されているアプリでのみ使用できます。

  • 非公開ナレッジグラフ: 組織の内部データを利用して、拡充された検索結果を生成します。関係、ロール、役職などの独自のナレッジを組み込むことで関連性が向上し、コンテキストが正確なクエリ アノテーションが提供されます。

ナレッジグラフの構成を変更する

ナレッジグラフの構成は、すべての Gemini Enterprise アプリで有効になっています。変更を行う前に、次のような検索結果への影響を確認してください。

構成 有効 無効
Google Cloud ナレッジグラフ 外部データで検索を拡張します。 検索対象を内部データに限定します。
非公開ナレッジグラフ 内部データで検索を強化します。 内部派生データを削除します。

ナレッジグラフの構成を変更するには、ナレッジグラフの構成を管理するをご覧ください。

非公開ナレッジグラフの構造とマッピング

非公開ナレッジグラフでは、プロパティ グラフのデータモデルが使用されます。これは、エンタープライズ ユースケース向けに設計されており、特定のタイプのエンティティと関係をサポートしています。サポートされているコネクタを使用してインポートしたドキュメントからデータを取得できます。非公開ナレッジグラフは、内部ルールを使用して次の処理を行います。

  1. 元のデータストア スキーマのデータをエンティティ プロパティにマッピングします。
  2. 識別子をリンクしてエンティティ間の関係を作成します。

ナレッジグラフ エンジンは、サポートされているコネクタで取得したすべてのドキュメントにこれらの内部ルールを適用してグラフを構築します。

ナレッジグラフのエンティティ タイプと関係

ナレッジグラフのエンティティ タイプ ナレッジグラフの関係タイプ サポートされているコネクタ
ユーザー 上司 Workspace ソース → ユーザー検索
間接的な部下 カスタム コネクタを使用しているユーザー

データソース スキーマからエンティティ プロパティへのマッピング

ソース ドキュメントのフィールド メモ
name.familyNamename.givenNamename.displayName givenNamefamilyName の連結。空の場合は、displayName を使用します。
personId ユーザーを一意に識別するために使用されます。
employeeId -
employmentStatus -
organizations[0].jobTitle 組織(配列)の最初の要素の役職。
websites[0].value ウェブサイト(配列)の最初の値。
topCoworkers -

ナレッジグラフのライフサイクル

エンジンで使用するナレッジグラフは、有効化、更新、管理の過程で複数の状態に変化します。次の状態を理解すると、想定される事柄と、実行できるアクションを把握できます。

  • unspecified

    エンジンでナレッジグラフが有効になっていないか、初期化が保留になっています。有効にするには、knowledge_graph_config.enable_private_knowledge_graph 設定を true に構成する必要があります。

  • initialization

    初期のナレッジグラフの構築が実行されています。この状態の間、ナレッジグラフは処理に使用できません。

    initialization 状態の場合:

    • ナレッジグラフを有効または無効にすることはできません。
    • エンジンを削除できません。
    • ナレッジグラフでサポートされているデータストアのリンクまたはリンク解除による変更は、すぐにはグラフに反映されません。詳細については、ナレッジグラフでサポートされているデータソースをご覧ください。
  • active

    ナレッジグラフは安定しており、アクティブにサービスを提供しています。これは、機能しているナレッジグラフの最適な状態です。

  • batch_update

    ナレッジグラフは、ソースデータの最近の変更を反映するために更新されています。ナレッジグラフでサポートされているデータソースの変更、またはナレッジグラフとサポートされているデータソース間の定期的な同期により、このアクションがトリガーされます。ナレッジグラフはアクティブなままですが、更新がまだ進行中のため、変更されたソースデータと同期されていない可能性があります。

    batch_update 状態の場合:

    • ナレッジグラフを有効または無効にすることはできません。
    • エンジンを削除できません。
    • ナレッジグラフでサポートされているデータストアのリンクまたはリンク解除による変更は、グラフへの反映が遅れることがあります。詳細については、ナレッジグラフでサポートされているデータソースをご覧ください。
  • deleting

    エンジンでナレッジグラフが無効になっており、削除されています。ナレッジグラフは処理に使用できません。

    deleting 状態の場合:

    • ナレッジグラフを有効または無効にすることはできません。
    • エンジンを削除できません。

ナレッジグラフの構成を管理する

構成は、コンソールまたは API を使用して管理できます。

始める前に、次のことを行います。

  1. Gemini Enterprise アプリを作成している必要があります。
  2. ナレッジグラフの構成を変更するを確認して、構成の変更が既存のアプリに与える影響を確認します。

コンソールでナレッジグラフの構成を更新する手順は次のとおりです。

コンソール

Google Cloud コンソールを使用してナレッジグラフの構成を管理する手順は次のとおりです。

  1. Google Cloud コンソールで、[Gemini Enterprise] ページに移動します。

    Gemini Enterprise

  2. [アプリ] ページで、ナレッジグラフの構成を更新するアプリをクリックします。

  3. [構成] > [ナレッジグラフ] タブに移動します。

  4. ニーズに応じて、[Google Cloud ナレッジグラフ] または [非公開ナレッジグラフ] を切り替えます。

  5. プロンプトや警告を確認したら、[保存] ボタンをクリックします。

ナレッジグラフを有効または無効にすると、次のような影響があります。

  1. Google Cloud ナレッジグラフ:

    • Google Cloud ナレッジグラフを有効にすると、外部ソースの拡充されたデータへのアクセス権が付与され、検索コンテキストが広がります。
    • 無効にすると、検索結果が内部データに限定され、外部コンテキストへのアクセス権が削除されます。
  2. 非公開ナレッジグラフ:

    • 非公開ナレッジグラフを有効にすると、内部派生データが再生成され、クエリ アノテーションは最大 1 日後に返されます。
    • 無効にすると、内部派生データが削除され、クエリ アノテーションが削除されるため、検索の精度と充実度が低下します。

API

API を使用してナレッジグラフの設定を変更できます。

  {
    "engine": {
      "name": "projects/<project_id>/locations/<location>/collections/<collection_id>/engines/<engine_id>",
      "knowledge_graph_config": {
        "enable_cloud_knowledge_graph": true,
        "enable_private_knowledge_graph": true
      }
    },
    "update_mask": {
      "paths": "knowledge_graph_config"
    }
  }

検索結果にナレッジパネルを表示する

ナレッジグラフで強化された検索結果が検索アプリケーションにどのように表示されるかを確認できます。パネルベースの検索インターフェースの場合、ナレッジグラフ パネルは、通常の検索結果とともに拡充された情報ボックスとして表示されます。名前、説明、画像、関係などの関連エンティティの詳細を統合し、より有益でコンテキストの関連性が高い検索エクスペリエンスを提供します。これらの上位表示された結果により、クエリに関連する重要な分析情報をすばやく確認できます。

次の JSON の例は、API レスポンスで [ユーザー] パネルがどのように表示されるかを示しています。


      one_box_results: [
        {
          one_box_type: PEOPLE
          search_results: [
            {
              document: {
                name: "projects/<pii data>/locations/global/collections/default_collection/dataStores/people-v17-df-sprint_1731449540556/branches/0/documents/<name>"
                derived_struct_data: {
                  fields: [
                    {
                      key: "management_chain"
                      value: {
                        list_value: {
                          values: [
                            {
                              struct_value: {
                                fields: [
                                  {
                                    key: "person_id"
                                    value: {

                                      string_value: "<persons name>"
                                    }
                                  },
                                  {
                                    key: "job_title"
                                    value: {
                                      string_value: "Account Executive"
                                    }
                                  },
                                  {
                                    key: "name"
                                    value: {
                                      string_value: "<persons name>"
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              struct_value: {
                                fields: [
                                  {
                                    key: "name"
                                    value: {
                                      string_value: "<persons name>"
                                    }
                                  },
                                  {
                                    key: "job_title"
                                    value: {

                                      string_value: "Account Executive"
                                    }
                                  },
                                  {
                                    key: "person_id"
                                    value: {

                                      string_value: "<persons name>"
                                    }
                                  }
                                ]
                              }
                            }

                          ]
                        }
                      }
                    },
                    {

                      key: "teammates_with_same_manager"
                      value: {

                        list_value: {

                          values: [
                            {

                              struct_value: {

                                fields: [
                                  {

                                    key: "person_id"
                                    value: {

                                      string_value: "<persons name>"
                                    }
                                  },
                                  {

                                    key: "job_title"
                                    value: {

                                      string_value: "Account Executive"
                                    }
                                  },
                                  {

                                    key: "name"
                                    value: {

                                      string_value: "<persons name>"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    },
                    {
                      key: "direct_reports"
                      value: {
                        list_value: {
                          values: [
                            {
                              struct_value: {
                                fields: [
                                  {
                                    key: "job_title"
                                    value: {
                                      string_value: "Account Strategist, Lead Generation"
                                    }
                                  },
                                  {
                                    key: "name"
                                    value: {
                                      string_value: "<persons name>"
                                    }
                                  },
                                  {
                                    key: "person_id"
                                    value: {
                                      string_value: "<persons name>"
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              struct_value: {
                                fields: [
                                  {
                                    key: "person_id"
                                    value: {
                                      string_value: "<persons name>"
                                    }
                                  },
                                  {
                                    key: "name"
                                    value: {
                                      string_value: "<persons name>"
                                    }
                                  },
                                  {
                                    key: "job_title"
                                    value: {

                                      string_value: "Account Strategist, Mid-Market Sales, Google Customer Solutions"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                }
              }
            }
          ]
        }
      ]

次の JSON の例は、API レスポンスで [組織] パネルがどのように表示されるかを示しています。

      {
        one_box_type: ORGANIZATION
        knowledge_graph_results: [
          {
            knowledge_graph_source_type: CLOUD_KG
            context: {
              struct_value: {
                fields: [
                  {
                    key: "@vocab"
                    value: {
                      string_value: "http://schema.org/"
                    }
                  }
                ]
              }
            }
            type: {
              string_value: "ItemList"
            }
            item_list_element: {
              values: [
                {
                  struct_value: {
                    fields: [
                      {
                        key: "result"
                        value: {
                          struct_value: {
                            fields: [
                              {
                                key: "@id"
                                value: {
                                  string_value: "c-025prnpgp"
                                }
                              },
                              {
                                key: "identifier"
                                value: {
                                  list_value: {
                                    values: [
                                      {
                                        struct_value: {
                                          fields: [
                                            {
                                              key: "name"
                                              value: {
                                                string_value: "googleKgMID"
                                              }
                                            },
                                            {
                                              key: "value"
                                              value: {
                                                string_value: "/m/0k8z"
                                              }
                                            },
                                            {
                                              key: "@type"
                                              value: {
                                                string_value: "PropertyValue"
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        struct_value: {
                                          fields: [
                                            {
                                              key: "value"
                                              value: {

                                                string_value: "Q312"
                                              }
                                            },
                                            {
                                              key: "@type"
                                              value: {
                                                string_value: "PropertyValue"
                                              }
                                            },
                                            {
                                              key: "name"
                                              value: {

                                                string_value: "wikidataQID"
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                }
                              },
                              {
                                key: "@type"
                                value: {
                                  list_value: {
                                    values: [
                                      {
                                        string_value: "Corporation"
                                      },
                                      {
                                        string_value: "Thing"
                                      },
                                      {
                                        string_value: "Organization"
                                      }
                                    ]
                                  }
                                }
                              },
                              {
                                key: "name"
                                value: {
                                  string_value: "Apple"
                                }
                              },
                              {
                                key: "detailedDescription"
                                value: {
                                  struct_value: {
                                    fields: [
                                      {
                                        key: "url"
                                        value: {
                                          string_value: "https://en.wikipedia.org/wiki/Apple_Inc."
                                        }
                                      },
                                      {
                                        key: "articleBody"
                                        value: {
                                          string_value: "Apple Inc. is an American multinational corporation and technology company headquartered and incorporated in Cupertino, California, in Silicon Valley. It is best known for its consumer electronics, software, and services. "
                                        }
                                      },
                                      {
                                        key: "license"
                                        value: {

                                          string_value: "https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License"
                                        }
                                      }
                                    ]
                                  }
                                }
                              },
                              {
                                key: "description"
                                value: {
                                  string_value: "Technology company"
                                }
                              },
                              {
                                key: "image"
                                value: {
                                  struct_value: {
                                    fields: [
                                      {
                                        key: "contentUrl"
                                        value: {
                                          string_value: "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTMHrvLPmr_8yVjoTYsyxhRGtPMcA90bcJl9_RehtJU0tr64KNR"
                                        }
                                      },
                                      {
                                        key: "url"
                                        value: {

                                          string_value: "https://commons.wikimedia.org/wiki/File:Apple_logo_black.svg"
                                        }
                                      }
                                    ]
                                  }
                                }
                              },
                              {
                                key: "url"
                                value: {

                                  string_value: "http://www.apple.com/"
                                }
                              }
                            ]
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        ]
      }

次のステップ

カスタム エンベディングを使用する