Sqlsure: AI生成SQLのための決定論的なセマンティックチェック
Sqlsure: AI生成SQLのための決定論的なセマンティックチェック
Sqlsureはクエリのセマンティクスを検証することで、サイレントなSQLエラーを防ぎます
Sqlsureは、構文的には正しくエラーなく実行されるものの、数学的に誤った結果を返す「サイレントな」SQLエラーを検出するために設計された、決定論的なセマンティック・インスペクターです。AIが生成したSQLにおける一般的な失敗、例えば結合(fan-out)による収益の二重計上や、平均値のような非加算的な指標の合計といった問題をターゲットにしています。
従来のリンターやLLMベースのレビューとは異なり、Sqlsureは決定論的なエンジンとして動作します。宣言されたセマンティック・モデルに対する辞書ルックアップを使用するため、ネットワーク呼び出しやデータベースへのアクセスを必要とせず、約0.1 msで判定を提供します。
コア・セマンティック・ルールとエラー検出
Sqlsureは、定義済みのルールセットに従ってSQLを評価し、構造的およびセマンティック的なリスクを特定します。エンジンが特定の操作を検証できない場合、クエリが安全であると仮定するのではなく、「検証不能(can't verify)」と報告します。
致命的なエラー
- FANOUT: 1対多の結合後に加算可能な指標を合計またはカウントすることで、通常二重計上につながる操作を検出します。
- CHASM: 結果セットを乗算させ、エラーを増大させる複数のfan-out結合を特定します。
- ADDITIVITY: 率や平均値などの非加算的な指標の合計をキャッチします。
- SEMI_ADDITIVE: スナップショット次元にわたって残高や国勢調査データが合計されるのを検出します。
- JOIN_KEY: セマンティック・モデルで宣言されていない関係性に一致しない列での結合をフラグ立てします。
- CROSS_JOIN: 述語(predicate)なしで行われる結合をフラグ立てします。
警告とポリシー違反
- WEIGHTED_AVG: fan-out結合によって平均値がサイレントに再重み付けされる場合に警告します。
- UNDECLARED_JOIN: 宣言されていない関係性が使用されている結合(検証不能)を警告します。
- SENSITIVE_COLUMN: クエリの出力結果にPHI/PII(個人健康情報/個人識別情報)の列が含まれていることをフラグ立てするポリシーチェックです。
統合と実装パターン
Sqlsureは、主に以下の3つのエントリーポイントでデータパイプラインに統合できます:
- CI/CD Gates: CLIツールとして使用し、クエリがセマンティック的に誤っていることが判明した場合にプルリクエストをブロックできます。
- MCP Server: Model Context Protocol (MCP) サーバーとして、AIエージェントがクエリを実行する前に検査を通過できるようにし、「下書き $\rightarrow$ チェック $\rightarrow$ 修正 $\rightarrow$ 実行」のループを可能にします。
- Library Integration:
check()関数をtext-to-SQLフレームワーク(VannaやWrenAIなど)に直接埋め込み、セマンティック・ゲートまたはNL2SQL出力の評価指標として機能させることができます。
セマンティック・モデルのソース
Sqlsureは、設定のために新しい言語を必要としません。既存のメタデータ・ソースからルールブックを生成します:
- dbt:
manifest.jsonまたはschema.ymlファイルを取り込み、dbtのuniqueテストを粒度(grain)の定義に、relationshipsテストを結合のカーディナリティに変換します。 - Live Databases:
sqlsure.introspectモジュールは、SQLite PRAGMAsまたはPostgreSQLおよびMySQL用のinformation_schemaを使用して、データベース・カタログからモデルを構築できます。 - Semantic Layers: OSIおよびWrenAI MDL用のローダーが含まれています。
- Custom JSON: ユーザーはJSON仕様を通じて独自のセマンティック・モデルを定義できます。
信頼性とセキュリティの特性
Sqlsureは、高セキュリティ環境向けに設計されており、以下の特性を備えています:
- Deterministic: 同じSQLとルールブックを使用すれば、常に同じ結果が得られます。
- Offline and Private: ツールは完全にオフラインで動作し、ネットワーク呼び出しはゼロです。SQLクエリはローカルマシンから離れることはありません。
- No Data Access: Sqlsureはクエリのテキスト自体を解析し、実際のデータベース・データには決して接続しません。
- No Telemetry: ツールはユーザーからデータを収集しません。
パフォーマンスと検証
BIRDおよびSpider text-to-SQLベンチマークの監査において、Sqlsureは2,568件の専門家が作成したクエリに対して、誤検知ゼロで45件のフラグを特定しました。これには、fan-outバグによって8倍の誤差が生じていたBIRD dev gold answerの特定や、その後にアップストリームで報告されたスキーマの欠陥の特定が含まれます。