使い方・開発 中級
干し草の山の中の針テスト
Needle in a Haystack
長い文章の中に、無関係な事実を1つだけ埋め込み、モデルがそれを正しく取り出せるかを調べるテストです。長い文脈を本当に使いこなせるかを測る目安として使われています。
別の呼び方NIAH、針探しテスト
例100万トークン対応をうたうモデルなので、自社の仕様書で針探しテストをして、中ほどの記述も拾えるかを確かめた。
詳しく
「干し草の山の中の針テスト」は、LLM が長い入力のどこにある情報まで拾えるかを調べる簡易的な評価です。英語名の頭文字をとってNIAHとも呼ばれます。
テストのやり方
長い文章(干し草)を用意し、その途中に、文脈と関係のない一文(針)をこっそり挿入します。たとえば「サンフランシスコで一番良い過ごし方は…」のような文です。そのうえでモデルに、「針の内容について答えてください」と質問します。針を入れる位置(冒頭・中ほど・末尾)と、全体の長さを変えながら何度も試し、結果を位置と長さのマス目にした図にまとめるのが典型的な見せ方です。正解が緑、失敗が赤で表示されます。
なぜ必要か
モデルのカタログには「文脈長 100万トークン」のような数値が載っていますが、入力できることと、中身を正確に使えることは別です。長い入力の途中にある情報が見落とされる傾向(いわゆる「中だるみ」)も指摘されてきました。この検査は、その差を手軽に確かめる方法として広まりました。
具体例
数百ページの契約書を丸ごと読ませて質問したいときに、使いたいモデルが長い入力でも安定して情報を拾えるかを知りたいとします。自社の文書を干し草にして、いくつかの針を埋めて試せば、実際の使い方に近い確認ができます。
限界と注意
- 簡単すぎる面があります。針が文脈と明らかに浮いていると、探すのが容易です。現実の資料では、似た記述が複数あったり、情報を組み合わせて答える必要があったりします。
- 一つの事実を拾えても、複数の情報を統合したり、長い資料全体を要約したりする力が高いとは限りません。そのため、複数の針を探すテストや、より複雑な長文課題の評価も作られています。
- 満点だったからといって、実際の業務で同じ精度が出る保証はありません。自分のデータでも確かめましょう。
- 結果は、プロンプトの書き方や、モデルの版によって変わります。
関連する考え方
文脈ウィンドウの大きさ、検索で必要な部分だけを渡す RAG、情報の渡し方の設計であるコンテキストエンジニアリングと合わせて理解すると、長文処理の選択肢が見通せます。評価全般についてはベンチマークの項目も参照してください。
結果の読み方
図の上で赤い部分が文章の中ほどに偏っていれば、そのモデルは途中の情報を落としやすいと分かります。逆に全面が緑でも、それは「一つの単純な事実を探す」ことに限った結果だと割り引いて見てください。使う長さの範囲だけで確かめれば十分で、上限いっぱいまで試す必要はありません。
あわせて知りたい言葉
- 文脈長モデルが1回の処理で扱えるトークン数の上限です。入力(指示・会話履歴・資料)と出力の合計がこの範囲に収まる必要があり、長いほど多くの資料を一度にまとめて渡せます。
- 評価(eval)AI の出力がどれくらい目的に合っているかを、決めたテストケースと基準で測ることです。モデルやプロンプトを変えたときに、良くなったか悪くなったかを判断する根拠になります。
- ベンチマークAI モデルの能力を比べるために使う、共通の問題集と採点方法のことです。モデルの発表時に点数が示されますが、点数だけで実際の使いやすさが決まるわけではありません。
- RAG(検索拡張生成)質問に関係する文書を検索で取り出し、それを LLM に渡してから回答させる仕組みです。モデルが学習していない社内資料や、最新の情報にもとづいた回答ができるようになります。
- コンテキストエンジニアリングモデルに渡す情報全体(指示、会話履歴、検索結果、ツールの定義や結果、記憶など)を、何をどれだけ・どの順で入れるかまで設計することです。とくに長い作業を続けるエージェントで重要になります。