1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LLMに「研究ギャップ」を判定させない論文検索ツールを作った理由

1
Last updated at Posted at 2026-10-02

そもそも、なぜ作ろうと思ったのか

きっかけは、自分で先行研究を探していたときのことでした。

AIのリサーチ機能を使うと、短時間でかなりの数の論文や関連研究が出てきます。最初は便利だと思ったのですが、いざ一件ずつ確認し始めると、思った以上に大変でした。

検索すると、それらしい論文は出てくる。でも、本当に存在するのかよく分からないものがある。タイトルは見つかるのにDOIが合わない。DOIはあるけれど、著者名や発表年、論文タイトルとの対応をもう一度確認したくなる。逆に、検索で見つからないからといって、その論文や先行研究が存在しないとも言えません。

結局、AIが出してきた結果をそのまま使うことはできず、DOIを確認し、書誌情報を照合し、検索語を変えてもう一度探す、という作業をかなり手でやることになりました。

そのときに困ったのは、単に「正しい論文を探す」ことだけではありませんでした。

何を検索して、何が出てきて、どこまで確認して、それでも見つからなかったのか。

そこが残っていないと、あとから自分でも「なぜ先行研究がないと思ったのか」を説明できません。

「見つからない」と「存在しない」の間には、思っていたより大きな距離がありました。

この面倒な確認作業を、もう少し仕組みにできないか。

そこが、Renotoriの一番最初の出発点です。

最初に作ろうとしていたのは、Research Gap Auditor(RGA)という名前のツールでした。研究のギャップ(まだ誰も手を付けていなさそうな領域)を探すのを手伝うもの、というつもりです。

ところが実装を進めるほど、「ギャップを判定する」という看板が重くなっていきました。最終的に出来上がったのは、Research Gapを判定しないツールです。名前もRenotori(レノトリ)に変えました。

この記事では、その過程で何を諦めて、何を残したのかを書きます。研究支援の話ですが、LLMやAIエージェントを作っている人が一度はぶつかる「どこまでAIに判断させるか」という問題として読んでもらえたら嬉しいです。

最初はこう考えていた

研究テーマ(Research Question、以下RQ)を入れると、関連しそうな文献を集めて、手薄な領域を整理してくれる。そういうツールを想像していました。

ギャップを「発見する」とまでは思っていませんでしたが、名前に Gap と Auditor(監査する人)を入れた時点で、ツールに判定役を持たせるつもりだったのだと思います。

実装してみると、この境界が危ないと気づいた

違和感が出たのは、検索まわりを具体的に書き始めたときです。

たとえば、ある検索語で文献がほとんど出てこなかったとします。これを見て「ここは研究ギャップだ」と言えるでしょうか。

言えません。検索語の選び方が悪かっただけかもしれません。表記ゆれで取りこぼしているのかもしれません。そもそも検索先のデータベースにその分野が入っていない可能性もあります。「見つからなかった」は、「存在しない」の根拠にはなりません。

ここでLLMに「ギャップがありそうです」と書かせることはできます。それらしい文章も出てきます。でも、「検索で見つからなかった」だけでは、その結論を支える根拠になりません。ツールがもっともらしい断定を出してしまうと、使う人はそれを信じてしまうかもしれない。そこが怖いと思いました。

同じ構造は、検索結果の扱いにもありました。検索エンジンが返したヒットは、あくまで「検索語に反応したもの」です。それがRQに関連するかどうかは、また別の判断になります。

つまり、このツールの中には混ぜてはいけないものが何層もありました。検索すること、返ってきたものを候補として持つこと、それが本当に関係あるかを判断すること、そして「ギャップがある」と結論すること。後ろの層ほど、ツールが責任を持てなくなります。

判断ではなく、判断までの過程を残すことにした

そこで、プロダクトの責任範囲を狭めました。

Gapを判定するのをやめて、次のことを追跡できる形で残すツールにしました。

  • 何を検索したか
  • 何が返ってきたか
  • 人がどう判断したか
  • 次に何を検索したか

RGAからRenotoriへの名称変更は、ブランディングというより、この方針転換の結果です。実際に責任を持てる範囲に、プロダクトの説明を合わせました。できることは少し狭くなりましたが、そのぶん説明できることが増えたと感じています。

Renotoriが記録するのは、元のRQ、実際に使った検索語、検索計画、Crossrefから返ってきた結果、文献候補、人による関連性の判断、次に追加した検索語、各Roundの履歴です。検索が失敗したときや、探索が終わった状態も記録の対象になります。

全体の流れ

流れを図にするとこうなります。

Research Question(原文のまま保存)
        ↓
    Query Plan
        ↓
    Search Query
        ↓
外部検索(Crossref)
        ↓
    Candidates(文献候補)
        ├─→ 人が関連性を判断(関連あり / 判断保留 / 関連なし)
        │
        └─→ 人が次の検索語を提案・送信 ──→ 次のRoundへ

        すべてが Search Trace に記録される

ポイントは、判断と次の検索を一本のベルトコンベアにしていないことです。関連性の判断は候補ごとに人が付けます。次の検索語も、人が考えて送信します。どちらもシステムが自動で進めることはありません。

検索結果は「候補」として持つ

検索で返ってきた文献は、まずCandidate(候補)として保存します。「RQに関連する文献」とは呼びません。

そのうえで、人が一件ずつ、関連あり、判断保留、関連なしのどれかを付けます。理由の記入も必要です。この判断は上書きではなく追記で持っていて、あとから判断を変えても、前の判断が残ります。

エンジニア向けに雑に言うと、概念的には、DBに入った行と、人がレビューした結果を別のテーブルで持っているようなものです。検索結果は事実の記録、レビューは人の判断の記録で、混ぜません。

関連性の判断までLLMに任せる設計も考えられます。でも、あるRQにとって何が関連するかは、研究者がどんな観点で探しているかに左右されます。そこをAIに確定させる設計にはしませんでした。

探索の経路を第一級のデータにする

Renotoriは、最終的な文献リストだけを保存するツールではありません。

リストだけなら、あとから同じものを作れるかもしれません。でも、どの検索語から始めて、何が返ってきて、何を関連ありと見て、次に何を探したのかは、リストからは分かりません。こちらの経路のほうを、データとしてきちんと残すことにしました。

provenance(来歴)や traceability(追跡可能性)、auditability(あとから検証できること)に近い考え方です。ここでは「あとで見返して、どうやってそこに辿り着いたか説明できる」という意味で使っています。

何をシステムに任せ、何を人に残したか

Round 1では、役割をこう分けています。

RQは原文のまま保存します。ユーザーがRQの中から主要語を選び、必要なら表記ゆれも入力します。それをもとに、Renotoriが規則ベースでQuery Planを作ります。LLMが検索式を作る、という作りにはしていません。作られた計画は、実行前に画面で確認できます。

Round 2以降は、人が追加の検索語を一件ずつ提案します。システムが「次はこれを探しましょう」と勝手に決めることはありません。

上限も付けています。Public Betaは、1回の調査で最大5 Roundまでです。完全に自律的に走り回るエージェントにはせず、Roundごとに人が結果を見て、次の検索語を決める形にしました。どこまで探索したかを人が把握しやすく、探索の経路も追いやすいと考えたからです。

現在のPublic Betaでは、検索計画は規則ベースで作り、実行前に人が確認できるようにしています。検索計画の生成にもLLMは使っていません。

ただ、LLMを使わないこと自体が目的ではありません。重要なのは、AIやシステムにどこまで判断を任せるか、その境界を決めることです。

検索先はCrossrefだけ

現在のPublic Betaの検索先は、Crossrefのみです。J-STAGEやCiNiiは、現在の検索対象には含まれていません。

もうひとつ、Crossrefの検索は、入力した語をすべて含むものだけを返す厳密なAND検索ではなく、関連度に基づく検索です。たとえば「継続賃料 ゲーム理論」のように入れても、両方の語を含む文献だけが並ぶとは限りません。この点は、画面にも注意書きを出しています。

検索先の挙動を知らないまま結果を読むと、「ヒットが少ない」を「研究が少ない」と取り違えやすくなります。制約を先に見せることも、設計の一部だと考えています。

実装して分かったこと

一番の学びは、実装が追いつかない看板を、実装のほうで追いかけなかったことです。

「Gapを監査する」という名前に実装を寄せていくと、根拠の足りない判定を、判定のような顔でユーザーに見せることになります。反対に、責任を持てる機能に説明を合わせると、できることは減ります。でも、減った分だけ、ツールの言うことを信じていい範囲がはっきりしました。

最近は、ツールが何を言い切らないかを決めるのも、設計の仕事だと思うようになりました。

開発は一人でしていますが、複数のAIに役割を分けて、実装とレビューを回しています。ここは今回の主題ではないので、別の記事で書くつもりです。

現在の限界

Renotoriにできないこと、やらないことを、まとめて書いておきます。

  • Research Gapが存在するかどうかを判定しません
  • 先行研究が存在しないことを証明しません
  • 網羅的な検索を保証しません
  • noveltyを保証しません
  • 論文の主張が正しいかどうかを判定しません
  • 研究上の最終判断をAIに任せません
  • 検索先は現在Crossrefのみです

ここに挙げたのは、ツールが責任を持たない範囲です。ここが曖昧だと、使う人が「ツールがそこまで見てくれた」と思ってしまうかもしれません。

試してもらえるとうれしいです

今回書いた仕組みは、Renotoriとして Japanese Public Beta を公開しています。登録は不要で、当面は無料で試せます。Public Betaのため、利用上限があります。

まだBetaなので、実際に使ってみて、次のようなことがあれば、ぜひ教えてください。

  • 分かりにくかったところ
  • こういう記録も残せるとよい、と思ったこと
  • 研究探索の流れとして使いづらかったところ

LP: https://renotori.vercel.app/

アプリ: https://research-verification-core.onrender.com/

お知らせ(2026/10/9追記)

金沢シーサイドFMの番組「社長!あなたの会社教えてください。」に
出演させていただくことになりました。
2026年11月20日ごろ放送予定です。
HP:https://kanazawa-seasidefm.co.jp/
番組(spotify):https://open.spotify.com/show/2vgzg9tW45iW4jZnZAnaRR

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?