リアルタイムRAG: ライブSQL、増分索引付けおよびフレッシュネス・テスト (2026/07/16)
リアルタイムRAG: ライブSQL、増分索引付けおよびフレッシュネス・テスト (2026/07/16)
https://blogs.oracle.com/developers/real-time-rag-live-sql-incremental-indexing-and-freshness-tests
投稿者:Wojtek Pluta | Director, Technical Product Marketing
簡潔に言うと、リアルタイムRAGでは、変更されるレコードをすべて再埋め込みするべきではありません。SQLまたはNL2SQLを使用して、現在の構造化データをリアルタイムでクエリし、セマンティック検索の恩恵を受けるドキュメントについては検索機能を使用してください。変更されるドキュメントについては、影響を受けるチャンクを段階的に更新し、バージョンとタイムスタンプを追跡し、回答が古い証拠よりも最新の証拠を優先するかどうかをテストしてください。
リアルタイムRAGに関するよくある質問は単純です。「私のデータは数分ごとに変化します。データを埋め込むべきでしょうか、キャッシュするべきでしょうか、クエリを実行するべきでしょうか、それともエージェントを構築すべきでしょうか?」
答えはデータの形状によって異なります。現在の行はドキュメントではありません。運用データは通常、運用状態を維持する必要があります。ドキュメント、トランスクリプト、サポートノート、ポリシーはインデックス化できますが、鮮度メタデータと増分更新が必要です。
主なポイント:
- 更新のたびに構造化データを再埋め込みするのではなく、リアルタイムでクエリを実行します。
- 変更される文書には増分インデックスを使用してください。
- 鮮度は、当然のこととして判断するのではなく、評価する必要がある。
RAGを本番環境に移行する際、ライブSQLによるデータ取得はいつ優先されるべきでしょうか?
簡潔に言うと、回答が現在の行数、カウント、フィルタ、日付、ステータス、権限、または結合に依存する場合は、ライブSQLを使用してください。データベースが直接的かつ決定論的に回答できる質問に対して、RAGは最初の選択肢としては適切ではありません。
リスク登録簿が5分ごとに更新される場合、すべての行を埋め込むと古いコピーが作成されます。ユーザーが未解決のリスク、期限切れの対策、現在の担当者、または件数を要求した場合、システムは最新のテーブルを照会する必要があります。
このルーティングテーブルを使用してください。
| 質問の種類 | 最適なルート |
|---|---|
| 現在のカウント、ステータス、所有者、残高、リスク、チケット | SQLまたはNL2SQL |
| ポリシーの説明、サポートノート、マニュアルテキスト | インデックス付きドキュメントに対するRAG |
| 最新情報と解説 | 事実にはSQL、説明にはRAG |
| 正確なIDと説明 | SQLまたはキーワードが先、ベクトルが後 |
主なポイント:
- 構造化された事実をベクトルのみのパスに無理やり押し込まないでください。
- SQLには、現在の状態、権限、および結合に関する組み込みの利点があります。
- NL2SQLには、依然として安全対策、結果の制限、および検査が必要である。
文書を常に最新の状態に保つにはどうすればよいか?
簡潔に言うと、ソースタイムスタンプ、チャンクハッシュ、埋め込みモデルのバージョン、現在のバージョンフラグ、および削除状態を追跡します。変更されたチャンクのみを再埋め込みします。古いバージョンと現在のバージョンを同じ評価セットでテストすることで、鮮度低下が可視化されます。
インクリメンタルインデックスは、単なるパフォーマンス最適化ではありません。それは正確性を確保するための要件です。古いデータチャンクは、誤った結果を招く可能性があります。
生産ドキュメントパイプラインには、以下の情報が記録されるべきです。
- ソースIDとソースシステム
- ソースの変更タイムスタンプ
- 摂取タイムスタンプ
- チャンクハッシュ
- 埋め込みモデル
- 現在のバージョンフラグ
- 削除または置き換えられた状態
- テナントおよびACLメタデータ
主なポイント:
- 鮮度メタデータは検索フィルターに含めるべきである。
- 変更されていないチャンクを再埋め込みすると、計算リソースが無駄になり、ノイズが発生する可能性があります。
- 削除と上書きは、取得時にも反映されなければならない。
キャッシング、MCP、およびツール呼び出しはどのような役割を果たしますか?
簡潔に言うと、キャッシュは繰り返し作業を減らし、MCPはツールを公開し、ツール呼び出しはアクションを選択します。しかし、これらのどれも古いデータを最新の状態にするものではありません。それぞれに、権限、タイムアウト、結果の制限、監査、そして鮮度維持戦略が必要です。
安定した、権限に配慮した結果を得るには、キャッシュを使用してください。ソースデータが変更された場合は、キャッシュを無効化してください。アシスタントがデータベースを照会したり、APIを呼び出したり、取得ツールを実行したりする必要がある場合は、MCPまたはツール呼び出しを使用してください。各ツールは、機能を限定し、監査可能な状態に保ってください。
主なポイント:
- ツール呼び出しはルーティングであって、ガバナンスではない。
- MCPには、範囲を限定したツールと追跡可能な成果物が必要です。
- キャッシュの無効化は、ソースコードの変更イベントと連動させるべきである。
これをOracle AI Databaseで実装するにはどうすればいいですか?
簡潔に言うと、ライブ構造化データにはSELECT AIまたはアプリケーション制御SQLを、ドキュメント検索にはOracle AI Vector Searchを、キーワード検索とセマンティック検索の両方が重要なハイブリッド検索にはOracle AI Vector Searchを使用してください。ソースタイムスタンプ、バージョンフラグ、テナントフィルタ、およびACLはデータベースパスに保持してください。
役立つドキュメントと実行可能なアセット:
- Select AIについて
- Oracle AI Vector Search ユーザーガイド
- ハイブリッド検索を理解する
- DBMS_VECTOR_CHAIN
- RAG評価ノートブック:oracle_rag_with_evals.ipynb
主なポイント:
- 最新の構造化データには、ライブSQLを使用してください。
- 文書証拠の検索には、ベクトル検索とハイブリッド検索を使用してください。
- 鮮度フィルターは、プロンプト内ではなく、データの近くに配置してください。
鮮度を確かめるにはどうすればいいですか?
簡潔に言うと、古い証拠と新しい証拠の両方が存在するような検証問題を作成します。システムは最新の記録または最新の文書バージョンを選択して引用し、ユーザーが明示的に履歴を要求しない限り、古い証拠は無視する必要があります。
鮮度検査には以下が含まれるべきである:
- 最近更新された行
- 古いドキュメントバージョン
- 削除された文書
- 廃止されたポリシー
- キャッシュされた回答の無効化
- ユーザーが現在の状態を要求しています
- ユーザーが過去の状態を要求している
主なポイント:
- 鮮度は、ユーザーが認識できる品質指標である。
- 評価対象には、意図的に古い証拠を含めるべきです。
- 最新の証拠と過去の証拠を区別できないシステムは、リアルタイムシステムとは言えない。
次に何をすればいいですか?
各質問タイプを、ライブSQL、ドキュメント検索、ハイブリッド検索、またはエージェントツールの使用にマッピングします。次に、データ取り込みを拡張する前に、鮮度チェックセットを作成します。システムが最新データと古いデータの比較テストに合格できない場合は、リアルタイムRAGとして公開しないでください。
コメント
コメントを投稿