AIチャットの回答精度は、データとコンテキストの組み合わせで決まります。セクション2では「質問する → 回答を確認する → コンテキストを改善する」というサイクルを体験しながら、この関係性を理解していきます。
このセクションの中では「先月の売上を集計して」という質問をサンプルとして使います。実際の業務でよく使う質問(「〇〇のレポートを作って」など)に読み替えて、ご自身の環境で試しながら進めてみてください。
掲載しているAIチャットの回答例は、説明のために作成したサンプルです。実際の回答は、お使いの環境や登録されている内容などによって変わります。文面そのものではなく、コンテキストの登録によって回答がどう変わるかに注目してお読みください。
1. コンテキストによる回答の変化
左サイドバーの AIチャット からAIチャット画面を開き、質問を送信します。
質問:
先月の売上を集計して
AIチャットは回答を生成する前に用語集などの登録を確認しますが、回答に必要な情報を判断できない場合はユーザーに質問を返します。
回答例:
いくつか確認させてください。
1. テーブルの選択
どのテーブルを使いますか?
- orders
- orders_legacy
- orders_backup
2. 集計軸の選択
集計の軸(グループ)はどうしますか?
- 合計のみ
- 日別
- 商品・カテゴリ別
- 顧客・取引先別
ご自身の環境で試した回答について、次の3点に注目してください。
- AIから確認の質問が返ってきませんでしたか?その確認内容(どのデータを使うか、どの軸で集計するかなど)は、業務上はすでに決まっていることですか?
- データソースの候補として、使ってほしくないテーブル(古いテーブルや一時テーブルなど)が挙がっていませんか?
- 確認に答えて得られた回答は、想定した定義(集計する期間や軸など)と一致していますか?
質問にコンテキストが付与されると回答はどう変わるのか
次に、業務上の前提をすべて書き添えて同じ質問をしてみます。
質問:
先月の売上を集計して。売上は orders テーブルの amount_ex_tax(税抜金額)を合計して。集計の基準日は shipped_date(出荷日)で、status が returned(返品)と cancelled(キャンセル)のレコードは除外して。
回答例:
承知しました。以下の条件で先月(2026年6月)の売上を集計します。
- 集計テーブル: orders
- 集計対象: amount_ex_tax の合計
- 集計基準日: shipped_date
- 除外条件: status が returned および cancelled の行を除外
- 集計期間: 2026年6月1日〜2026年6月30日
> SELECT
> DATE_TRUNC(shipped_date, MONTH) AS shipped_month,
> SUM(amount_ex_tax) AS total_sales_ex_tax
> FROM orders
> WHERE status NOT IN ('returned', 'cancelled')
> AND shipped_date >= '2026-06-01'
> AND shipped_date < '2026-07-01'
> GROUP BY shipped_month
> ORDER BY shipped_month
集計した結果を表示します。
| 出荷月 | 売上合計(税抜) |
|---|---|
| 2026年6月 | ¥12,345,678 |
今度は集計結果が表示されました。
データとコンテキストの関係性
2つの質問は同じ環境を使用していますが、回答は大きく異なります。2つの質問では質問に含まれるコンテキストの量が異なります。
- 1つ目の質問:コンテキストが不足 → ユーザーに質問して回答に必要な情報の確認が必要
- 2つ目の質問:コンテキストが十分 → 正しい集計結果が返る
AIチャットの回答精度はデータとコンテキストの組み合わせに依存します。AIの回答精度を上げるには適切なコンテキストが必要ですが、毎回2つ目のような質問を書くことは大きな負担になります。また、テーブルの定義を理解していないユーザーは書くことができません。
COMETAはメタデータや用語集などを整備していくことで、「先月の売上を集計して」という一言の質問でもコンテキストを補完して回答できます。ここからは、コンテキストをCOMETAに登録する機能を、順に実践していきます。
2. アセットのステータスで参照先を選別
「どのアセットを使ってよいか・使ってはいけないか」も、AIに伝えるべきコンテキストの1つです。各アセットのテーブル情報にステータスを設定することで、AIは参照するアセットを選別します。
| ステータス | AIによる参照 | 用途 |
|---|---|---|
| 認証済 | 参照対象 | 品質・信頼性を確認済みの推奨アセット |
| 未認証 | 参照対象 | 品質・信頼性を確認中のアセット |
| 非推奨 | 参照対象外 | 使用非推奨のアセット |

先ほどの質問で想定している環境では、古いテーブルであるorders_legacyとorders_backupを非推奨に、実業務で使用しているテーブルであるordersを認証済に設定します。以降、AIチャットが参照するテーブルの一覧では、非推奨のテーブルは参照先の候補から外れ、認証済のordersが優先的に参照されるようになります。
3. メタデータでアセットの役割を伝える
参照するテーブルは絞れましたが、AIが知っているのはまだ「ordersというテーブルがある」ことだけです。ordersに注文日(order_date)と出荷日(shipped_date)のような複数の日付カラムがあっても、テーブル名・カラム名の文字列だけでは、どちらを売上の集計に使うべきかAIは判断できません。テーブルやカラムに説明文(メタデータ)を登録することで、各アセットの役割というコンテキストをAIに伝えます。
メタデータを登録する
題材のordersテーブルとそのカラムには、次のようなメタデータを登録します。
| 対象 | 登録する説明 |
|---|---|
orders |
受注データのテーブル |
order_date |
注文が確定した日付 |
shipped_date |
商品を出荷した日付 |
amount |
注文金額(税込) |
amount_ex_tax |
注文金額(税抜) |
メタデータの整備は、全テーブル・全カラムを一度に登録する必要はありません。まずはテーブルの説明を登録するだけでも効果があります。その後、集計の軸となるカラムや、集計に使用する数値のカラム、略語など名前から意味が読み取りにくいカラムから順に登録を広げていきましょう。
メタデータは、手動での登録のほか、以下の方法で登録できます。
- 既存のデータ定義書やExcelがある場合:メタデータのインポート
- dbtを利用している場合:dbtメタデータ連携
- AIによる自動生成:メタデータの自動生成
同じ質問をしてみる(2回目)
質問:
先月の売上を集計して
回答例:
承知しました。売上に関連するテーブルを確認しました。
- orders(認証済)
- orders_legacy(非推奨)
- orders_backup(非推奨)
orders テーブルを直接検索します。
- order_date:注文日
- shipped_date:出荷日
- amount:税込金額
- amount_ex_tax:税抜金額
- status:注文ステータス
売上の集計にあたり、以下の点が判断できないためご確認をお願いします。
1. 集計基準日 はどのカラムを使用しますか?
- order_date(注文日)
- shipped_date(出荷日)
2. 集計する金額 はどちらを使用しますか?
- amount(税込)
- amount_ex_tax(税抜)
非推奨のテーブルにはステータスが表示され、分析の対象は認証済のordersに絞られました。また、メタデータから各カラムの役割も伝わっています。しかし、まだ以下の問題が残っています。
- 集計基準日と集計する金額についての確認がある
- 返品・キャンセルの注文の除外が考慮されていない
「売上」の集計には、集計する基準日・金額や、キャンセルは除外するのかというコンテキストがまだ伝わっていません。このような業務上の定義を登録するのが用語集です。
4. 用語集で業務の定義を教える
社内用語や集計ロジックなどの業務上の定義は、コンテキストの中核です。用語集に登録することで、AIが社内文脈を理解した回答を返せるようになります。ここでは用語集に以下の「売上」用語を登録してみます。
- 名前:売上
- 定義:商品の販売金額の合計。受注テーブル(
orders)のamount_ex_tax(税抜金額)カラムを合計(SUM)して算出する。shipped_date(出荷日)を集計基準日とし、statusがreturned(返品)とcancelled(キャンセル)のレコードは除外する。
「売上:販売から得られる収益の総額」のような概要ではなく、使用するテーブル・カラムや除外するレコードなど詳細を記載することで、AIは正しくコンテキストを理解できます。
同じ質問をしてみる(3回目)
質問:
先月の売上を集計して
回答例:
承知しました。用語集の「売上」の定義を確認しました。
- 集計テーブル: orders
- 集計対象: amount_ex_tax(税抜金額)の合計
- 集計基準日: shipped_date(出荷日)
- 除外条件: status が returned および cancelled の行を除外
- 集計期間: 2026年6月1日〜2026年6月30日
以上の条件でSQLを実行します。
> SELECT
> DATE_TRUNC(shipped_date, MONTH) AS shipped_month,
> SUM(amount_ex_tax) AS total_sales_ex_tax
> FROM orders
> WHERE status NOT IN ('returned', 'cancelled')
> AND shipped_date >= '2026-06-01'
> AND shipped_date < '2026-07-01'
> GROUP BY shipped_month
> ORDER BY shipped_month
クエリを実行した結果、以下の通りです。
| 出荷月 | 売上合計(税抜) |
|---|---|
| 2026年6月 | ¥12,345,678 |
質問は最初と同じ「先月の売上を集計して」ですが、「売上」の定義を理解した上で回答しています。このように、COMETAに質問のコンテキストとなる情報を登録しておくことで、AIチャットは質問の内容からコンテキストを補完して回答できます。
5. クエリ集でSQLクエリを蓄積する
2-4ではAIチャットがSQLクエリを作成しました。正しい結果が返ることが確認できたクエリは、クエリ集に登録することで他のユーザーが質問しても同じ形で再現できます。ここではクエリ集に以下の「売上の集計」クエリを登録します。
- クエリ名:売上の集計
- クエリ:
SELECT DATE_TRUNC(shipped_date, MONTH) AS shipped_month, SUM(amount_ex_tax) AS total_sales_ex_tax FROM orders WHERE status NOT IN ('returned', 'cancelled') AND shipped_date >= {{start_date}} AND shipped_date < {{end_date}} GROUP BY shipped_month ORDER BY shipped_month
登録したクエリは、次回以降の同様の質問でAIチャットに優先的に参照されます。集計期間を変えた依頼でも登録済みクエリをベースに集計されるため、質問したユーザーごとに集計結果がずれることを防げます。
まとめ
AIチャットの回答精度がデータとコンテキストの組み合わせで決まることを、実際にサイクルを回しながら確認しました。コンテキストは、以下の4つの機能を通してCOMETAに登録します。
- アセットのステータス:参照する/参照しないアセットの分類
- メタデータ:各テーブル・カラムの役割
- 用語集:業務用語の定義と集計ロジック
- クエリ集:検証済みのSQLクエリ
コンテキストが充実するほど、誰が・どのような質問をしても同じ精度の回答が得られるようになります。これがCOMETAのAIチャットを使い続ける大きなメリットです。
セクション3:コンテキストを豊かにするでは、業務の変化にあわせて更新したり、新しいテーマにあわせて増やしたりしながら、コンテキストを豊かにしていきます。