Slide 1

Slide 1 text

ナレッジベースはどのように SQL を生成するのか ~Knowledge Bases supports structed data retrieval~ 宇宙最速のBedrock Recap LT会 December 10th, 2024 小杉 隼人 | Hayato Kosugi

Slide 2

Slide 2 text

About Me • Cloud Engineer @ Saison Technology • AWS Ambassador • AWS Community Builder • 2019 - 2024 Japan AWS Top Engineer • 13x AWS Certified 2 @hayaok3 @hayao_k

Slide 3

Slide 3 text

3 NL2SQL の精度向上のコツ

Slide 4

Slide 4 text

4 どんな機能? • 自然言語から SQL を生成し、データベースからデータを取得する機能 • クエリエンジンとして利用できるのは現段階では Amazon Redshift のみ • Glue Data Catalog との統合により SageMaker Lakehouse 経由でのデータアクセスもサポート • 料金は 1,000 クエリあたり $2 かかるが、専用のベクターストアは不要 Users Amazon Bedrock SQL 生成 & 実行 応答 Amazon Redshift “11月の総売上高は?” SELECT customer_id, SUM(order_total) AS total_revenue FROM customer_orders WHERE order_date BETWEEN '2024-11-01' AND '2024-11-31’ GROUP BY customer_id ORDER BY total_revenue DESC; “11月の総売上高は XXX です”

Slide 5

Slide 5 text

5 設定手順はそのださんの記事をみてね! https://zenn.dev/fusic/articles/github-zenn-linkage-20241206-1

Slide 6

Slide 6 text

6 何が嬉しいの? 社内情報を検索 したいビジネスユーザー ECサイト 利用者 “L サイズの在庫はありますか?” “商品の配送ステータスはどうなっていますか?” “部署ごとの有給休暇の平均取得日数を教えて” “AWS の資格保有者数を部門別に教えて” ・ 自然言語の問合せをもとにデータからインサイトを得られる ・ SQL や BI の知識の障壁を取り払うことができる ・ リアルタイム性が高いデータはドキュメントの セマンティック検索で情報取得することは難しい ・ この種のデータは構造化されたデータとして DB に保存されている

Slide 7

Slide 7 text

• LLM は 構文的 に正しい SQL を生成することは得意 • 実際のデータベース環境は千差万別 • データベースやテーブルのスキーマ情報 • 値がコード化されて登録されている (Japan → JP) • 社内独自用語など癖の強いワードが使われている etc… • 環境のメタデータが無いと実行可能な SQL は生成できない 7 LLM による SQL 生成の課題 SELECT SUM(sales) AS total_sales FROM customers WHERE country = 'Japan'; SELECT SUM(sales) AS total_sales FROM tbl_cust_sales WHERE country = 'JP'; LLM が生成する SQL 実際に必要な SQL

Slide 8

Slide 8 text

• 社員が自由にデータ活用できる環境として Data Driven Platform (DDP) を提供 • DDP に自然言語で問い合わせることにより SQL や BI の知識の障壁を取り払う ChatDDP (JAWS-UG東京 2023 〜Bedrock Night〜より) 8 Azure OpenAI Service 顧客管理 購買管理 経費管理 案件管理 会計 社員マスタ データ連携 Data Driven Platform ( Snowflake ) Users ChatDDP ( LangChain & Streamlit ) 部署ごとの有給休暇の 平均取得日数を教えて Vector DB ( Faiss ) テーブル定義およびメタデータを ベクトル化して格納 SQL の生成 回答の生成 SQL の実行 自社データ

Slide 9

Slide 9 text

• データベースのメタデータを取得 • スキーマを変更するたびに、変更の同期が必要 • SQL クエリの実行履歴を取得 • 追加のコンテキスト情報をユーザーが設定可能 • テーブルまたは列名の説明 • SQL 生成に含める/除外するテーブル名または列名の指定 • キュレーションされたクエリ • サンプルの質問とそれに対する SQL の例を事前定義できる 9 ナレッジベースの精度向上アプローチ

Slide 10

Slide 10 text

10 SQL 生成の精度向上のコツは他にも Generating value from enterprise data: Best practices for Text2SQL and generative AI https://aws.amazon.com/jp/blogs/aws/new-amazon-bedrock-capabilities-enhance-data-processing-and-retrieval/

Slide 11

Slide 11 text

• SQL の生成のみを行うことができる新しい API • 構造化データストアのナレッジベースでのみ利用可能 • ユーザーに生成された SQL を表示し、実行可否を確認するといった実装にも使えそう 11 GenerateQuery API RetrieveAndGenerate Retrieve GenerateQuery

Slide 12

Slide 12 text

References 12 • New Amazon Bedrock capabilities enhance data processing and retrieval • https://aws.amazon.com/blogs/aws/new-amazon-bedrock-capabilities-enhance-data- processing-and-retrieval/ • Build a knowledge base by connecting to a structured data store • https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-build-structured.html • Unlocking power of structured data with Amazon Bedrock Knowledge Bases (AIM396) • https://www.youtube.com/watch?v=SdKfdkec7SQ • GenerateQuery API • https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent- runtime_GenerateQuery.html

Slide 13

Slide 13 text

最後に宣伝 13 • AWS re:Invent & MS Ignite のアップデートをテーマにした LT 大会を開催予定です