Slide 1

Slide 1 text

Google Cloud で利用できる RDBのベクトル検索を徹底解剖! 株式会社スリーシェイク 中楯 直希

Slide 2

Slide 2 text

\du 2 株式会社スリーシェイク Sreake事業部 業務内容 ● DBRE兼SRE見習い ○ データベースを中心にインフラ・アプリ領域もがんばってます ○ DB <- わかる ○ 機械学習 <- ちょっとわかる ○ 生成AI <- 触った 最近あったGoogle Cloudのイチオシアップデート 中楯 直希 @nnaka2992 @nnaka2992.bsky.social

Slide 3

Slide 3 text

● 対象 ○ データベースエンジニア ○ アプリケーションエンジニア ○ 生成AIで利用するベクトルデータの保存先に迷っている方 ● 伝えたいこと ○ Google Cloud のベクトル検索が行うことができる、 マネージドリレーショナルデータベースの選び方 この資料のコンセプト 3

Slide 4

Slide 4 text

この資料に記載されている内容は 2024 / 05 / 31 時点の内容です。 生成 AI やベクトル検索関連はリリースが頻繁に行われるので、 リリースノートで最新の情報を確認してください。 注意 4

Slide 5

Slide 5 text

● Google Cloud のベクトル検索をサポートするマネージド RDB ● そもそもベクトル検索とは? ● それぞれにおけるベクトル検索の特色とユースケース ● まとめ Agenda 5

Slide 6

Slide 6 text

Google Cloud のベクトル検索をサポートする マネージド RDB 01

Slide 7

Slide 7 text

Google Cloud で利用可能な RDB は全 5 種類 DB レイヤーがマネージドなサービスは全 4 種類 細分化すると 7 種類 Google Cloud のベクトル検索をサポートするマネージド RDB 7 Cloud Spanner AlloyDB BigQuery Cloud SQL PostgreSQL MySQL SQL Server PostgreSQL PostgreSQL Google SQL Google SQL ベクトルストアに どれを使えばいいかわからない!

Slide 8

Slide 8 text

そもそも全部のパターンでベクトル検索が使えるわけではない Cloud SQL for SQL Server はベクトル検索をサポートしていない Google Cloud のベクトル検索をサポートするマネージド RDB 8 Cloud Spanner AlloyDB BigQuery Cloud SQL PostgreSQL MySQL SQL Server PostgreSQL PostgreSQL Google SQL Google SQL

Slide 9

Slide 9 text

そもそもベクトル検索とは? 02

Slide 10

Slide 10 text

そもそもベクトル検索とは? 10 ベクトル検索は従来のキーによる検索ではなく、検索対象の情報と問い合わせの情報が どれぐらい似ているのかで検索する方法 ● 例 どっちに 似ているか

Slide 11

Slide 11 text

そもそもベクトル検索とは? 11 実際のアプリケーションでは次のように実装される 0. データベースにデータがベクトル検索を行いたい対象が存在する id 名前 説明 データベース

Slide 12

Slide 12 text

そもそもベクトル検索とは? 12 実際のアプリケーションでは次のように実装される 1. 目的のデータをベクトル化してデータベースに保存する id 名前 説明 データベース Vertex AI Embedding for Text id ベクトル 説明データをでベクトル化 ベクトル化したデータを保存

Slide 13

Slide 13 text

そもそもベクトル検索とは? 13 実際のアプリケーションでは次のように実装される 2. ユーザーからの問い合わせを受け取る id 名前 説明 データベース Vertex AI Embedding for Text id ベクトル Cloud Run 検索内容を入力

Slide 14

Slide 14 text

そもそもベクトル検索とは? 14 実際のアプリケーションでは次のように実装される 3. ユーザーからの問い合わせをベクトル化する id 名前 説明 データベース Vertex AI Embedding for Text id ベクトル Cloud Run 検索内容を入力 検索内容をベクトル化する

Slide 15

Slide 15 text

そもそもベクトル検索とは? 15 実際のアプリケーションでは次のように実装される 4. ベクトル化した問い合わせでデータベースを検索する id 名前 説明 データベース Vertex AI Embedding for Text id ベクトル Cloud Run 検索内容を入力 検索内容をベクトル化する データベースを検索

Slide 16

Slide 16 text

そもそもベクトル検索とは? 16 実際のアプリケーションでは次のように実装される 5. 問い合わせ内容に似た結果をユーザーに返す id 名前 説明 データベース Vertex AI Embedding for Text id ベクトル Cloud Run 検索内容を入力 検索内容をベクトル化する データベースを検索 似た結果をユーザーに返す

Slide 17

Slide 17 text

そもそもベクトル検索とは? 17 実際のアプリケーションでは次のように実装される 5. 問い合わせ内容に似た結果をユーザーに返す id 名前 説明 データベース Vertex AI Embedding for Text id ベクトル Cloud Run 検索内容を入力 検索内容をベクトル化する データベースを検索 似た結果をユーザーに返す 今回はこの部分がメイン

Slide 18

Slide 18 text

それぞれにおけるベクトル検索の特色とユースケース 03

Slide 19

Slide 19 text

それぞれにおけるベクトル検索の特色とユースケース 19 どのデータベースでベクトル検索を使うかは、データベースの特性が重要になる ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery

Slide 20

Slide 20 text

それぞれにおけるベクトル検索の特色とユースケース 20 どのデータベースでベクトル検索を使うかは、データベースの特性が重要になる ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● PostgreSQL との完全な互換性 ● pgvector 拡張機能によってベクトル検索を実装 ○ 他クラウド・オンプレミスでも利用可能 ○ 多様な計算方法をサポート ● SQL から Vertex AI を呼び出す拡張機能が GA

Slide 21

Slide 21 text

それぞれにおけるベクトル検索の特色とユースケース 21 どのデータベースでベクトル検索を使うかは、データベースの特性が重要になる ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● MySQL との完全な互換性 ○ MySQL 互換では唯一の選択肢 ● Google Cloud による独自のベクトル検索を実 装 ○ オンプレミスや AWS では利用できない Google Cloud の強み ○ Preview ステータス

Slide 22

Slide 22 text

それぞれにおけるベクトル検索の特色とユースケース 22 どのデータベースでベクトル検索を使うかは、データベースの特性が重要になる ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● PostgreSQL との互換性 ○ 他クラウド・オンプレミスでは AlloyDB Omni を利 用してセルフホストが可能 ● pgvector 拡張機能によってベクトル検索を実装 ○ 他クラウド・オンプレミスでも利用可能 ○ 多様な計算方法をサポート ● SQL から Vertex AI を呼び出す拡張機能が GA ● カラム型エンジンをサポート ○ 集計関数の実行に有利

Slide 23

Slide 23 text

それぞれにおけるベクトル検索の特色とユースケース 23 どのデータベースでベクトル検索を使うかは、データベースの特性が重要になる ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● PostgreSQL 互換インターフェイスをサポート ● Google Cloud による独自のベクトル検索を実 装 ● SQL から Vertex AI を呼び出す拡張機能が GA ● Write のスケールアウトが可能

Slide 24

Slide 24 text

それぞれにおけるベクトル検索の特色とユースケース 24 どのデータベースでベクトル検索を使うかは、データベースの特性が重要になる ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● Google Cloud による独自のベクトル検索を実 装 ● SQL から Vertex AI を呼び出す拡張機能が GA ● 大規模データの集計が得意 ● サーバメンテナンスが不要

Slide 25

Slide 25 text

それぞれにおけるベクトル検索の特色とユースケース 25 どのデータベースでベクトル検索を使うかは、データベースの特性が重要になる ※1 Query Per Record PostgreSQL Cloud SQL MySQL AlloyDB Google SQL Cloud Spanner PostgreSQL BigQuery レイテンシ ミリ秒 ミリ秒 ミリ秒 ミリ秒 ミリ秒 秒 QPR ※1 数レコード 数レコード 数レコード 数レコード 数レコード 大量レコード 互換性 pgvector互換 Google Cloud 独自実装 pgvector互換 - Google Cloud 独自実装 - サポート状態 GA プレビュー GA GA GA プレビュー Vertex AI 連携 GA 未サポート GA GA GA GA 列指向ストア 未サポート 未サポート サポート 未サポート 未サポート サポート 索引タイプ KNN, ANN ANN KNN, ANN KNN KNN KNN

Slide 26

Slide 26 text

それぞれにおけるベクトル検索の特色とユースケース 26 それぞれのデータベースにおけるベクトル検索のユースケース ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery

Slide 27

Slide 27 text

それぞれにおけるベクトル検索の特色とユースケース 27 それぞれのデータベースにおけるベクトル検索のユースケース ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● ミリ秒単位のレイテンシが求められる システム や複数の環境でホストしたい 場合に最適 ○ Google Cloud にプライマリ、AWS やオンプレミ スにレプリカを配置するなど ● エンドユーザー向けに商品説明やイベント概要 のようなデータを曖昧検索する機能を提供した い場合 ● 生成 AI を使用したアプリケーションのベクトル データを保存したい場合

Slide 28

Slide 28 text

それぞれにおけるベクトル検索の特色とユースケース 28 それぞれのデータベースにおけるベクトル検索のユースケース ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● MySQL を利用する既存のアプリケーションで ベクトル検索を利用したい場合 ○ ベクトル検索を目的に新規採用する場合は他の 選択肢に劣る ● エンドユーザー向けに商品説明やイベント概要 のような文章を曖昧検索する機能を提供したい 場合

Slide 29

Slide 29 text

それぞれにおけるベクトル検索の特色とユースケース 29 それぞれのデータベースにおけるベクトル検索のユースケース ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● Cloud SQL for PostgreSQL ではパフォーマン スが足りない場合 ● ベクトル検索だけでなく、分析・トランザクション 処理すべてを実行したい場合

Slide 30

Slide 30 text

それぞれにおけるベクトル検索の特色とユースケース 30 それぞれのデータベースにおけるベクトル検索のユースケース ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● 大量の書き込みが想定されるワークロードの データに対してリアルタイムでベクトル検索をし たい場合

Slide 31

Slide 31 text

それぞれにおけるベクトル検索の特色とユースケース 31 それぞれのデータベースにおけるベクトル検索のユースケース ● CloudSQL for PostgreSQL ● CloudSQL for MySQL ● AlloyDB ● Cloud Spanner ● BigQuery ● レイテンシが気にならないのであれば データ ベースメンテナンスのコストがないので 最適 ● Google Cloud 上の様々なデータストアに統合 したインターフェースでベクトル検索を利用した い場合 ● 画像や動画に対するベクトル検索をしたい場合 ○ BigLake を利用して GCS と統合できるため ● ログを解析したい場合 ● テーブル同士を曖昧条件で結合して集計したい 場合

Slide 32

Slide 32 text

まとめ 04

Slide 33

Slide 33 text

まとめ 33 ● Google Cloud では RDB でベクトル検索を利用する場合に多様な選択肢がある。 ● ベクトル検索を利用すると曖昧・類似検索が簡単に実装できる ● Google Cloud の RDB でベクトル検索を利用する場合、 レイテンシが短く高機能な Cloud SQL for PostgreSQL やメンテナンスが簡単でインターフェースを 統合出来る BigQuery を中心にワークロードの特性に応じてその他のデータベースを 選択するとよい

Slide 34

Slide 34 text

34 参考資料 34 ● Work with vector embeddings | Cloud SQL for MySQL | Google Cloud ○ https://cloud.google.com/sql/docs/mysql/work-with-vectors ● Work with vector embeddings | Cloud SQL for PostgreSQL | Google Cloud ○ https://cloud.google.com/sql/docs/postgres/work-with-vectors ● Work with vector embeddings | AlloyDB for PostgreSQL | Google Cloud ○ https://cloud.google.com/alloydb/docs/ai/work-with-embeddings ● Perform similarity vector search in Spanner by finding the K-nearest neighbors | Google Cloud ○ https://cloud.google.com/spanner/docs/find-k-nearest-neighbors ● Introduction to vector search | BigQuery | Google Cloud ○ https://cloud.google.com/bigquery/docs/vector-search-intro ● Manage vector indexes | BigQuery | Google Cloud ○ https://cloud.google.com/bigquery/docs/vector-index

Slide 35

Slide 35 text

35 参考資料 35 ● BigQuery のベクトル検索のご紹介 | Google Cloud 公式ブログ ○ https://cloud.google.com/blog/ja/products/data-analytics/introducing-new-vector-search-capabilities-in-bigquery ● Find anything blazingly fast with Google's vector search technology | Google Cloud Blog ○ https://cloud.google.com/blog/topics/developers-practitioners/find-anything-blazingly-fast-googles-vector-search-technol ogy ● pgvector/pgvector: Open-source vector similarity search for Postgres ○ https://github.com/pgvector/pgvector ● ベクトルデータの容量を 96%削減するBinary Embedding ○ https://zenn.dev/knowledgesense/articles/346183afdf750e