⚙️

「AIワークフロー」で実現する論文調査の自動化

に公開

1. はじめに

はじめまして、株式会社松尾研究所にてインターンをしております、yutohubと申します。

松尾研究所で開催されたAIハッカソンで発表した「論文調査くん」というツールについて、実際にデプロイを行い社内で公開しました。この経緯や、AIワークフローの実際の導入事例と活用方法という観点からまとめたいと考えています。

https://zenn.dev/mkj/articles/8c080eb8ea2fd2

「論文調査くん」は、経験豊富なデータサイエンティストが行う論文調査や技術調査をツール化することで、経験の浅いインターンでも同等の調査が行えるようにすることを目的として開発されました。当時は「deep research」という概念は存在しませんでしたが、特定の情報源に絞った調査が可能である点や、カスタマイズ性に優れている点が特徴です。

https://openai.com/index/introducing-deep-research/

2. シンプルなAIワークフローで解決

まずは背景知識として、AIワークフローとAIエージェントの違いについて簡単に触れておきます。
Building effective agents|Anthropic」では、AIワークフローとAIエージェントは以下のように定義されています。

  • AIワークフロー
    • コンピューターが決められた順序やルール(コード)に従って動作する仕組みです。
    • 例えば、決まった作業手順やチェックリストに沿って仕事を進める様子を指します。
  • AIエージェント
    • コンピューター自体がその時々の状況を判断し、適切なツールや手法を自ら選択して仕事を進める仕組みです。
    • つまり、より自由で自律的な動作が可能となります。

また、AIエージェントを採用する場合、複雑性やコスト、レイテンシーといった点でのトレードオフが伴います。そのため、実際には多くの場合、AIワークフローや単一のLLM呼び出しの最適化だけで十分とされています。

「論文調査くん」も、初期段階では検索と単一のLLM呼び出しのみで実装されていましたが、カスタマイズを進める中で、いわゆるAIワークフロー的な実装へと進化していきました。

こちらの動画も面白いのでおすすめです。

https://www.youtube.com/watch?v=LP5OCa20Zpg

3. 実装したAIワークフローの概要

AIワークフロー

「論文調査くん」のAIワークフローでは、LLM(大規模言語モデル)が以下の3つの処理に利用されています。

  1. クエリの翻訳(LLM Call 1)
    • ユーザーが入力した日本語などのクエリを英語に翻訳するために、LLMを呼び出しています。
  2. クエリのキーワード変換(LLM Call 2)
    • ユーザーのクエリに基づいて、arXiv APIに適したキーワードを生成するためにLLMを利用しています。
  3. 回答生成(LLM Call 3)
    • 検索結果(参考資料)をもとに、LLMを使用して質問に対する回答を生成しています。

AIワークフローに限った話ではありませんが、 自動化したいタスクは適切に分解し、正確に実装する必要があります。 以下の動画が良い例ですね。

https://www.youtube.com/watch?v=cDA3_5982h8

4. 構造化出力を利用した安定性の向上

AIワークフローでは、LLMのハルシネーションや指示追従能力の不足により、想定外の出力が発生することがあります。その結果、システム全体の安定性が損なわれる恐れがあるため、注意が必要です。

そこで、構造化出力とプログラムによるチェックを組み合わせてLLMの出力を制御する手法が、一度のタスクで複数のLLM呼び出しを行うようなAIワークフローやAIエージェントにおいて求められます。

  • 構造化出力のメリット:
    • 出力結果のフォーマットが統一されるため、後続処理が容易になります。
    • 不確実な回答のばらつきを抑え、エラーの原因を最小限に抑制できます。

このアプローチにより、システム全体の安定性が向上し、ユーザーに対して一貫したサービスを提供できるようになります。

https://platform.openai.com/docs/guides/structured-outputs

5. 論文調査くんの実装詳細

「論文調査くん」は、以下の各処理段階に分割され、各フェーズでLLMの力を活用しています。

  1. 情報源の選択
    • 複数の学術データベースや論文リポジトリから、最適な情報源を選定する。
    • ユーザーの分野や関心に基づき、情報源を選択する。
  2. ユーザークエリの変換
    • ユーザーの入力を、各情報源に適したクエリ形式に変換するためにAIを活用する。
    • 出力の品質と信頼性を向上させるため、構造化出力の仕組みを導入する。
    • 例: arXiv APIの検索に適したクエリへの変換、日本語のクエリを英語に翻訳する。
  3. 複数の情報源からの検索
    • 選択された情報源から、論文を検索する。
  4. 最終回答の生成
    • 統合された情報に基づき、AIがユーザーにとって分かりやすい最終回答を生成する。

これらの各処理が連携することで、ユーザーは経験豊富なデータサイエンティストが行うように、複数の情報源およびそれぞれに適したクエリを駆使して、論文調査を実施することが可能となります。

6. おわりに

本プロジェクトでは、論文調査ツールの実現にあたり、AIワークフローを活用しました。実装の過程では、作業効率と実用性を高めるために、以下の3つの工夫を行いました。

  1. LLM APIの直接利用
    • フレームワークに頼らず、LLM API(OpenAIのAPIなど)を直接活用することで、送信するプロンプトや応答が明確になり、細かいチューニングが容易になりました。数行のコードで必要な機能を実装できるため、シンプルかつ柔軟な開発が実現しました。
  2. クラウドベクトルデータベースの利用
    • Qdrant Cloudなどのクラウドベクトルデータベースを利用することで、類似文書検索の実装が非常に簡単になりました。これにより、ベクトルデータベースの運用が手間なく行え、スムーズなデプロイが可能となりました。
  3. Slack BotやHugging Face Spaceの採用
    • これらのツールを利用することで、開発したツールを社内に素早く展開できました。ユーザーからのフィードバックを迅速に取得できたため、サービス改善にも即座に反映できました。

なお、社内ツールとして運用する場合は、迅速な実装環境の整備に加え、効果検証のためのログ収集、フィードバック、アンケート調査などの体制構築をおすすめします。社内でどの程度使用されているかが把握できれば、さらなる機能向上やカスタマイズが容易になります。

今後も、AIワークフローを活用し、より高度なツールやアプリの開発に取り組んでいく予定です。

松尾研究所テックブログ

Discussion