コンテンツに移動
データベース

エージェント アプリで 100% に近い精度の Text-to-SQL を実現

2026年1月14日
Yannis Papakonstantinou

Distinguished Engineer, Databases, Google Cloud

Reza Sherkat

Staff Software Engineer, Databases, Google Cloud

Try Gemini 3

Our most intelligent model is now available on Vertex AI and Gemini Enterprise

Try now

※この投稿は米国時間 2025 年 12 月 19 日に、Google Cloud blog に投稿されたものの抄訳です。

現在の AI 機能は、テキストと音声を使用するアプリケーションを通じて、エンタープライズ データを使用した自然言語(NL)によるやり取りを可能にする絶好の機会を提供しています。実際、エージェント アプリケーションの世界では、自然言語が急速にインタラクションの標準になりつつあります。つまり、エージェントは自然言語でデータベースに質問し、正確な回答を受け取る必要があります。Google Cloud では、この状況を受けて、AlloyDB データベースに 自然言語から SQL への変換(NL2SQL)テクノロジーを構築しました。このテクノロジーは、質問を入力として受け取り、自然言語の結果、またはその結果を取得するのに役立つ SQL クエリを返します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_JJQ4McU.max-2000x2000.png

現在プレビュー版の AlloyDB AI 自然言語 API を使用すると、デベロッパーは、エージェントまたはエンドユーザーからのデータベースのデータに関する自然言語の質問に対し、安全でビジネスとの関連性が高い、説明可能な方法で、100% に近い精度で回答するエージェント アプリケーションを構築できます。Google は、この機能をより幅広い Google Cloud データベースに提供することに注力しています。

2024 年に初めてこの API をリリースしたとき、NL2SQL の精度は 100% には及ばなかったものの、すでに業界トップクラスでした。しかし、業界トップクラスというだけでは不十分です。多くの業界では、テキストを SQL に変換する精度は 80% どころか 90% でも十分ではありません。回答の質が低いと、顧客の不満やビジネス上の意思決定の誤りなど、金銭的に測定可能なコストが発生します。エンドユーザーが求めていること(「意図」)を理解できない不動産検索アプリケーションは、関連性の低い回答を返すリスクがあります。小売商品の検索では、回答の関連性が低いと販売につながるコンバージョン率の低下につながります。つまり、Text-to-SQL 変換の精度は、ほとんどの場合、非常に高くなければなりません。

このブログでは、AlloyDB AI 自然言語 API の価値と、その回答の精度を最大化する手法について説明します。

結果の精度と関連性を 100% に近づける

テキストから SQL への変換で高い精度を実現するには、Gemini に質問を入力するだけでは不十分です。アプリを開発する際に、データベースのテーブルと列の説明などの説明的コンテキストを AlloyDB AI に提供する必要があります。このコンテキストは自動生成できます。その後、AlloyDB AI 自然言語 API が質問を受け取ると、関連する説明的コンテキストをインテリジェントに取得し、Gemini が質問とデータベース データの関連性を把握できるようにします。

それでも、多くのお客様は、ユースケースで 100% に近い(95% 以上、99% 以上など)精度を達成できるよう、説明可能で、証明可能で、ビジネスとの関連性が高い回答を求めていました。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_0eMFqRA.max-2000x2000.png

AlloyDB AI 自然言語 API の最新のプレビュー リリースでは、回答をさまざまな方法で改善する機能が提供されています。

  • ビジネスとの関連性: コンバージョンやエンドユーザーのエンゲージメントなどのビジネス指標を改善するために、回答には情報が含まれ、適切にランク付けされている必要があります。

  • 説明可能性: 結果には、エンドユーザーが理解できる言葉で、NL API が質問をどのように解釈したかを明確にする意図の説明を含める必要があります。たとえば、不動産アプリが「家族向けのデルマーの家を見せて」という質問を「近くによい学校があるデルマーの家」と解釈した場合、その解釈をエンドユーザーに説明します。

  • 検証済みの結果: 結果は、ユーザーまたはエージェントに説明された意図に沿った内容である必要があります。

  • 精度: 結果は質問の意図を正確に捉えている必要があります。

この点については、AlloyDB AI 自然言語 API を使用することで、ユースケースでの精度を段階的に向上させることができます。これは「ヒルクライミング」と呼ばれることもあります。精度が 100% に近づくにつれて、AlloyDB AI の意図の説明により、不正確な回答をした場合の影響が軽減されます。つまり、エンドユーザーやエージェントは、API が意図した質問とは少し異なる質問に回答したことを理解できます。

100% の精度に近づけるためのヒルクライミング

簡単なワークフローで AlloyDB AI の精度を反復的に向上させることができます。

まず、AlloyDB AI が提供していてすぐに使用できる NL2SQL API から始めます。自然言語の質問を SQL クエリに変換する組み込みエージェントと、そのエージェントが使用する自動生成された説明的コンテキストのおかげで、精度は(完璧ではありませんが)非常に高くなっています。

次に、コンテキストを改善することで、約 100% の精度とビジネスとの関連性を目指して、迅速にイテレーションを行うことができます。重要な点として、AlloyDB AI 自然言語 API では、コンテキストは次の 2 つの形式で提供されます。

  • テーブルと列の説明を含む説明的コンテキスト。

  • SQL テンプレートと(条件)ファセットを含む規範的コンテキスト。これにより、NL リクエストが SQL に変換される方法を制御できます。

最後に、「値インデックス」は、データベースに固有の用語(SKU や従業員名など)を明確にします。これらの用語は、基盤モデルではすぐには理解できません。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_skwhId4.max-2000x2000.png

柔軟かつ安全に 100% の精度に近づけるためのヒルクライミングは、2 種類のコンテキストと AlloyDB の値インデックスにより可能となっています。

コンテキストと値インデックスについて詳しく見ていきましょう。

1. 説明的コンテキストと規範的コンテキスト

前述のように、AlloyDB AI 自然言語 API は、説明的コンテキストと規範的コンテキストに依存して、生成する SQL コードの精度を向上させます。

説明的コンテキスト(主にテーブルと列の説明)を改善することで、SQL クエリが適切なテーブルと列を適切なロールで使用する可能性が高まります。しかし、規範的コンテキストは、より難しい問題を解決します。それは、特定のユースケースで重要な難しい質問を正確に解釈することです。たとえば、エージェント型の不動産アプリケーションでは、「<指定された都市> のよい学校の近くにある家を見せてください」といった質問に答える必要があります。この質問には次のような課題があります。

  • 「近く」とはどのくらいの距離か。

  • 「よい」学校をどのように定義するか。

  • データベースに評価が記載されている場合、良い学校の評価の基準はどこからか。

  • 結果をリストとして提示する際に、(ランキングの目的を考慮し、上位の結果のビジネス価値を確保するという観点から)学校からの距離と学校のランキングをどの程度の比重で評価するのが最適か。

これを支援するために、AlloyDB 自然言語 API ではテンプレートを提供しています。これにより、質問のタイプをパラメータ化された SQL クエリとパラメータ化された説明に関連付けることができます。これにより、AlloyDB NL API は、非常に微妙なニュアンスを含む可能性のある自然言語の質問を正確に解釈できます。そのため、テンプレートは、よくある微妙なニュアンスを含む質問に適したオプションとなります。

2 つ目の規範的コンテキストであるファセットでは、個々の SQL 条件とそれに対応する自然言語の条件を指定できます。ファセットを使用すると、テンプレートの精度に加えて、膨大な数の条件に対する検索の柔軟性を提供できます。たとえば、「良い学校の近く」は、数多くの条件の一つにすぎません。価格、「若い家族向け」、「オーシャン ビュー」など、他の要素も考えられます。「海が見える良い学校の近くの家」のように、複数の条件を組み合わせたものもあります。しかし、条件の組み合わせごとにテンプレートを用意することはできません。以前は、このような条件すべてに対応するために、考えられるすべての条件の検索フィールドを含むダッシュボードを作成しようとしたかもしれませんが、すぐに非常に扱いにくくなったでしょう。自然言語インターフェースを使用すると、ファセットを使用して、単一の検索フィールドでも、任意の数の条件をカバーできます。自然言語インターフェースの強みが発揮されるのは、まさにこのような場合です。

AlloyDB AI 自然言語 API を使用すると、説明的コンテキストと規範的コンテキストを簡単に作成できます。たとえば、パラメータ化された質問、パラメータ化された意図の説明、パラメータ化された SQL を提供するのではなく、add_template API を使用してテンプレートを追加するだけで済みます。この API では、質問の例(「デルマーの良い学校に近い家」)と、それに対応する正しい SQL を提供します。AlloyDB AI は、この質問を自動的に一般化してどの都市にも対応できるようにし、意図の説明を自動的に準備します。

2. 値インデックス

約 100% の精度を実現する 2 つ目の重要な要素は、AlloyDB AI の値インデックスです。これは、データベースに固有の、基盤モデルには知られていない用語を明確にします。自然言語の質問に含まれる固有の用語は、多くの問題を引き起こします。まず、ユーザーは単語をタイプミスします。当然、音声インターフェースでは言い間違いが多くなります。また、自然言語の質問では、固有の用語のエンティティ タイプが明示されていない場合があります。たとえば、大学の管理者が「ジョン スミスは 2025 年にどのような成績を収めましたか?」と質問したとします。このとき、ジョン スミスが教員なのか学生なのかは指定されていません。それぞれのケースで、質問に答えるには異なる SQL クエリが必要になります。値インデックスは、「ジョン スミス」がどのようなエンティティであるかを明確にするもので、AlloyDB AI によってアプリケーション用に自動的に作成できます。

構造化データ、非構造化データ、マルチモーダル データに対する自然言語検索

構造化データを検索するアプリケーションに関しては、AlloyDB AI 自然言語 API により、簡潔で高度な検索エクスペリエンスを実現できます。従来、アプリケーションは、エンドユーザーが検索を絞り込むために使用できるフィルタとして、ユーザー インターフェースに条件を表示していました。一方、NL 対応のアプリケーションでは、シンプルなチャット インターフェースを提供できます。あるいは、検索条件のあらゆる組み合わせを直接または間接的に提示する音声コマンドを受け付けて、その質問に答えることもできます。検索機能が従来のアプリの制約から解放されると、まったく新しいユーザー エクスペリエンスの可能性が広がります。

NL2SQL テクノロジーと AI 検索機能を組み合わせることで、構造化データ、非構造化データ、マルチモーダル データの組み合わせをクエリすることもできます。AlloyDB AI 自然言語 API は、ベクトル検索、テキスト検索、および AI.IF 条件などのその他の AI 検索機能を含む SQL クエリを生成できます。これにより、テキストデータとマルチモーダル データのセマンティック条件をチェックできます。たとえば、不動産アプリで「デルマーの即入居可能な住宅」について質問されたとします。これにより、real_estate.properties  テーブルの description 列のテキストが「即入居可能」に類似しているかどうかをチェックする AI.IF 関数を含む SQL クエリが生成されます。

AlloyDB AI 自然言語 API をエージェント アプリケーションに組み込む

AlloyDB AI 自然言語 API をエージェント アプリケーションに統合する準備はできましたか?AlloyDB からデータを取得する AI ツール(関数)を作成する場合は、データベース向け MCP ツールボックスをお試しください。ノーコード エージェント プログラミングには、Gemini Enterprise を使用できます。たとえば、Gemini を使用してウェブの知識とデータベースから抽出したデータに基づいて質問に回答する会話型エージェント アプリケーションを、コードを 1 行も書かずに作成できます。どちらの場合でも、皆様がどのようなものを構築されるか楽しみにしております。

-Google Cloud、データベース担当上級エンジニア、Yannis Papakonstantinou

-Google Cloud、データベース担当スタッフ ソフトウェア エンジニア、Reza Sherkat 

投稿先