0
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?

【GCP】BigQueryでEmbeddingモデルを使ってみて困ったことメモ【Vertex AI】

Posted at

こんにちは。
今回はテキストからベクトルへの変換を目的として、BigQuery上でEmbeddingモデルを使う話をします。

設定自体は以下の内容に従うことで設定可能だと思います。
https://cloud.google.com/bigquery/docs/generate-text-embedding?hl=ja

上記は非常にシンプルかつ分かりやすい内容ですが、具体的に処理をするとなったらちょいちょい詰まったところがあったので
本記事では上記の内容に従って設定を行った状況で、どのようなSQLを動かしたのか簡単にまとめます。
コスト面についても多少言及できれば良いかなと思います。

前提知識としてEmbeddingの説明を省きますが、以下記事などを参考にしていただくと良いかと思います。

使用したデータセットのテーブル構成

列数2のテーブルを用意しました。

  1. id
  2. content

idは識別用で、contentはEmbeddingモデルが埋め込み表現を作成する対象となるカラムです。Embeddingの対象となるカラムは必ずこの名前にする必要があります。

最終的に使ったSQL

CREATE OR REPLACE TABLE `environment.dataset.table` AS
  SELECT
    *
  FROM
    ML.GENERATE_EMBEDDING(
      MODEL `environment.dataset.model_name`,
      (SELECT * FROM `environment.dataset.table` LIMIT 10000),
      STRUCT(
        TRUE AS flatten_json_output,
        'CLUSTERING' AS task_type,
        8 AS output_dimensionality
      )
    ) 

どのモデルを使ったか

text-multilingual-embedding-002を使いました。日本語対応してるEmbeddingモデルだからです!

作った時のSQL

CREATE OR REPLACE MODE `モデルへのパス`
REMOTE WITH CONNECTION `BigQueryにVertexAIを接続した時に取得できる接続ID`
OPTIONS (ENDPOINT = `text-multilingual-embedding-002`)

詰まったポイント. ML.GENERATE_EMBEDDINGを入れる場所

詰まったポイントとしては、ML.GENERATE_EMBEDDINGFROM句移行に入れないと動かなさそうという点です。これはSQLを普段書いてないとか、BigQueryに慣れてないとかその辺の問題も大いにありそうです。

最初はselectで絞った時に、EMBEDDINGかけようかなと思っていたのですが
↓イメージ

CREATE OR REPLACE TABLE `environment.dataset.table` AS
  SELECT
    id,
    ML.GENERATE_EMBEDDING(`何かのテーブル`...

ML.GENERATE_EMBEDDINGはスカラーではなく複数のカラムを返却値として持っているため設定できないっぽいです。

返却値が複数ある: https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-embedding#output

精神的に詰まったところ: コスト面

私の中で一番怖かったのはここです。OpenAIのAPIにおけるEmbeddingが安いことは知っていたものの初めて使うサービスだとドキドキしました。
最初は下記のうち上の方だけしか知らなくて、この記事を書くにあたって下の料金表を見つけました。
見つけるのむずすぎます。

Vertex AIの料金
https://cloud.google.com/vertex-ai/pricing?hl=ja
Vertex AIの料金 for Generative AI
https://cloud.google.com/vertex-ai/generative-ai/pricing?hl=ja#embedding-models

今回は13,155,264カウントで40円くらいでした。
カウントがgoogle cloud platformにおけるトークン数に当たるようです。

仲間募集中

株式会社ホープでは、福岡で働くエンジニアを募集中です。
ぜひ、求人を見てみてください!
▼ Wantedly求人
https://www.wantedly.com/projects/1684027
▼ コーポレートサイト
https://www.zaigenkakuho.com/recruit/
「自治体を通じて人々に新たな価値を提供し、会社及び従業員の成長を追求する」
この理念の実現に向けて、今後も自治体の課題解決に取り組んでいきます。
ご応募お待ちしております!

0
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
0
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?