解説ねえ、トモヤくん!この論文…
解説

ねえねえ、智也くん!これ見て!『SimpleDevQA: Benchmarking Large Language Models on Development Knowledge QA』って論文のタイトル。なんかすごそう!

ああ、その論文か。確かに面白い研究だよ。要するに、プログラマーが開発中にAIに「これってどういう意味?」「このエラーは何?」って聞くような、知識を求める質問に、AIがどれだけ正確に答えられるかを測るための新しい「物差し」を作ったんだ。

物差し?ベンチマークってこと?でも、そういうのってもういっぱいあるんじゃないの?

良いところに気づいたね。実は既存のベンチマークには大きな問題が二つあったんだ。一つは、コードの理解だけに偏っていて、開発に必要な他の知識、例えばデータベースの設定方法とか、ネットワークの仕組みとか、そういう広い知識を問う問題が少なかったこと。

あー、確かにプログラミングってコード書くだけじゃないもんね。環境設定とか調べることいっぱいある!

そう。もう一つの問題は、多くのベンチマークが研究者が作った「想定問答」で、実際の開発者がAIにどんな質問をしているのか、その生の声を反映していなかったんだ。

え、それじゃあ本当に役に立つのかわからないテストをしてたってこと?

まさにその通り。だからこの研究では、まず実際のユーザーとAIの100万件の対話データを分析したんだ。そしたら、開発知識を尋ねる質問が全体の4割近くも占めていて、コードを生成してくれって依頼よりも多かったんだよ。

へえ!みんなコード書いてもらうより、まず知識を教えてほしいんだ!で、その実際の対話からどうやってベンチマークを作ったの?

三つの段階を踏んだパイプラインを設計したんだ。まず、実際の会話から開発のトピックを抜き出して、それに関連する信頼できるウェブ上の資料を集める。次に、その会話と資料をAIに見せて、質疑応答のペアに整理させる。最後に、何層ものフィルターを通して質の悪い問題や簡単すぎる問題を除去して、人間が最終チェックする。

すごい手間かかってる!で、できあがったベンチマークはどんな感じ?

英語、中国語、ロシア語の3言語で、合計2740問のQAペアだ。特徴は、答えが一つに決まっていて短く、正解かどうかが明確に判断できる問題に絞っていること。これで評価が簡単で正確になるんだ。

ふむふむ。で、そのベンチマークでAIたちをテストした結果は?どれが賢かったの?

18種類のAIで試したよ。全体的な傾向としては、有料のクローズドなAI(例えばGPT-4とか)が無料のオープンソースのAIより成績が良くて、プログラミング特化型のAIが同じ規模の汎用AIより強い傾向があった。

やっぱりお金かかるやつは強いのね…。でも、小さいAIでも頑張れる方法はないの?

そこがこの研究のもう一つの面白い発見で、RAGって方法を使うと、小さなAIの成績が平均11%も上がったんだ。

RAG?何それ、新しいゲーム?

違うよ…。Retrieval-Augmented Generationの略で、要するにAIが質問に答える時に、外部の信頼できる資料(例えばマニュアル)をリアルタイムで検索して参照できるようにする技術だよ。これでAIの記憶だけに頼らず、最新で正確な知識を使って答えられるようになる。小さいAIが大きいAIに並ぶくらいの性能を出せる可能性があるんだ。

すごい!それって、AIが調べ物をしながら答えてるみたいな感じ?

そういうイメージだね。あと、面白い傾向として、AIは開発知識の問題では自分がどれだけ自信があるかを過大評価しがちで、しかも「自信がある!」と言う時ほど、実際の正解率も高いことがわかった。

あら?意外と自分をわかってるんだ。でも、この研究って何がすごいの?ベンチマークが一個増えただけじゃない?

そうじゃない。まず、開発者が実際に必要としている知識の範囲を明らかにしたこと。コードだけじゃなくて、もっと広い知識が必要だと証明した。次に、実際のユーザーの声を基にしたベンチマークを作る方法論を示したこと。これで、より現実に即したAIの評価が可能になる。将来は、このベンチマークで優秀なAIを選んだり、RAGのような技術でAIの開発支援能力をさらに高めたりできる。

なるほど!じゃあ、これからプログラミング勉強する時、もっと賢いAI先生に教えてもらえるようになるかも?

そうなるといいね。ただ、課題もある。このベンチマークは答えが一つに決まる問題に絞っているから、複数の解決策があるような現実的な質問はカバーしきれていない。あと、言語も3つだけだ。今後はもっと多様な問題形式や、より多くの言語に対応したベンチマークが必要だろうね。

はーい、勉強になった!…ってことは、私がこれからプログラミングでわからないことがあったら、智也くんに聞くより、このベンチマークで高得点取ったAIに聞いた方が早いってこと?

…まずは自分で調べるか、ちゃんと人に聞きなさい。AIの答えを鵜呑みにするなって、この論文が言いたいことの一つだと思うぞ。
要点
ソフトウェア開発中の知識探索質問応答(Dev Knowledge QA)は、AI支援開発においてユーザーとの対話の39.6%を占める最も重要なタスクである。
既存のベンチマークはコード理解に偏っており、開発プロセス全体の知識(システム、データベース、ネットワークなど)をカバーしていない。
既存のベンチマークの多くは実際のユーザークエリから構築されておらず、開発者の真のニーズを反映していない。
本研究では、実際のユーザー対話(WildChat)から抽出・変換した多言語(英語、中国語、ロシア語)のベンチマーク「SimpleDevQA」を構築した。
SimpleDevQAは2,740のQAペアからなり、単一で短く検証可能な回答を持つ質問に焦点を当て、評価を正確かつシンプルにしている。
18の主要なLLMで評価した結果、クローズドソースモデルがオープンソースを上回り、コード特化型LLMが汎用LLMより優れている傾向があった。
RAG(Retrieval-Augmented Generation)による知識注入により、平均11.3%精度が向上し、小規模モデルが大規模モデルに匹敵する性能を発揮できる。
LLMはDev Knowledge QAにおいて体系的に過信する傾向があり、回答精度はモデルが表明する自信と正の相関がある。
コード生成性能が高いLLMは、一般的にDev Knowledge QAでも高い性能を示す。