RAG とは?
Retrieval-augmented generation (RAG) は、ここでのすべての根拠に基づく回答の背後にあるパターンです。モデルが学習中に記憶した内容に頼るのではなく、リクエスト時に関連ドキュメントを取得し、それらでプロンプトを拡張することで、モデルがその新しく検証可能なコンテキストから回答を生成します。 その取得ステップこそが、AI Search が提供するものです。Web があなたのナレッジベースになり、始めるためにベクトルデータベースを構築・保守する必要はありません — 検索呼び出しが該当箇所を返し、LLM が残りを行います。後で自分のプライベートドキュメントに対して取得を行いたくなった場合も、同じ 3 ステップの形が適用できます。Web 検索をベクトルストアに置き換えるだけです。 RAG は、素のモデルでは提供できない 3 つのものをもたらします。- 鮮度 — 回答は、モデルの学習カットオフ後に公開されたコンテンツを反映します。
- 出典表示 — すべての主張は、ユーザーが確認できるソース URL に紐づけられます。
- ハルシネーションの低減 — 取得したテキストにモデルをグラウンディングすることで、事実をでっち上げるのを防ぎます。
グラウンディングの仕組み
1 回の RAG ターンは 3 つのステップに従います。- 質問に関連するページを Web で検索(取得)します。
- 必要なコンテンツ — スニペットまたはページ全文 — をプロンプトに抽出(拡張)します。
- そのコンテンツを LLM に渡し、出典を引用するよう依頼して、回答を合成(生成)します。
プロバイダーに回答を書かせる
最速の方法です。Tavily の Search は、次を設定すると LLM 生成の回答を返します。include_answer, Exa は専用の Answer エンドポイント。1 回の呼び出しで、オーケストレーションは不要です。
取得してから、LLM で統合する
これにより完全に制御できます。ソースを検索し、その結果を LLM API に、そのコンテキストのみを使用して回答し、各主張に引用を付けるよう指示します。/v3/exa/search および読み取り text 各結果からではなく raw_content.
検索品質のチューニング
根拠に基づいた回答の品質は、モデルよりも 何を検索するか に大きく左右されます。効果の大きい調整項目をいくつか挙げます。- 鮮度。 時間依存の質問では、日付で制約します。Tavily は
time_rangeおよびstart_date/end_date; Exa は公開していますstartPublishedDate/endPublishedDate. これにより、古くなったページがコンテキストから除外されます。 - ソースの信頼性。 使用してください
include_domains/excludeDomains取得を信頼できるソース(公式ドキュメント、信頼性の高い出版社)に制限し、低品質なサイトを排除するために。 - トピックのヒント。 Tavily の
topic(news,finance,general) と Exa のcategoryエンジンを適切な種類の結果へ導きます。 - コンテキストの適正化。 抽出テキストを制限します(Tavily
chunks_per_source, ExamaxCharacters) モデルのコンテキストウィンドウやトークン予算を使い切らずに、十分なシグナルを渡せるようにします。
Search vs. extract vs. crawl
ニーズに合った取得プリミティブを選択してください。- Search — 質問があり、関連ページを発見する必要がある場合。デフォルトの出発点です。
- Extract / Contents — URL がすでにわかっていて、それらからクリーンなテキストを取得したい場合。固定されたドキュメントセットに基づくグラウンディングに適しています。詳しくは Tavily Extract および Exa Contents.
- Crawl / Map — サイト全体またはセクションを、リンクをたどりながら取り込みたい場合。オフラインでナレッジベースを構築するのに適しています。詳しくは Tavily Crawl および Tavily Map.
本番環境に持ち込む
- 空の結果を処理する。 検索で関連するものが何も返らない場合は、でっち上げるのではなく、答えられないとモデルに言わせます。上記のシステムプロンプトはこれを行います。
- 可能な場合はキャッシュする。 同一のクエリは似た結果を返します。取得をキャッシュするとコストとレイテンシが削減されます。
- レート制限に注意する。 取得と LLM 呼び出しは別々に制限されます — 検索リクエストが LLM クォータを消費することはありません。次の場合はバックオフする
429どちらの場合も同様です。詳しくは LLM のレート制限 LLM 側用。 - キーはサーバー側に保持する。 ここでは Novita key がすべての呼び出しを認証します — クライアント側コードに含めて配布しないでください。