【AI】chatGPTのブラウジング機能で論文検索をうまく行うコツ
■リアルタイムブラウジング機能とは,ChatGPTがリアルタイムにウェブアクセスでき,インターネットで情報を検索することができる機能である.すなわち,ChatGPTは質問に答えるためにリアルタイムでウェブ検索を行い,その結果を利用してユーザーに対する応答を作成することができる.
■実際に使用するとかなり便利な機能であり,架空の情報を回答してしまうハルシネーションも大幅に減る.一方で,これも使用していくと分かるが,非常に便利と思われていたブラウジング機能は制限がいろいろあってなかなかに曲者である.このため,論文検索やエビデンス要約に使おうとしてもなかなかうまくいかないことが多い.これらの用途で使うには以下に説明するコツが必要であり,これを知っておかなければブラウジング機能によって受けられる恩恵は小さくなってしまう.この記事では,chatGPTのブラウジング機能の仕組みと弱点,うまく活用するコツを述べる.
1.ブラウジング機能の仕組み
■chatGPTがブラウジング機能を使う際は一連のコマンドを使用してウェブ検索をシミュレートする.実際にはウェブブラウザを操作しているわけではなく,これらのコマンドはウェブコンテンツを取得し,表示し,選択するための抽象化されたインターフェースを提供する.具体的には、以下のようなコマンドがある.
・search(query: str, recency_days: int): これは検索エンジンにクエリ(質問や要求)を発行する.recency_daysパラメータは,どれだけ最近の情報を検索するかを制御する.■これらのコマンドを使用して,情報を検索,選択,保存するための対話的なプロセスを進めることができる.このプロセスは完全に見える化されており,ユーザーはchatGPTがどの情報を選択し,どのようにそれを解釈したかを完全に理解することができる.ただし,実際に触ってみると分かるが,このプロセスは1~2分ほどの時間を要する.
・click(id: str): 検索結果の中から特定のウェブページを開く.idは表示された結果内にある特定のURLにマップされる.
・quote(start: str, end: str): 開かれたウェブページからテキストスパンを保存する.これは,開いたウェブページの開始部分の部分文字列startと終了部分の部分文字列endでテキストスパンを指定する.
・back(): 前のページに戻り,それを表示する.
・scroll(amt: int): 開いているウェブページを指定された量だけ上または下にスクロールする.
・open_url(url: str): 与えられたURLを開き,それを表示する.
■ブラウジング機能はMicrosoft社の検索エンジンBingを使用しており,一般的なウェブ検索エンジンのように動作する.つまり,検索のためのクエリ(質問や要求)を受け取り,そのクエリに最も関連性があると思われるウェブページのリストを提供する.そして,そのリストから特定のページを選択して開き,その内容を閲覧し,引用することができる.ブラウジング機能のシーケンス図を以下に示す.

■ブラウジング機能が一部のウェブサイトの情報を取得できないことがあり,これにより情報収集に漏れが生じる.理由はいくつかあり,以下の通りである.
(1)動的コンテンツ
■ブラウジング機能は静的なHTMLコンテンツを解析するが,JavaScriptや他の動的技術を使用して生成されるコンテンツは解析できない.そのため,動的にロードされる情報やインタラクティブな要素(例えば、ユーザーの入力に応じて変化するコンテンツ)は取得できない.
(2)ログインが必要なコンテンツ
■ブラウジング機能は一般に公開されているウェブページの情報のみを取得する.ログインが必要なサイトや有料のコンテンツ,特定のユーザーにのみ表示される情報は取得できない.当然ながらフルテキストが公開されていない論文の内容は取得できない(Abstractは取得できる).
(3)検索エンジンからのブロック
■一部のウェブサイトは自身のコンテンツが検索エンジンにインデックスされることを防ぐために特定の技術(例えば、robots.txtファイルやmetaタグ)を使用している.これらのサイトの情報はブラウジング機能では取得できない.
(4)タイムリーな更新
ブラウジング機能は検索エンジンのインデックスを使用して情報を取得するが,インデックスはウェブサイトの最新の状態を常に反映しているわけではない.そのため,非常に新しい情報や最近更新されたページの内容は取得できない場合がある.
3.ブラウジング機能の限界を考慮した質問のコツ
■ここからが本題である.論文の検索やエビデンス要約をブラウジング機能で使おうとするとうまくいかないことがある.うまく回答を生成させるためには,ブラウジング機能やchatGPTによる情報処理の弱点を知った上でうまく質問するコツ(特にプロンプトエンジニアリングのスキル)をつかむ必要がある.以下にそのコツを示す.
(1)質問は具体的に
■これはブラウジング機能やchatGPTに限った話ではなく,対話型AI全般に言えることだが,抽象的な質問ほど適切な回答は得られにくい.例えばブラウジング機能で「最新の重要な臨床研究論文を教えてください」と質問するよりも,「2023年5月の救急領域の重要な臨床研究論文を教えてください」と質問する方が適切な回答を得られやすい.
(2)正確な医学用語を使用する(できれば英語で)
医学論文を検索する際は,正確な医学用語や疾患名,治療法の名前を使用すると,より関連性の高い結果が得られる.英語論文が検索対象となる以上はできれば英語の方がより精度があがる.
(3)特定のデータベースを指定する
■PubMedなどの特定の学術データベースを指定すると,より専門的な結果が得られることがある.例えば,「PubMedでCOVID-19の最新の治療法に関する論文を検索してください」などと指定できる.
(4)研究デザインを指定
■特定の研究デザインの論文(RCT,観察研究,メタ解析)を検索したい場合は,それを明示的に指定すると良い.
(5)結果の評価と再試行
■ブラウジング機能が引用した論文の摘要を読み,その論文があなたの質問に対する適切な答えを提供しているかどうかを確認する.もし不適切であれば別の論文を検索するか,質問をより具体的に調整して再度試すとよい.
(6)質問内容を分割し,段階的にする
■プロンプトエンジニアリングのテクニックである.例えば,「疾患Aに対する治療薬Bの有効性についてのエビデンスの要約を教えてください」という質問よりも,「疾患Aに対する治療薬Bの有効性を検討したRCTを列挙してください」→chatGPTが回答生成→「これらのRCTからエビデンスを要約してください」,という二段構えにした方がより精度の高い回答生成になる.
(7)chatGPTの判断基準を知った上で質問の仕方を考える
■「〜について重要な研究を教えてください」「〜についてエビデンスを要約してください」という質問をしたくなるが,ブラウジング機能は自動的に「重要性」を判断する能力は持っていない(これも対話型AIが不正確な回答を生成する「曖昧な質問」の範疇なのだろう).一方,ChatGPTは訓練データを基に一部の情報を判断する能力を持っており,一定の判断基準をもとに「重要性」を判断する.しかし,その判断基準の要素をchatGPTは完全に理解しているわけではなく,ユーザーが考える重要性とはかなり乖離が出てくる.現時点では対話型AIは優先順位付けがまだ苦手である.
■なお,chatGPTがその論文の重要性を判断する上での基準となる要素の優先順位の上位は順に①論文の引用数,②論文が掲載されている雑誌,③論文の研究デザイン,④研究が行われた研究機関,となっている.こうなってくるといろいろ弊害がある.例えば,非常に重要な論文であっても新しい論文ほど引用数は少ないため,重要論文から漏れる.IFが低い雑誌や知名度が低い施設からの論文でも重要なものはあるのに重要論文から漏れる.このため,質問の際に優先順位として高いもの(研究デザイン)を具体的に指定したり,「論文の引用数は無視してください」など条件をつけることでより適切な回答が得られやすくなる.
(8)特定のURLを提示して要求を行う
■ブラウジング機能でアクセス可能なサイトであれば,URLを指定することでその内容を取得し,それをもとに回答を生成することはGPT-4は得意としている.例えば,学会ガイドラインがHTMLテキストで無料全文公開されているページであれば,「推奨分だけを抜粋して日本語訳にしてください」という要求も可能である.
■これは,(6)の質問分割テクニックとの組み合わせでも有用である.例えば「疾患Xに関する治療薬Aのエビデンスを要約してください」という質問を分割する際に,「疾患Xに関する治療薬Aの効果を検討したRCTをPubMedで検索して列挙してください」でもよいが,さらに以下のようにすると精度が上がる.

ユーザー:clinical questionを満たす論文を検索するためのPubMed検索式を要求(自分で作成してもよい)■なお,このプロセスをひとつのクエリに集約させるとワンステップで早く回答が生成される.そのためには有効なクエリを作成する必要がある.以下はそのテンプレートの一例であり,参考にされたい(##で囲んでいる部分は自分で入力する).
↓
chatGPT:検索式を回答生成
↓
ユーザー:PubMedにアクセスし,検索式を用いて検索する
↓
PubMed:検索結果表示
↓
ユーザー:検索結果が表示されたページのURLをコピーする(コピーする前に,Display optionsのper pageを200に設定しておいた方がスムーズになる)
↓
ユーザー:URLをchatGPTのクエリにペーストし,そのURLからclinical questionを満たす論文の抽出を要求
↓
chatGPT:ブラウジング機能でPubMedのURLにアクセスし,論文抽出
↓
ユーザー:エビデンスの要約を要求
↓
chatGPT:回答生成(エビデンス要約)
以下のプロセスに従ってClinical Questionに関するエビデンスの要約を行ってください.4.同じchatGPTを使用するWebchatGPT,BingAI,PerplexityAIと比べてどうなのか?
Clinical Question: #ユーザーが検索したいClinical Questionを入力#
検索における追加条件: #ユーザーが研究デザインなどの追加したい検索条件#
プロセス
1.「Clinical Question」についての論文をPubMedで検索するための検索式を作成してください.
2.その検索式をURLエンコードし,PubMedのURLに挿入してください.
3.作成したURLにアクセスし,Clinical Questionに関連する論文を抽出,リストアップしてください.
4.それらの論文についてエビデンスを要約してください.
■同じchatGPTを使用している検索可能なツールとしてWebchatGPT,BingAI,PerplexityAIがあり,どれも一長一短ある.もっとも有料なのはGPT-4のブラウジング機能(月$20)だけなので,無料で検索をしたいならそれ以外を使う方がいいだろう.
(1)vs WebchatGPT
■WebchatGPTはGoogle Chrome拡張機能である.chatGPTにウェブアクセス機能を付加させることができ,質問文をもとにAIがGoogleが検索を行い,その検索結果を踏まえた質問文が自動的に入力され,ChatGPTが引用つきで要約を回答する(エビデンス集約機能).またタグを使用することで,特定の検索エンジン(PubMedなど)やホームページ内容取得を前提とした質問が可能で,ウェブアクセスの際に引用するソースの数,引用する期間(過去1週以内,1か月以内,1年以内など),検索対象国などを指定できる.
■ただし,引用するソースの数が多いとトークン数制限にひっかかるため,実際に指定するソースの数は5つ程度にとどめる必要がある.また,検索内容からGoogle検索結果をプロンプトに入力することで回答を生成するため,ウェブアクセス機能のon/offの使い分けが必要で(自由度の高い会話をするならoffにする必要があるが,その間ウェブアクセスはできない),融通が効きにくい部分がある.また,Chrome拡張機能はデスクトップ限定であり,iPhone/iPadでは使用できない.
■この点,GPT-4のブラウジング機能は,引用ソース数に制限はなく,GPT-4との通常対話にウェブアクセス結果を反映させることができる.また,iPhone/iPadで使用可能である.
(2)vs BingAI
■BingAIはMicrosoft社のEdgeをベースにし,GPT-4モデルを搭載した対話型AIである.通常は有料のGPT-4を無料で使用できる点は有用である.ただし,同じGPT-4といっても,BingAIが使用しているのは2023年5月時点ではGPT-4のテスト版である.また,chatGPTではより多くのデータを処理するように設計されており,一方のBingAIはプロンプトの文字制限の上限値が低い.また,出力される回答については,BingAIは機械学習した訓練データよりもウェブからの結果を優先するように設計されているため,回答の精度に違いがでてくる.
(3)vs Perplexity AI
■Perplexity AIはopenAIが開発した検索エンジンで,様々なソースからの情報を要約して質問文に回答することが可能である.検索精度が高く,フィルタリング機能(学術,ニュース,YouTube,Reddit,Wikipedia,Wolfram|Alphaから選択)も搭載している.また,2023年5月下旬より,1日5回ではあるがGPT-4を活用したcopilot機能も搭載され,ユーザーからの質問に隠された内容や意味を理解し,より正確でカスタマイズされた回答を提供することが可能である.具体的には,質問を再度明確化するための追加情報を求める.
■一方で,Perplexity AIが提示するソースは5~6個までであり,網羅的検索はできない.また,論文検索目的でPubMedに限定した検索を要求するとうまくいかないことが多い.また,検索に特化しているため,ChatGPTほど言語生成タスクに長けてはおらず,チャット機能も有していない.このように検索精度ではGPT-4ブラウジング機能を上回るが,対話機能を重視して活用するならGPT-4ブラウジング機能の方がよいだろう.
(4)その他
■Googleが開発したBardも対話型AIであるが,残念ながら精度が低く,ソース提示もできないため,まだ論文検索として使用できるレベルでは到底ない.
5.その他の論文検索AIについて
■論文検索に特化したAIにはConsensus,SciSpace,Elicitがあり,特化しているぶん検索精度は上であるが,どれも対話型AIではない(SciSpaceは1つの論文を読み込ませた上でその論文についての対話は可能である).対話による自由度の高い質問・要求を繰り返し行いたいならGPT-4ブラウジング機能,BingAI,webchatGPTを用いた方がよい.論文検索AIについては以下にまとめているので参照されたい.
医学領域でのAI活用(1)医学論文検索
EARLの医学ノート
https://drmagician.exblog.jp/30307232/