LLMの回答を拡張する技術 #PERSOL CAREER Advent Calendar2025

1. ごあいさつ

はじめまして。 はたらく未来図構想統括部 JobQ 部でエンジニアをしている宮崎です。
普段はインフラエンジニアとして、IaCでコード修正したり、今後JobQの開発を盛り上げるため、Four Keys、SLI/SLOの導入を目指し奮闘しております。

外部データを利用して、LLMの回答の精度を向上させるための技術に関する記事です。

2. 普通にLLMを使用する場合

普通にLLMを使用する時の画像
普通にLLMを使用する時

ユーザーが質問を投げかけると、LLMは事前に学習済みのデータを元に回答を生成します。
しかし、このデータは膨大であり、事実より統計的に「この文脈ではこの単語が続く確率が高い」 という予測が優先されてしまい、誤った回答、事実と異なる情報を断定的に述べる可能性があります。
そこで、回答してくれる内容を事実に近づけるようにする努力が人間には必要です。

3. LLMを拡張する技術

3-1. LLMが外部データを見れるようにする

下記はLLMの事前学習内容に手を触れないので、破壊的忘却(前に学習したことを忘れてしまう)がありません。

  • RAG(検索拡張生成)
    • 社内資料、PDF、画像などの非構造化データ、構造化データを知識ベースとして事前に提供し、LLMが知識ベースを参照して回答を生成する(静的データの提供)
  • TAG(ツール拡張生成)
    • ツール(計算ツール、コードの実行結果、外部APIなど)を呼び出し、返ってきたレスポンスを元に回答を生成する(動的データを生成可能)

3-2. LLM自体をより自分に合わせる

  • ファインチューニング
    • 事前学習を終えたLLMに、追加で学んで欲しい内容を学習させ、訓練してもらい強化します。
    • しかし、再度勉強すると今まで勉強した内容を忘れてしまうこと(破壊的忘却)もあります。
  • PEFT(Parameter-Efficient Fine-Tuning)
    • ファインチューニングの破壊的忘却を回避する方法です。
    • PEFTで主流のLORAでは、既に学習済みの内容を保持したまま、少ない勉強量を追加学習し、強化します。

その他にも多数の手法がありますが、今回は代表的なものに絞りました。

4. 3-1を深掘る

3であげた拡張する技術から、普段の業務でもよく使用しているLLMが外部データを見れるようにする技術を深掘ります。

4-2. RAG(Retrieval-Augmented Generation)

  • 日本語で検索拡張生成と言います。
    RAGの簡単な仕組み
    RAGの簡単な仕組み

4-2-1. 流れ

  1. 事前に知識データを準備しておきます。
  2. ユーザーが質問
  3. ベクトルストアは、既にある埋め込まれたデータから、最も類似するデータを探し出します
  4. 3をLLMに渡します
  5. LLMは4で渡ってきたデータを優先し、事前学習データと一緒に回答を生成します。

事前に準備されているデータを優先するため、普通にLLMに聞くよりも精度の高い回答を作成してくれるようになります。 そのため、外部公開されていない社内文書を、いちいち人間が探さずLLMがいい感じに回答を作ってくれます!

4-3. TAG(Tool-Augmented Generation)

  • 日本語でツール拡張生成と言います。
  • Function CallingTool Useの仕組みを使用して実現されています。
    TAGの簡単な仕組み
    TAGの簡単な仕組み

4-3-1. 流れ

  1. 事前に定義書を作成し、こういう質問が来たらこのサイト、このツール、このデータベースを見てねと定義します。
  2. ユーザーが質問
  3. LLMは質問内容から、外部情報が必要かどうかを判断します
  4. 必要な場合は別途、定義書から外部情報を取得し、回答します
  5. 必要でなかったら、事前学習データのみで回答します

RAGが静的なデータから知識を補充するのに対して、
TAGは動的にデータを取得し、回答を生成したり、適切に定義していれば流れ作業を自動化することも可能になります。

好きな歌手のライブがいつも抽選外れるので、
ライブの開催情報が発表されたことをキャッチするバッチを作って、
そのバッチでTAGを動かし、自動的に予約ボタンをクリックするなどができそうです。

5. RAGとTAGの使い分けは?

ここまで、簡単な説明を書いてきましたが、
どう使い分けたら世の中が良くなるでしょうか?

5-1. RAGが向いてる

  • 社内の膨大な資料から情報を探したりまとめたりする必要がある時など
  • 社内の開発ルールを守りながら開発したい時など
  • このデータよくわからないから、とりあえずAIに解説して欲しい時など
  • システム障害が発生したら、過去に同じようなことがなかったか調べて、改善策を考えて欲しい時など

5-2. TAGが向いている

  • 今週の天気が晴れ(リアルタイムの必要がある)だったら、友達に遊びに行こう!と連絡しておいてなど
  • スケジュールを見てAさんが休みだったら、MTGを次の日にずらしてなど

5-3. ハイブリットアプローチ

RAGとTAGのいいところどりで何かできないでしょうか?

  • 社内のことで同じ質問をいろいろな人からされる時
    • 社内ルールの資料をRAGで、それを元にTAGでSlackで自動返信!など
  • システムに攻撃された形跡があったら、IPのブラックリストをRAGで、TAGでTerraformでブロックするIPを追加するなど

色々、アイディアが浮かんできそうな予感がしてきました。

6. 使用上の注意点

  • RAGを使用する場合、既に存在するデータを提供します。
  • この知識ベースをLLMが参照し回答を生成するため、著作物の改変になる可能性が高いです。 そのため、パブリックドメイン、クリエイティブ・コモンズ・ライセンス、著作権者から使用許可をもらっているもの(使用許可されている社内データ)などに限定して安全に使用する必要があります。

7. まとめ

今回はLLMの回答精度を上げる技術と、使用上の注意などを書きました。
AIを使って、人間が快適に人生を歩める生活になったらいいなと思ってます。
普段インフラ関係の業務ですが、久々にFigmaを使って図を作りました。
JobQ部では、さまざまなユーザーさんからの質問回答が見れるので、是非とも開いていただけたら嬉しいです!

JobQTown[ジョブキュータウン]|キャリアや転職に特化した匿名相談サービス

*

宮崎 雄治 Yuji Miyazaki

カスタマーP&M本部 はたらく未来図構想統括 JobQ部 エンジニアリンググループ エンジニア

2024年9月にパーソルキャリアに中途入社。MIRAIZでの開発を経て、2025/10よりJobQ部でインフラを担当している。

※2025年12月現在の情報です。