フォーマットの正解を探してしまう
以前の記事で、「みんなでAI」に必要なのはRAGではなく業務ルールの棚卸しだと書いた。
→ 中小製造業の「みんなでAI」に必要なのは、RAGではなく業務ルールの棚卸し
では実際にルールを書き出そうとしたとき、次に出てくる問いがある。 「どう書けばいいのか」。
JSONにすべきか、CSVか、Markdownの表か、それとも箇条書きか。フローチャートのように手順を図にしたほうがいいのか。テーブル設計から入るべきか。
結論から言うと、 フォーマットはそこまで重要ではない。
今のAIはJSON でもCSVでも自然言語の箇条書きでも、どれでも読める。テーブルでもフローチャート的な記述でも理解できる。フォーマットの違いで精度が大きく変わることは、実はあまりない。
AIが間違える原因はフォーマットではなく、 情報の「穴」 にある。
AIは推測を「推測した」と言わない
人間に業務を教えるとき、足りない情報があれば聞き返してくれる。「この材質のときはどうすればいいですか」と確認してくれる。
AIにはこの感覚が薄い。情報が足りないとき、黙ってそれらしい値を埋めてしまう。しかも自信ありげに。
たとえば板厚が書いてないとき、人間なら「板厚は?」と聞く。AIは「この材質だと一般的に1.6mmが多いから」と勝手に補完して計算を続ける。結果だけ見ると正しそうに見えるから、間違いに気づきにくい。
AIは「わからない」と「推測した」の区別がつきにくい。 これがフォーマットよりもはるかに深刻な問題になる。
大事なのは3つだけ
業務ルールをAIに渡すとき、本当に重要なのは以下の3つになる。
1. 網羅性——例外・条件を漏らさない
AIが間違える最大の原因は「書いてないケースが来たとき」。ルールに書かれていない条件に遭遇すると、AIはエラーを出すのではなく、自分の知識で推測して答えを出してしまう。
この網羅性には2つの層がある。
入力の網羅性 は比較的簡単に対応できる。「見積には材質・板厚・サイズ・数量が必要。不足していたら確認すること」と書いておけばいい。AIは情報が揃わないまま答えようとせず、先に聞き返してくれる。
以前の記事で「聞き返す設計」として紹介した方法がまさにこれにあたる。何が揃えば回答できるかをリストにして、不足があれば聞けと指示する。AIに「何を知らないか」を自覚させるために、最初から必要な情報の一覧を渡しておく。
難しいのは ルールの網羅性 のほう。ここで知っておくと楽になることがある。AIは板金加工の一般的な知識をかなり持っている。定尺板のサイズ、材質ごとの加工特性、標準的な工程の流れ——こうした業界共通の知識は書かなくても推論できる。
書かなければいけないのは、自社固有の制約のほう。
- うちの仕入先はSUS304の定尺が1219×2438しか扱っていない
- この板厚は特寸扱いで最低ロット10枚からになる
- うちのレーザーでは6mmまでしか切れない
- この客は過去にクレームがあったので検査を二重にする
AIは一般的な定尺サイズや加工限界を知っているから、自社固有の制約が書かれていなくても「それっぽい答え」は出す。しかし「うちでは違う」という結果になる。一番危ない穴は、ベテランが当たり前すぎて言わない自社固有の制約にある。一般知識で埋められてしまうから、間違いに気づきにくい。
つまり、全部を書く必要はない。 「業界の常識」はAIに任せて、「うちだけの事情」を書く。 このフィルターがあると、何を書けばいいかが絞りやすくなる。
ただし、ルールの網羅は最初から完璧にする必要はない。以前の記事でも書いた通り、30点のルールでも、ゼロよりはるかにまし。AIに使わせてみて、ベテランが「そこは違う」と指摘した部分を追記していくのが現実的な進め方になる。間違えた箇所が「穴」の場所を教えてくれる。
2. 優先順位——ルールが競合したときどちらを取るか
業務ルールには矛盾するものが共存していることがある。
- ルールA:初回の客は利益率を下げて出す
- ルールB:小ロットは利益率を上げる
初回で小ロットの場合、どちらが優先されるか。ベテランなら状況を見て判断するが、AIにはその判断基準がない。
「初回客の対応はロット数より優先する」「ただし赤字になる場合は上長に確認」——こうした優先順位が明示されていれば、AIは迷わない。書かれていなければ、どちらかを勝手に選ぶ。
ルールの数が多くなるほど、この種の衝突は増える。全部を事前に想定するのは難しいが、少なくとも「よくある判断の分かれ目」は押さえておきたい。ここもベテランに聞けば出てくることが多い。
3. 順番——どのステップを先にやるか
以前の記事で製缶品の積算を例に挙げた。要求性能→構造判断→パーツ構成→重量計算→材料費→加工費→合計、という依存チェーン。前の結果が次の入力になる。
この手順をルールとして明示しておくと、AIが間違える余地は確実に減る。
ただし正直に言えば、3つの中では優先度が最も低い。依存関係(「材料費を出すには重量が必要」「重量を出すにはパーツ構成が必要」)がルールの中に書いてあれば、AIは自分で順番を組み立てられる。手順が書いてあれば安心だが、なくても致命的にはならない。
実は、因果関係をたどって順番を組み立てるのはAIが最も得意とする領域の一つ。3工程どころか、もっと長い依存チェーンでも追える。
たとえば板金の積算なら、要求耐圧→最低板厚の決定→切断方法の選択(レーザーかプラズマか)→切断面の品質→仕上げ工程の有無——という連鎖がある。さらに、板厚と材質の組み合わせから溶接方法が決まり、溶接方法から熱歪みの度合いと矯正工程の要否が決まる。こうした複数の判断が連鎖し、途中で枝分かれするような構造でも、各ステップの判断基準がルールとして書いてあれば、AIは正確に追いかけられる。
見積のように金額に直結するものは手順を明示しておいたほうが安全だと思うが、それは「AIが推論できないから」ではなく「間違いの影響が大きいから保険をかけておく」という話になる。
3つの優先度を整理すると
| 重要度 |
要素 |
理由 |
| 最も重要 |
網羅性 |
書いてないことはAIが推測する。推測は最大のリスク |
| 次に重要 |
優先順位 |
ルールの衝突はAIが自力で解決できない |
| あると安心 |
順番 |
依存関係が書いてあれば推論できる |
フォーマットはこの3つの後ろに来る。極端に言えば、自然言語の箇条書きでも、この3つが押さえてあれば正確に動く。逆に、JSONで美しく整形してあっても、ルールに穴があればAIは推測して間違える。
情報の配置は気にしなくていい
ルールを書いていると、つい関連する情報を近くに置きたくなる。材料セクションに「SUS304の定尺は1219×2438」と書いてあって、切断セクションに「レーザーは6mmまで」と書いてあると、この2つが離れているのが不安になる。材料と切断は明らかに関連しているのだから、近くに書いたほうがAIも見落とさないのでは——と思うかもしれない。
人間ならその心配は当たっている。長い文書を上から読んでいけば、前半に書いてあったことを後半で忘れるのは自然なこと。しかしAIの読み方は違う。全体を一度に取り込んで、位置に関係なく意味的に関連する情報を結びつける。1000行のファイルで3行目と980行目に関連情報が分かれていても、AIはこの2つを自然につなげて処理できる。
長いコンテキストを渡すとAIの精度が落ちるという話を聞いたことがあるかもしれない。いわゆる「Lost in the Middle」と呼ばれる現象で、文書の中間部分の情報を見落としやすいという研究がある。ただしこれは、大量の無関係な情報の中から特定の1文を探すような実験での結果。業務ルールのように構造化されたファイルで、カテゴリごとに見出しがついていれば、この問題はほぼ起きない。
だから、関連する情報を近くにまとめるための工夫——たとえば切断セクションに「※材料の制約は材料費.mdを参照」と相互参照を入れたり、同じ情報を複数の場所に書いたりする必要はない。むしろ同じ情報を2箇所に書くと、片方だけ更新したときに矛盾が生まれる。AIにとってルール同士の矛盾は、ルールがないことより厄介になる。
配置より気をつけるべきことが一つある。 意味が違うものには違う名前をつけること。 「単価」という言葉が材料単価にも加工単価にも外注単価にも使われていると、AIは文脈から区別しようとするが、確実ではない。最初から「材料単価」「加工単価」「外注単価」と書き分けておけば、どこに書いてあっても混同しない。「納期」も同じで、客先への納期なのか仕入先のリードタイムなのかで意味が違う。
ファイルの中で情報をどう並べるかは、AIの精度には影響しない。 カテゴリごとにまとめる、目次をつける——これらは人間がルールを追記・修正するときに迷わないための設計であって、AIはどう配置されていても読める。ただし名前の区別だけは、AIの精度にも直結する。
一方で、ファイルをどう分割するかには、人間のメンテナンス性とは別の理由もある。
ファイルの分割はどうするか
以前の記事で、業務ルールを見積・受注処理・品質といったカテゴリごとにファイルを分け、目次から必要なファイルだけ読みに行く方法を紹介した。ではファイルをどう分けるか。
分割には2つの理由がある。
1つ目は、人間がメンテナンスしやすい単位で切ること。 材料単価が変わったときに加工費のルールまでいじる必要はない。一緒に変わるものは同じファイル、別々に変わるものは別ファイル。
2つ目は、AIが必要な分だけ読むようにすること。 AIが一度に読めるテキストの量には上限がある。全ルールを1ファイルにまとめると、見積の質問が来ただけで品質基準や受注処理のルールまで毎回読み込むことになる。読む量が増えればその分コストがかかるし、定額プランでも利用上限に早く到達する。カテゴリごとにファイルが分かれていれば、AIは目次を見て必要なファイルだけ開く。
この2つの理由は、実際にはだいたい一致する。カテゴリ(見積/受注/品質)で分ければ、更新の単位にも、AIが読む範囲にも合う。
逆に注意したいのは 分けすぎないこと。同じ質問で必ずセットで使う情報——たとえば材料費と加工費は、見積の質問では結局両方必要になる。細かく分けすぎると、ファイル数が増えてメンテナンスが面倒になるし、AIも複数のファイルを開く手間が増える。「見積の質問にはこのファイル1つ読めば答えられる」という粒度がちょうどいい。
「推測するな、聞け」が一番効くルール
3つの中で網羅性が最も重要だと書いたが、完璧な網羅は現実的には難しい。そこで一つ、すべてのルールファイルに共通して入れておくべき指示がある。
「判断に必要な情報が不足している場合は、推測せず確認すること」。
この一文があるだけで、AIの振る舞いが変わる。ルールに書いていないケースが来たとき、推測で答える代わりに「この条件についてはルールが見当たりません。確認させてください」と返してくれる。
完璧なルールを最初から書こうとするよりも、「わからなかったら聞け」と指示しておいて、聞かれた内容を追記していくほうが、実用的にルールが育っていく。
これはベテランが新人を育てるのと同じ構造だと思う。最初から全部教えるのではなく、わからないことがあったら聞けと言っておいて、聞かれたことから教えていく。違うのは、AIは同じことを何度聞いても嫌な顔をしないし、ルールに追記すれば次からは聞かなくなること。
構造化の本当のコスト
フォーマットの話に戻ると、「どう書くか」で悩む時間は、実はそれほど意味がない。JSON、CSV、Markdown、どれでもいい。
本当に時間がかかるのは、以前の記事でも書いた「ルールを書き出すこと」そのもの。そしてこの記事で加えたいのは、 書き出したルールの「穴」を見つけて埋めること にも同じくらい時間がかかるということ。
穴は机上では見つからない。AIに実際に使わせて、間違えた箇所を特定し、ベテランに確認して追記する。このサイクルを回す作業が、構造化の本当のコストになる。
ただ、このコストはAIに特有のものではない。新人教育でも同じことが起きている。マニュアルを作って渡して、それでも間違えるところが出てきて、「ここはこうだよ」と補足する。その繰り返しで教育の精度が上がっていく。AIの場合は、補足した内容がファイルに残り、次から同じ間違いをしなくなるという点で、人間よりもフィードバックループが確実に回る。
このシリーズの他の記事:
シリーズ記事一覧・著者への相談はこちら →