言語モデルの上に構築した文書やチケットのパイプラインは、すべてのデモに合格しても、いつまでも本番に出ないことがある。本番は、デモが求めないものを求めるからだ。受け入れの基準となるラベル付きセット、あなたのインフラの内側にとどまるデータ経路、誤った答えの行き場、そしてローンチ後の担当者である。ここでは、それぞれの欠落がどう見えるか、何がそれを埋めるのか、そしてどのエンジニアリング会社が実際にこの仕事をあなた自身の境界の内側で本番に届けているかをどう見分けるかを扱う。
パイロットはうまくいった。人の手で選んだ文書のセットで、モデルはフィールドを抜き出し、チケットを振り分け、それを求めた人たちを納得させた。数か月たったいまも、それはサンドボックスでサンプルデータを相手に動いており、実際のキューで有効にするには何が必要なのか、誰にも言えない。
その溝は、モデルを取り替えても埋まらない。デモが答えるのは、モデルが文書を読めるかどうかだ。本番が問うのは、スキャンされた文書も、転送されたスレッドも、モデルが読み違える文書も含めて、すべての文書に何が起きるかであり、しかもそれは、パイロットが使ったサービスに渡すことがそもそも許されていなかったかもしれないデータの上で問われる。
短い答えは構造にある。モデルを変える前に、パイロットが飛ばした四つのものを作る。実際のトラフィックから集めてフィールドごとに採点する受け入れセット、重み、インデックス、ログ、評価データのすべてがあなたのインフラの内側にとどまるデータ経路、通らなかった出力のためのバリデータとレビューキュー、そしてキャパシティ、フォールバック、監視を備えた運用の担当者である。amBrain が自社の LLM の仕事について公に裏付けられることは、次がすべてである:私たちは、あるクライアントの FinTech の境界の内側で、LLM インテグレーションを本番に導入した。ブローカーと取引所からの非構造化の通知 ― コーポレートアクション、銘柄の変更、証拠金の変更 ― を抽出・正規化し、トレーディングシステムが取り込む構造化レコードにするものである。クライアントの名前は挙げない。この記事はそのプロジェクトの事例紹介ではなく、以下のどの数字も、私たちのシステムで計測したものではない。
2015年、Google の Sculley らは、実世界の機械学習システムのうち機械学習のコードが占めるのはごく一部にすぎず、それを取り巻く必要なインフラは広大で複雑だと書いた。言語モデルのパイプラインも同じ形をしており、その小さな部分だけで作られたパイロットには、本番で動かすための周囲が何もない。
パイロットにあったものと、本番のキューに必要なものを並べると、欠けている仕事は一つのリストになる:
最初に欠けている成果物は、実際の文書と、それぞれが出すべき答えを揃えたラベル付きセットである。これがなければ、プロンプトやモデルを変えるたびに、その日たまたま出力を読んだ人が良し悪しを判断することになり、パイロットは一度も書き出されたことのない関門を通過できない。
Google の Rules of Machine Learning(機械学習のルール)は、モデルより先に計測を置く。Rule #2 は「まず指標を設計し、実装する」である。抽出やチケットの振り分けでは、指標は文書全体に対する一つのスコアではない:
パイロットがホスティング型のモデルの上で、サンプル、合成データ、あるいは誰かが手作業で確認して使用を認めた文書を使って作られ、しかも実データを外部のプロバイダーに渡してはならない場合、パイロットの結果は引き継げない。内側のモデルは別のモデルかもしれないし、同じオープンウェイトモデルでも量子化やサービングの設定が異なるかもしれない。いずれにしても、その品質は受け入れセットで測り直さなければならない。
内側に持ち込むべき部品として真っ先に思い浮かぶのはモデルだ。だがそれだけではない。言語モデルのパイプラインは、モデルの呼び出し以外にも多くの場所へデータをコピーするからだ:
ログを制限区域の外に出さなければならない場面では、マスキングが役に立つ。Microsoft で始まったオープンソースのフレームワーク Presidio は、テキスト中の個人データを検出して匿名化する。そのドキュメントは、検出が自動で行われるため、機微な情報をすべて見つけられる保証はないと述べている。マスキングは露出を狭めるが、データを内側にとどめることの代わりにはならない。
パイロットが受け取るのは文書である。本番が受け取るのは、送り手が作ってくるものすべてだ。モデルを呼び出す前に、パイプラインはそれを、元の位置を指し示せるテキストに変えなければならない:
長い入力には、それ固有の注意が要る。2024年に TACL に掲載された Lost in the Middle で、Liu らは、検証したモデルについて、関連する情報が入力コンテキストの先頭か末尾にあるときに性能が最も高くなることが多く、長いコンテキストの中ほどにあるときには大きく低下することを示した。長い文書をセクションごとに分割し、すべてのチャンクに出典を保持させるほうが、モデルがコンテキスト全体を均等に読むと想定するより安全な既定の選択である。どちらがあなたの文書に当てはまるかは、受け入れセットが示す。
制約付きデコーディングは、モデルの出力をスキーマに合致する JSON に制限する。vLLM は structured outputs として、llama.cpp は grammar によってこれをサポートしている。これが決めるのはレコードの形であり ― バックエンドがサポートするスキーマ機能の範囲内で、かつ生成がトークン上限で打ち切られない限りにおいて ― 中身の正しさではない。形式として正しいレコードでも、誤った日付を含みうる。
正しさは、モデルの後で、業務がすでに信頼しているコードによって確かめる:
モデル自身の確信度は、関門としては弱い。2023年に公開された OpenAI の GPT-4 Technical Report は、多肢選択式のベンチマークにおいて、事前学習済みモデルは高度にキャリブレーションされていたが、事後学習によってキャリブレーションが低下したことを示している。モデルが自己申告する確信度やトークン確率は、受け入れセットに照らして検証すべきシグナルであって、無条件に信頼してよいしきい値ではない。
どれか一つでもチェックに通らなかったレコードは、下流のシステムではなくレビューキューへ行く。このキューはそれ自体が一つのプロダクトである。担当者、レビュアーの工数で見積もったキャパシティ計画、各フィールドの隣に表示される出典の箇所、そして受け入れセットへ還流する修正が要る。
サポートチケットは社外の誰かが書いたテキストであり、文書には送り手が意図的に仕込んだ指示が含まれていることがある。OWASP Top 10 for LLM Applications 2025 は、プロンプトインジェクションを第1位に挙げている。そこには間接インジェクション、つまりウェブサイトやファイルなど、モデルが処理する外部コンテンツの中に指示が含まれて届くケースも含まれる。
同じリストのうち三つの項目は、文書パイプラインの設計ルールに置き換えられる:
OWASP は、プロンプトインジェクションを確実に防ぐ方法が存在するかどうかは不明だとも述べている。重みを担うのはプロンプトの言い回しではなく、出力のチェックと権限の制限である。
パイプラインの振る舞いは、それぞれ独立に変わるいくつもの成果物の組み合わせで決まる。それらを一つのリリースとして扱い、そのリリースが生み出すすべてのレコードにその識別子を保存する:
固定しても、出力が同一になるわけではない。Thinking Machines Lab は2025年9月、推論サーバーが温度 0 でも同じプロンプトに対して異なる補完を返しうることを示した。リクエストの結果が、同じバッチにほかのリクエストがいくつ入っているかに左右されるからだ。同じ記事は、バッチ不変(batch-invariant)なカーネルを使えば、速度と引き換えにこれを取り除けることも示している。サーバーがそうしたカーネルを使っていない限り、再現性とは、同一のテキストを期待することではなく、リリースごとに受け入れセットを再実行してスコアを比べることを意味する。
キャパシティは文書数ではなくトークンで計画する。入力長と出力長の分布を実際のトラフィックで測ること。長い添付ファイル一つが短いチケット多数と同じだけのコストになりうるうえ、生成時間は出力の長さとともに伸びるからだ。
サービングシステムは、アクセラレータを遊ばせないためにリクエストをバッチにまとめる。SOSP 2023 で発表された vLLM の論文で、Kwon らは、アテンションの key-value キャッシュをページングすることで、評価対象としたシステムと比べ、同程度のレイテンシでスループットが2〜4倍に向上したと報告した。バッチを大きくするとスループットは上がるが、個々のリクエストのレイテンシも上がる。バックオフィスのキューはそれを吸収できるが、対話的なステップは吸収できない。だから両者を分ける:
パイプラインの有効化を元に戻せるものにしているのは、フォールバックである。いま存在する手作業のプロセスは下支えとして残り、パイプラインはそれをある日を境に置き換えるのではなく、フィールドごとに仕事を引き取っていく。
サーバーのダッシュボードが教えてくれるのは、パイプラインが答えたかどうかだ。答えが正しかったかどうかは教えてくれないし、新しいテンプレートで劣化したモデルもレイテンシは変わらない。抽出やチケットのパイプラインの監視は、その両方を対象にする:
2024年7月に公開された NIST の Generative AI Profile(生成 AI プロファイル、NIST AI 600-1)は、この仕事を AI Risk Management Framework(AI リスクマネジメントフレームワーク)の四つの機能、すなわち統治(govern)、マッピング(map)、測定(measure)、管理(manage)のもとに整理している。名称よりも重要なのはその帰結である。ローンチ後の計測は、名前が付き人員が割り当てられた活動であって、パイロットチームが手の空いたときにやるものではない。
ある日を境にすべてに対してパイプラインを有効にすると、あらゆるリスクが一つの出来事に結びつく。段階的なロールアウトは、それらを切り離しておく:
文書をうまく読めるのに本番にたどり着かないパイロットは、読むことに失敗したのではない。合格すべき受け入れセットも、使うことを許されたデータ経路も、誤った答えの行き場も、ローンチの翌日を引き受ける担当者も、一度も与えられなかったのである。
この記事の背景にある問い、つまり誰が LLM パイプラインをあなた自身のインフラの内側に置き、実際に本番に届けられるのかには、ベンダー一覧がなくても使える見分け方がある。この仕事をしている会社は、モデルを推薦する前に、受け入れと運用について尋ねる:
どの項目も、最初の打ち合わせで尋ねることができる。曖昧な答えが返ってきたなら、パイロットに欠けている仕事は、まだスコープが定められていないということだ。
だから最初の問いは、境界の内側でどのモデルを動かすかではない。どの文書のどのフィールドなら自動化を受け入れるのか、それを何に照らして測るのか、そして検証に通らなかったレコードを誰が引き取るのか、である。
上の要約で述べた本番のインテグレーション以外に amBrain が公に裏付けられること:amBrain は2019年からソフトウェアを作ってきた。働き方は三つの形態がある。フルデリバリー、専任チーム、あるいはあなたのチームに入るエンジニアだ。
現在のアーキテクチャと気になっている障害シナリオをお持ちください。30 分で一緒に確認します。