8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gemini Enterpriseのカスタムコネクタの正体とはいかに!

さあカスタムコネクタを使うぞ!と思って、Google Cloudコンソールを開きました。さて、どこで作るんだろう?
Vertex AIのページ?Cloud Runのページ?...あれ?見つからない。

公式ドキュメントを読むと、Data Store作って、コード書いて...という手順が並んでます。でも「カスタムコネクタを作成する」というステップが、見つけられない...。

ということで、この記事では、カスタムコネクタの正体を分解しながら見ていきます!

Gemini Enterprise カスタムコネクタ公式
https://docs.cloud.google.com/gemini/enterprise/docs/custom-connector

カスタムコネクタの目的

さて、ずばり。
カスタムコネクタは、外部データソースをGemini Enterpriseに繋ぐためのものです。
ひとことで、言ってしまえばこれだけシンプルですね。

で、す、が!これがめちゃくちゃ便利で!
社内の色々なツールのデータを、一箇所でまとめて検索できるようになるんです。
例えば、Backlogの課題、docbaseのドキュメント、社内Wikiの情報...今まで別々に探してたデータを、Gemini Enterpriseで横断検索できるようになります。一つの検索窓で全部見つかるって、かなり楽ですよね。

当然、横断検索は、Gemini Enterpriseの強みですよね。
その上で、重要なのが、Gemini Enterpriseのデータソースとして開発者が自由にコードで実装できるのは、今のところカスタムコネクタだけなんです!

Gemini Enterpriseには標準コネクタもあります。Confluence、Jira、Box、Microsoft 365等ですね。でも、全てのSaaSが標準対応してるわけじゃない。対応してないものは自分で繋ぐしかありません。
そこで、カスタムコネクタ!

私は試しに、Backlogを繋いでみたんですが、
「私が担当している課題を教えて」ってGemini Enterpriseに聞くと、Backlogのデータから回答が返ってきました。感動しました。

スクリーンショット 2026-01-01 20.09.03.png

色々、見せられないよ!な情報ですが、上記のように回答してくれます。
雰囲気だけもお楽しみください...!

じゃあ、早速、カスタムコネクタを分解して中身を見ていきましょう!

カスタムコネクタを分解する

全体像

カスタムコネクタを理解するために、まず全体像を見てみましょう。

外部データソースのデータが、Gemini Enterpriseで検索できるようになるまで。
大きくこんな仕組みで動きます。

  1. 外部データソースからデータを取得する
  2. 取得したデータを、Data Storeに格納できる形式に変換する
  3. 変換したデータを、Data Storeに保存する
  4. Gemini Enterpriseが、Data Storeのデータを検索対象にする

この1から4までの仕組み全体が、「カスタムコネクタ」ですね!

ステップ1から3は、自分で実装します。ステップ4では、Gemini EnterpriseとData Storeの接続設定することで、あとは、内部でよしなにやってくれます。
これで、Gemini Enterpriseから検索対象として認識してくれます。便利。

では、この仕組みを実現するには何が必要なんでしょうか?

2つの要素

この仕組みを、2つの要素に分けて説明していきます。

Gemini_Generated_Image_gdoh4ngdoh4ngdoh.png

① フロー:データを動かす処理

外部データをGemini Enterpriseで検索できるようにするには、Data Storeに入れる必要があります。でも、どうやって?取得して、変換して、保存する。この処理がフロー。自分でコードを書きます。

② コンポーネント:データを置く場所

変換したデータを、どこに置くのか。それがData Storeです。Gemini Enterpriseが検索する対象のデータを保管する場所ですね。これがコンポーネント。Google Cloudリソースとして作成します。

フローとコンポーネント。この2つで、カスタムコネクタの正体に迫っていきます!

① フロー:データを動かす処理

フローは、外部データをData Storeに運ぶ役割を担います。

具体的には3つのステップに分かれます。Fetch、Transform、Sync。それぞれ見ていきましょう!

Gemini_Generated_Image_2zu9y42zu9y42zu9.png

Fetch(取得)

外部データソースからデータを取得します。API、データベース、ファイルシステム...コードで接続できるものなら、基本何でもOKです。

ということで、認証方法、接続方法、データ形式。それぞれの外部データソースに合わせて、自分でコードを書いて実装する必要があります。

Transform(変換)

取得したデータを、Data Storeに格納できる形式に変換します。

変換では、大きく2つのことをやります。

1つ目、データ構造の変換です。外部データソースのデータを、Discovery Engine Document形式に変換します。例えばBacklogの課題なら、課題IDやタイトル、説明などを、Document形式に詰めていきます。

2つ目、アクセス制御の設定です。ACL(アクセス制御)の情報を付与します。誰がこのドキュメントを検索できるのか。ドキュメントごとに、メールアドレスを使ってユーザーやグループの情報を設定します(Pure ACLs方式)。

Sync(同期)

変換したデータを、Data Storeに保存します。

TransformステップでDiscovery Engine Document形式に変換したデータを、実際にData Storeへ送り込む処理ですね。

さらに、定期的に実行する仕組みも必要ですよね。外部データソースのデータって日々更新されますもんね。ということで、これに追従するために、定期的にFetch → Transform → Syncを実行が必要になりますね。そのため、例えばCloud Run jobs等を使って実装して、定期実行すると良さそうですね。

フローは、全部自分で実装します。その分、自由度が高いんです!

② コンポーネント:データを置く場所

次に、コンポーネント。ここではGoogle Cloudリソースとして作成するものを指しています。

Gemini_Generated_Image_n6z922n6z922n6z9.png

Data Store(必須)

Data Storeは、データの保管場所です。Gemini Enterpriseが検索する対象のデータを、ここに置きます。カスタムコネクタには必ず必要なリソースです!

Gemini Enterpriseは、検索するたびに外部APIを呼びません。データを事前に取り込んでおいて、そこから検索するんです。これがData Storeの役割なんですね。

これ、単なるエージェント(Agent Engine等)のfunction callingとは違いますね!
もちろん、実装の方法にもよりますが、function callingは、検索のたびに外部APIを呼びます。リアルタイムでデータを取得することが多いですよね。

一方、カスタムコネクタは、Data Storeにデータを溜めておきます。だから、APIを毎回叩かない!レスポンスが速いし、外部APIの負荷も減ります。けっこう大事な違いですよね!

Identity Store(オプション)

もう一つ、Identity Storeというコンポーネントもあります。これはオプションなので、必要に応じて使います!

Identity Storeは、アクセス制御のもう一つの方式であるIdentity mappingで必要になります。外部IDシステムを使う場合、外部IDグループとIDPユーザーをマッピングする役割を担います!

ちなみに、Transformで説明したのは、メールアドレスを直接使う方式(Pure ACLs)。この場合は、Identity Storeは不要です。

まとめ

ここまで、カスタムコネクタを2つの要素に分けて見てきました。

フロー(Fetch/Transform/Sync)
データを取得して、変換して、保存する処理。自分でコードを書きます。

コンポーネント(Data Store、Identity Store)
データを保管する場所。Google Cloudリソースとして作成します。

さて、ここでこのブログの主題「カスタムコネクタの正体」に戻りましょう。

ここまで「カスタムコネクタ」の詳細を見てきましたが、では改めて、「カスタムコネクタ」というGoogle Cloudリソースは?

そう、ないですよね!どこでも作ってないんです!

ということで、カスタムコネクタの正体は、実装パターンの総称。
Data Store(リソース)+ フロー(コード)で構成されているんですね。

さて、最後に実際のコードで確認してみましょう。

実例で確認

カスタムコネクタの具体的なコード例で見てみましょう!

# 1. Data Store作成
data_store = discoveryengine.DataStore(
    display_name="my_data_store",
    industry_vertical=discoveryengine.IndustryVertical.GENERIC
)
# 2. Fetch: 外部データソースからデータ取得
data = requests.get(f"{DATA_SOURCE_URL}/api/endpoint").json()

ここで、例えばBacklogやその他の外部データソースからデータを取得します。

# 3. Transform: Discovery Engine形式に変換
documents = [
    discoveryengine.Document(
        id=str(item["id"]),
        json_data=json.dumps(item),
		acl_info=discoveryengine.Document.AclInfo(
			readers=[{
				"principals": [
					{"user_id": "xxx@xxx.com"}
				]
			}]
		),
    ) for item in data
]
# 4. Sync: Data Storeに取り込み
request = discoveryengine.ImportDocumentsRequest(
	parent=parent,
	inline_source=discoveryengine.ImportDocumentsRequest.InlineSource(
		documents=documents,
	),
)

client.import_documents(request=request)

カスタムコネクタは、実装パターンの総称だったということがわかりましたね!
このコード例を見ても、「カスタムコネクタ」というリソースを作成する処理は、どこにもありませんよね。

さいごに

カスタムコネクタの正体、明らかになりましたね!?

外部データソースをGemini Enterpriseに繋ぐための、実装パターンの総称でした。
Data Store(リソース)+ フロー(コード)で構成されていて、
「カスタムコネクタ」という単体のリソース、Google Cloudコンソールには存在しません。

ですが、それがいいんですよね!フローとData Storeを組み合わせて、自分で作り上げる楽しさがありまよね!

ぜひ、Gemini Enterpriseに自分の好きなデータソースを繋いで、自由自在な横断検索を楽しんでください!

参考情報

Gemini Enterprise カスタムコネクタ公式
https://docs.cloud.google.com/gemini/enterprise/docs/custom-connector

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?