はじめに
NTT西日本の青木と申します。 生成AIに関する案件を推進しております。 案件推進の中でRAGの精度検証をしましたので知見を共有できればと思いこちらの記事を執筆いたしました。 本記事ではRAGの精度を向上させる7つの方法についてご紹介いたします。 本記事は2025年11月の情報に基づきます。
本記事についての注意事項
- 本記事はRAG(Retrieval Augmented Generation)に関する一般的な情報をまとめたものであり、 特定のサービスや製品を対象としたものではありません。
- ご利用の生成AIチャットサービスによっては、 本記事で紹介する方法をそのまま試せない場合があります。
- 記事内の表や比較内容は、筆者が実施した検証結果および主観に基づいており、 すべての環境・ユースケースで同様の結果を保証するものではありません。
対象読者
- 生成AIを用いたRAGの検証を実施している方
- 業務でRAGを使用しているが精度が上がらず困っている方
- 社内で生成AI推進を実施している方
背景・目的
2022年にGPT-3.5が搭載された対話型生成AIサービスChatGPTが登場し、2025年に至りビジネスにおいてもさまざまな用途で生成AIが使われております。 その中でも、RAGは多く使用されている用途の一つです。 RAGとはRetrieval Augmented Generationを指し、日本語では「検索拡張生成」と訳されます。 生成AIに外部情報の検索を組み合わせることで、モデルが持つ情報の限界を超えた専門知識や最新情報に基づく回答を生成することが可能になります。 RAG機能を具備している生成AIチャットサービスも一般的になってきました。
RAGの利用用途
具体的なRAGの用途としては下記のようなものが挙げられます。
- 社内ルールとヘルプデスク
- 社内規定や業務マニュアルを素早く検索・参照し、問い合わせ対応を自動化することで業務を効率化
- カスタマーサポート
- 製品情報や過去のトラブルシューティング事例をもとに、顧客の質問に即座に対応し、カスタマーサービスの質の向上
- 専門業務の支援
- 市場動向や消費者データを分析し、事業戦略に活用
生成AIの活用が進むと同時に、RAGの活用を進めているもののなかなか精度が上がらず業務に活用できない方もいるのではないかと推測します。 本記事ではRAGの精度を向上させる7つの方法についてご紹介します。 手動で試すのも、プログラムで試すのも良いかと思いますのでご検討ください。
RAGの仕組み
まずはRAGの仕組みについて確認していきましょう。 前述の通り「検索拡張生成」と訳されるこの技術は生成AIに外部情報の検索を組み合わせることで、モデルが持つ情報の限界を超えた専門知識や最新情報に基づく回答を生成することができる技術です。 これがどのように実現されているのかを確認しましょう。

上記の画像では交通費精算方法について生成AIに質問しています。 なお、RAGを使用した場合は、社内の交通費申請方法のマニュアルを参照できるようにしています。 RAGを使用しない場合は一般的な交通費精算について回答していますが、RAGを使用した場合は社内の交通費精算について回答することができます。 RAGを使用した場合に、行われている処理を詳しく確認していきましょう。
RAGの処理

RAGで行われている処理は上記の画像の通りになります。
- ユーザーが質問をする
- ユーザーの質問をデータベースで検索
- ユーザーの質問とデータベースの検索内容を生成AIに入力
- ユーザーの質問とデータベースの検索内容をもとに生成AIが推論し、出力を生成
- 生成AIが回答をする
生成AIはユーザーの質問に関する情報をデータベースから取得し、それを基に回答を生成します。 次にデータベースには何が入るのかを確認しましょう。
データベースに登録される情報
データベースには社内の交通費精算に関するファイルが登録されています。 このファイルがどのようにデータベースの中に登録されているかを確認してみましょう。

- 交通費申請方法.pdfのテキストをチャンク単位で分割
- 分割したチャンクをベクトルデータに変換
- データベースに分割したチャンクと変換したベクトルデータの両方を登録
チャンクとは、大量のテキストを効率的に扱うため、適切なサイズに分割された単位です。 例として10,000文字程度の文章があったとします。 これを1,000文字ずつのチャンクに分けると合計10チャンクになるといったイメージです。 ファイルをチャンク単位で分割し、ベクトルデータに変換して、チャンクとベクトルデータの両方をデータベースに登録しています。 ベクトルデータとは何かをここでは簡単に紹介します。
ベクトルデータとは
RAGにおけるベクトルデータとはテキストや画像、音声などの非構造のデータを数値の配列(ベクトル)に変換したものです。 下記のようなイメージですね。
- 例:ある文書をベクトルデータへ変換した結果
数値化して何が嬉しいかというと、ベクトル空間上で近いテキスト同士は意味的にも近いことです。 このベクトルデータは検索に使用します。 従来の検索は「キーワード検索」が主でした。 「キーワード検索」は検索ワードが検索対象に含まれている場合は有効に働きますが、意味が近いが単語としては異なるワードの検索を行うことができませんでした。
- 例:検索キーワード「請求日 締め日 変更」
- この3単語を含むFAQやマニュアルは検索可能だが、「請求サイクル」や「支払条件の更新」など表現が違う記事はヒットしづらい
ベクトルデータの検索「ベクトル検索」を行うことで意味が近いテキストを検索することができるようになりました。
RAGの精度とは
ここまででRAGの仕組みについて説明いたしました。 一度、当初の目的の「RAGの精度を上げる」に立ち戻って考えてみましょう。 「RAGの精度を上げる」とは具体的には何を指すのでしょうか?
RAGには大きく2つの精度があります。
- 検索精度:ユーザーの入力に対して、正しくチャンクを取得できているかの精度
- 回答精度:生成AIがチャンクを正しく理解し、ユーザーの質問に対する回答を生成できているかの精度
この2つを正しく理解せずに闇雲に精度向上のアプローチを行っても、RAGの精度を改善することはできません。 ここまでのRAGの仕組みをもとにRAGの精度を上げる7つの方法について確認していきましょう。
RAGの精度を上げる7つの方法
ここからは具体的にRAGの精度を上げるための7つの方法について確認していきましょう。 大きく7つあります。(細かく書くとキリがありませんので、大分類として記載しています。) それぞれの方法について詳しく確認していきましょう。
| アプローチ | 概要 | 稼動コスト | 有効度 | 検索精度に寄与 | 生成精度に寄与 |
|---|---|---|---|---|---|
| ①. 生成AIモデルの変更 | より高性能なモデルへの切り替え | 高 | 高 | - | ◎ |
| ②. RAGとして登録するファイルの加工 | ドキュメントの構造化、不要情報の削除 | 高 | 高 | ◎ | ◎ |
| ③. チャンク分割方法の変更 | セマンティック分割、固定長、文書構造ベースなど最適化 | 中 | 中〜高 | ◎ | △ |
| ④. 検索方法の変更 | キーワード検索、ベクトル検索、ハイブリッド検索 | 低 | 高 | ◎ | - |
| ⑤. システムプロンプトの変更 | 指示の明確化、出力形式の指定、役割の定義 | 低 | 高 | - | ◎ |
| ⑥. 生成AIパラメータの変更 | Temperatureの調整 | 低 | 中 | - | ◎ |
| ⑦. 質問内容の変更 | 質問内容を具体化 | 低 | 中 | ○ | ○ |
- 稼動コスト:低<中<高(実装・運用のコストや使用料)
- 有効度:低<中<高(改善効果の大きさ)
- 寄与度:-(影響なし)<△<○<◎
①. 生成AIモデルの変更
使用する生成AIモデルの変更は生成AIの回答精度に寄与します。 正しくチャンクを検索できているのに回答を正しく生成できない場合は生成AIのモデルを変更してみましょう。 特に、チャンクの内容が複雑な場合はモデルを変更することで回答できる可能性が高まります。 使用できる最新のモデルに変更してみてください。
②. RAGとして登録するファイルの加工
RAGとして登録するファイルの加工はチャンクの検索精度、生成AIの回答精度の両方に寄与します。 この方法は表や図を含む場合に非常に有効です。 ファイルに表や図が含まれる場合、生成AIが正しく意味合いを理解できないことが多いです。 その場合には表や図をテキスト化し、チャンク化しましょう。 生成AIが理解しやすい形式にマークダウン形式があります。 マークダウン形式についてはこの記事では紹介しませんが、検索していただくと記載方法が多く出てきますので参考にしてみてください。 (ただし、この方法は非常に手間がかかる方法です。重要なファイルを登録したい場合に試すことを推奨します。)
③. チャンク分割方法の変更
チャンク分割方法の変更はチャンクの検索精度、生成AIの回答精度の両方に寄与します。 生成AIのアプリ上で変更できないこともありますので、ご自身で使用されているアプリをお確かめください。 チャンク分割にはさまざまな分割方法があります。
- 文字数分割
- 決められた文字数で分割する方法(例:10,000文字のテキストの場合1,000文字単位で10チャンクとなる)
- ページ数分割
- ファイルを分割する際に1ページ毎にチャンク化し、データベースに登録
- セマンティック分割
- ファイル内のテキストを意味や関連性毎に分けていく手法
理想のチャンク分割方法はセマンティック分割です。 ファイルの中で関連性がある部分毎にチャンク分割することで、検索精度、回答精度が向上します。 文字数分割やページ数分割の場合、文章が途中で区切られてしまい、生成AIに正しく情報を入力できない場合があります。 データベースに登録したチャンクの情報を確認できる場合は、関連する情報が一つのチャンクとして含まれているかを確認してください。
④. 検索方法の変更
検索方法の変更はチャンクの検索精度に寄与します。 こちらも生成AIのアプリ上で変更できないこともありますので、ご自身で使用されているアプリをお確かめください。 検索方法としては「キーワード検索」、「ベクトル検索」が一般的です。
- キーワード検索:文字列の一致度や頻度から関連度スコアを検索して順位付けする手法
- ベクトル検索:テキストや画像などのデータを数値化し、意味がどの程度近いかを測って関連度を出し順位付けする手法
一部のクラウドサービスを使われている場合は、「キーワード検索」と「ベクトル検索」を組み合わせた「ハイブリッド検索」も使用できる場合があります。 ハイブリッド検索が最も精度が高いとされていますが、用途によっては変更することで精度が高まる場合もあります。 例えば、入力ファイルの中身を知っている場合です。 ファイルの中に何が記載されていたか、キーワードレベルで認識している場合はキーワード検索のほうが良いですね。 記載されているキーワードを含めた生成AIに入力することで、求めている情報が書かれているチャンクを取得できる可能性が高いでしょう。 逆にファイルの中身をよく知らない場合は、ベクトル検索を含めたほうが良いですね。
⑤. システムプロンプトの変更
システムプロンプトの変更は生成AIの回答精度に寄与します。 システムプロンプトとは生成AIへの指示文章を指します。 生成AIに行わせるタスクの詳細を記載しましょう。 記載方法は下記のように「役割」、「指示」、「出力形式」を記載するようにしてください。
# 役割 あなたは経理部に所属するエキスパート社員です。 # 指示 ユーザーからの質問に対して明瞭にわかりやすく返信を行ってください。 # 出力形式 - 注釈や一般的な情報は不要です。 - まずは結論、その後に補足を行ってください。 - 回答が不明な場合はその旨を必ず出力するようにしてください。
⑥. 生成AIパラメータの変更
生成AIに入力する際に幾つかのパラメータがあります。 生成AIのモデルによってパラメータは異なりますが、下記のようなパラメータが存在します。
| パラメータ | 概要 |
|---|---|
| temperature | 出力のランダム性を制御。0に近いほど決定的で一貫性が高く、高い値(1.0以上)ほど創造的で多様な出力になる。一般的な範囲は0.0〜2.0。 |
| top_p | nucleus samplingとも呼ばれる。累積確率がこの値に達するまでのトークンから選択。0.9なら上位90%の確率質量を持つトークンのみ考慮。範囲は0.0〜1.0。 |
| top_k | 各ステップで考慮するトークンの数を制限。上位k個の最も可能性の高いトークンのみから選択。例:top_k=50なら上位50個のトークンのみ。 |
| max_tokens | 生成する最大トークン数。出力の長さを制限し、コストやレスポンス時間を管理。 |
| frequency_penalty | 既に出現したトークンの再出力を抑制。正の値で繰り返しを減らし、負の値で繰り返しを促進。一般的な範囲は-2.0〜2.0。 |
| presence_penalty | トークンが既に出力に現れたかどうかに基づいてペナルティを適用。新しいトピックへの移行を促進。一般的な範囲は-2.0〜2.0。 |
| stop_sequences | 生成を停止させる文字列やトークンのリスト。指定した文字列が生成されると、そこで出力を終了。 |
| seed | 再現性のための乱数シード。同じseedと設定で同じ入力を与えると、類似した出力が得られる(完全な決定性は保証されない場合あり) |
これらのパラメータは、生成AIの出力品質や特性を細かく調整するために使用されます。用途に応じて適切に組み合わせることが重要です。
いくつかパラメータがあるのですが、ここで着目すべきはtemperatureです。
temperatureとは生成AIの出力にどの程度の「ランダム性」を加えるかを決めるパラメータです。
temperatureが低いほどランダム性が低くなり、高いほどランダム性が高くなります。
社内規定などをRAGとして登録し、使用する場合はランダム性が低い方が良いので、temperatureも低くしましょう。
生成AIのアプリの初期値は真ん中であることが多いので、意外と見逃されがちな設定になります。
⑦. 質問内容の変更
ユーザーの質問内容を変更することでチャンクの検索精度、生成AIの回答精度の両方に寄与します。 質問内容はより具体的に記載するようにしましょう。 下記の2つを見比べてみましょう。
- 簡易的な質問内容
交通費の精算方法について教えて。
- 具体化した質問内容
交通費の精算方法について教えて。 出張で東京まで新幹線で行った。 領収書の格納先について教えて。
質問内容の変更については、人に聞くときと同様の考え方です。 ざっくりと質問するよりもより具体的に質問をしたほうが求めている回答は返ってきやすいです。 7つの方法の中で最もこの方法が試しやすいのでぜひ試してください。
まとめ
今回の記事ではRAGの仕組みとRAGの精度を上げる7つの方法について紹介しました。 RAGの精度には下記の2つがあります。
- 検索精度:ユーザーの入力に対して、正しくチャンクを取得できているかの精度
- 回答精度:生成AIがチャンクを正しく理解し、ユーザーの質問に対する回答を生成できているかの精度
この2つの精度を上げるためには下記の7つの方法があります。
| アプローチ | 概要 | 稼動コスト | 有効度 | 検索精度に寄与 | 生成精度に寄与 |
|---|---|---|---|---|---|
| ①. 生成AIモデルの変更 | より高性能なモデルへの切り替え | 高 | 高 | - | ◎ |
| ②. RAGとして登録するファイルの加工 | ドキュメントの構造化、不要情報の削除 | 高 | 高 | ◎ | ◎ |
| ③. チャンク分割方法の変更 | セマンティック分割、固定長、文書構造ベースなど最適化 | 中 | 中〜高 | ◎ | △ |
| ④. 検索方法の変更 | キーワード検索、ベクトル検索、ハイブリッド検索 | 低 | 高 | ◎ | - |
| ⑤. システムプロンプトの変更 | 指示の明確化、出力形式の指定、役割の定義 | 低 | 高 | - | ◎ |
| ⑥. 生成AIパラメータの変更 | Temperatureの調整 | 低 | 中 | - | ◎ |
| ⑦. 質問内容の変更 | 質問内容を具体化 | 低 | 中 | ○ | ○ |
RAGの精度が低い場合、原因は正しくチャンクを取得できているかの検索精度と生成AIがユーザーの質問に対して回答を正しくできているかの回答精度のどちらかです。 どちらに問題があるのかを見極めながら、精度向上に努めていきましょう。 まず最初に試すのは「質問内容の変更」です。 具体的な質問を行って回答が正しく返ってくるのかを確かめてみましょう。
最後まで読んでいただいて、ありがとうございました。
執筆者
青木 聡志(NTT西日本 ビジネス営業本部エンタープライズビジネス営業部所属) AIエンジニアとして生成AI案件の推進を行っております。
商標
「ChatGPT」「GPT-3.5」は、OpenAI社の商標または登録商標です。