Retrieval-augmented generation(RAG)は、よく次のような簡潔な図で紹介されます:

documents -> embeddings -> vector database -> LLM

Enter fullscreen mode Exit fullscreen mode

これは有用な出発点ですが、アーキテクチャの一部をシステム全体のように見せてしまうことがあります。

優れたRAGデータベース設計は、ベクトルストレージ以上のものをカバーする必要があります。

本番環境向けのRAGアプリケーションでは、元のドキュメントの保存、テナント境界の強制、正確な製品名の検索、日付によるフィルタリング、会話の記憶、古いコンテンツの無効化、複数のデータソースの統合、最終プロンプトのトークン予算内への収めなどが必要になる場合があります。

単に埋め込みを保存するだけでは、データベースは「RAGデータベース」にはなりません。異なるデータベースモデルが検索の異なる部分を解決します。

この記事では、リレーショナルデータベース、ドキュメントデータベース、キャッシュ、全文検索エンジン、ベクトルデータベースがRAGで果たす役割について考察します。また、アプリケーションが中心点はわかっていても回答の正確な境界がわからない場合に、有用なコンテキストの近傍を見つけるという、類似度だけでは表現しにくい検索問題について検討します。

実用的なAIユースケースの中でも、このパターンはカスタマーサポート、営業向けの業務効率化AIツール、社内ナレッジアシスタント、AIプログラミング自動化、AIエージェント開発に現れます。内部データを用いたAIアシスタント開発でも、生成された回答と同様にアクセス制御や情報源の鮮度が重要になります。

RAGの仕組みとファインチューニングとの違い

RAGはリクエスト時に外部情報を取得し、選択した証拠をモデルのコンテキストに配置します。ファインチューニングはモデルの重みを変更します。したがって、実用的なRAGとファインチューニングの違いは、知識がいつ・どこで導入されるかという点にあります。

RAGは知識がモデルの外部に残るため、更新・引用・フィルタリング・削除が容易な場合が多いです。ファインチューニングは振る舞いやスタイル、学習パターンを変更できますが、頻繁に変更されるドキュメントストアの代わりとして便利ではありません。

RAGの主な利点と欠点はこの分離から導かれます。RAGはモデルを再学習することなく最新かつプライベートな情報源を利用できますが、取り込み・検索・権限・評価・レイテンシ・運用作業が増加します。AI生成の仕組みを理解するだけでは不十分です。流暢なモデルでも、弱い・古い・権限のない証拠に基づいて回答してしまう可能性があります。

データベースの種類とRAG構築

より完全なRAGパイプラインは次のようになります:

source data
  -> ingestion and normalization
  -> document and metadata storage
  -> candidate selection
  -> lexical or vector ranking
  -> reranking and context assembly
  -> LLM
  -> answer and citations

Enter fullscreen mode Exit fullscreen mode

データベースは複数の段階に参加できます。

Responsibility Typical data
Source of truth Documents, records, revisions, users, permissions
Ingestion state Jobs, checksums, parser versions, failures
Exact filtering Tenant, category, status, language, date
Lexical retrieval Keywords, names, identifiers, error codes
Semantic retrieval Embeddings and similarity scores
Session state Recent messages, selected sources, cached results
Context assembly Related records, projections, token-bounded payloads

1つのデータベースがこれらの役割をいくつか担うことも可能です。小規模なアプリケーションでは、表に6行あるからといって6つのデータベースが必要になるわけではありません。重要なのは、ストレージエンジンを選ぶ前に検索の役割を特定することです。有用なデータベース比較は、機能の数ではなく、これらの役割から始まります。

チームがRAGの構築方法を調べる際、埋め込みモデルやRAG用ベクトルデータベースから始めがちです。より安全な順序は、まず信頼できる情報源、アクセスルール、更新プロセス、厳密なフィルタ、候補取得方法、評価計画を特定することです。ベクトルインデックスはその設計の1コンポーネントに過ぎません。

違いを具体的にするために、京都向けの旅行アシスタントを構築する例を考えます。ランドマーク、レストラン、文化施設、イベント、交通、営業時間、予約、ユーザーの旅程に関する情報を保存します。

PostgreSQLとMySQL:構造化された真実と厳密な関係

リレーショナルデータベースは、RAGシステム周りの権威あるアプリケーション状態を保持するのに最も予測しやすい場所であることが多いです。

旅行アシスタントの場合、リレーショナルデータベースは以下を保存できます:

  • ユーザーとアカウント
  • 予約
  • 保存した場所と旅程
  • テナントまたは組織の境界
  • ドキュメントバージョンと取り込み状態
  • 権限と可視性ルール
  • 構造化された営業時間とアクセシビリティフィールド

正確さが厳密な関係に依存する場合、SQLは特に有用です。プライベートな旅程が1人のユーザーに属する場合や、ドキュメントがテナント境界を越えてはならない場合、そのルールは埋め込みスコアに依存すべきではありません。

リレーショナルクエリはまず許可されたドキュメントIDを選択できます。その後、RAGパイプラインはそのドキュメントのみをランク付けできます。

SELECT document_id
FROM travel_documents
WHERE city = 'Kyoto'
  AND language = 'en'
  AND published = true
  AND valid_from <= CURRENT_TIMESTAMP
  AND valid_until > CURRENT_TIMESTAMP;

Enter fullscreen mode Exit fullscreen mode

PostgreSQLはまた、JSON、全文検索、拡張機能をサポートしています。pgvector拡張機能はリレーショナルデータと並べてベクトルを保持できるため、初期段階または中規模のRAGアプリケーションには十分な場合が多いです。

重要な違いは、ベクトル列を追加しても、権限・ドキュメントライフサイクル・メタデータ・候補選択・プロンプト構築の設計が不要になるわけではないということです。

MongoDBとドキュメントデータベース:柔軟なコンテンツレコード

取り込まれたアイテムがすでにJSONオブジェクトのような形状をしており、アイテムの種類によってフィールドが異なる場合、ドキュメントデータベースは自然な選択肢です。

ランドマークレコードには歴史・画像・座標・営業時間が含まれることがあります。レストランには料理・価格帯・予約ルール・食事制限オプションが含まれることがあります。イベントには開始時刻・会場・チケットURL・天候ポリシーが含まれることがあります。

{
  "kind": "restaurant",
  "name": "Example Cafe",
  "area": "Higashiyama",
  "cuisine": ["Japanese", "Cafe"],
  "features": {
    "indoor": true,
    "vegetarianOptions": true
  }
}

Enter fullscreen mode Exit fullscreen mode

MongoDBドキュメントは、すべてのアイテムタイプを同じ列セットに強制することなく、この形状を表現できます。メタデータとソーステキストを一緒に保存でき、アクセスパターンがわかっている場合はネストされたフィールドをインデックス化できます。

ただし、柔軟性は検索設計を不要にするわけではありません。アプリケーションは、どのコレクション・フィールド・フィルタ・レコードをモデルの候補にするかを依然として決定する必要があります。

ここでも、馴染みのあるRDBとNoSQLの違いは重要です。リレーショナルシステムは厳密な関係と制約を中心に据え、ドキュメントデータベースは柔軟なレコード形状と集約指向のアクセスを中心に据えます。ビジネスシステムの場合、NoSQLデータベースの選定基準には一貫性・認可・運用スキル・バックアップ・移行が含まれるべきで、入力データがJSONかどうかだけではありません。

Redis:短命な状態と繰り返し作業

Redisは、RAGの主要なドキュメントストアでなくても有用です。

一般的な用途:

  • 会話セッション状態
  • キャッシュされた検索結果
  • レート制限
  • 短命なエージェント状態
  • ジョブキュー
  • 重複排除キー
  • 頻繁に再利用されるコンテキストフラグメント

多くのユーザーが同じアトラクションについて似た質問をする場合、検証済みの検索結果をキャッシュする方が、パイプライン全体を再度実行するよりも安価になる可能性があります。

Redisは永続化と複数のデータ構造もサポートしますが、キャッシュには無効化ポリシーが必要です。旅行情報ではこれは明らかです。イベント・一時閉鎖・営業時間に関する回答は、キャッシュされたテキストが内部的に一貫していても誤りになることがあります。

Redisドキュメントは、単純なキーバリューキャッシュ以上のものとして説明していますが、RAGアーキテクチャにおける役割は依然として明示的に選択する必要があります。

OpenSearch:単語・フィールド・フィルタは依然として重要

埋め込み検索は語彙検索の代替ではありません。

ユーザーは正確な場所名・路線名・製品コード・法律用語・エラーメッセージ・引用句を検索します。モデルは関連テキストに対して似た埋め込みを生成するかもしれませんが、正確な識別子はしばしば語彙マッチを必要とします。

OpenSearchは以下を組み合わせることができます:

  • 全文検索クエリ
  • BM25スタイルの語彙関連性
  • フィールドフィルタ
  • 集計
  • 地理的クエリ
  • ベクトル検索
  • 検索向けダッシュボードと運用ツール

旅行アシスタントの場合、次のような質問に答えられます:

Find pages containing "Kiyomizu-dera" in English,
published in the Kyoto corpus, with an opening-hours field updated this month.

Enter fullscreen mode Exit fullscreen mode

このクエリには正確なテキスト・メタデータ・鮮度要件が含まれています。これらのシグナルは1つのベクトル距離に還元されるべきではありません。

OpenSearchドキュメントは語彙検索とベクトル指向検索の両方をカバーしており、これらの検索モードを連携させる必要がある場合に単一エンジンの選択肢となり得ます。

Qdrantとベクトルデータベース:意味的類似性

ベクトルデータベースは異なる質問を中心に設計されています:

Which stored items are closest to this query in embedding space?

これは、ユーザーとドキュメントが同じ単語を共有しない場合に価値があります。

たとえば、訪問者が次のような質問をする場合:

Where can I spend a quiet indoor afternoon learning about local history?

Enter fullscreen mode Exit fullscreen mode

有用な博物館の説明にその正確な文が含まれていない場合でも、意味的検索で候補セットに含めることができます。

Qdrantはベクトルをペイロードメタデータとともに保存し、フィルタリングされた類似度検索をサポートします。典型的なリクエストでは、まず対象となるポイントを制限し、その後残りのポイントをベクトル距離でランク付けします。

metadata filter
  -> approximate nearest-neighbor search
  -> top candidates
  -> optional reranker
  -> LLM context

Enter fullscreen mode Exit fullscreen mode

これは効果的なパターンですが、アーキテクチャ上の疑問が残ります。類似度ランキングを開始する前に、アプリケーションは適切なフィルタと検索名前空間をどのように決定するのでしょうか?

ベクトルデータベースの類似度検索アルゴリズム・インデックスタイプ・フィルタリング動作・メモリ使用量・更新パターンはすべて結果に影響します。Pinecone、Qdrant、pgvector、OpenSearchのRAG用ベクトルDB比較は、アプリケーション独自のコーパスとフィルタを用いて行うべきです。推奨ベクトルデータベースのリストは、ワークロード固有の評価に代わるものではありません。

RAGハイブリッド検索:BM25・ベクトル・リランキング

キーワード検索と意味的検索は補完関係にあります。RAGハイブリッド検索パイプラインはBM25スコアとベクトルスコアを組み合わせることで、正確な名前や識別子を可視化しつつ、意味的に関連するドキュメントを発見できます。

metadata and permission filters
  -> BM25 lexical candidates
  + vector similarity candidates
  -> merge and deduplicate
  -> reranker
  -> token-bounded context

Enter fullscreen mode Exit fullscreen mode

RAG精度向上のため、リランカーの統合は第一段階の結果数を単に増やすよりも有用な場合が多いです。リランカーは小さな候補セットをより慎重に検査でき、第一段階は再現率に最適化されたままになります。

RAGのチャンクサイズ最適化手法も重要です。小さなチャンクはマッチング精度を向上させますが、周囲の意味を失う可能性があります。大きなチャンクはコンテキストを保持しますが、より多くのトークンを消費し、関連性を薄める可能性があります。適切なチャンクサイズはドキュメント構造・検索方法・引用単位によって異なります。

LangChainやLlamaIndexなどのRAGフレームワークは、ローダー・埋め込み・リトリーバー・モデルを接続できます。LangChainのRAGセットアップサンプルは配線を示せますが、フレームワークはアプリケーションの正しい認可境界・鮮度ルール・候補範囲を決定できません。

内部検索向けのオープンソースRAGセットアップは、PostgreSQL、OpenSearchまたはQdrant、ローカルモデル、オーケストレーションフレームワークを組み合わせることができます。セルフホスティングは運用とプライバシーの境界を変えますが、同じ検索・評価決定の必要性をなくすわけではありません。

RAG精度向上と評価指標

検索品質と回答品質は別々に測定すべきです。有用なRAG評価指標には以下が含まれます:

  • recallとprecision at k
  • mean reciprocal rankまたはnDCG
  • context relevanceとcontext precision
  • groundednessまたはfaithfulness
  • citation correctness
  • answer completeness
  • retrieved tokens、latency、cost per request

Ragasなどのツールは評価の一部を自動化できますが、RAG評価ツールやチュートリアルはすべてのビジネスワークフローの正しい期待回答を定義できません。実際の質問から得られた小規模でレビュー済みのテストセットは依然として価値があります。

RAG幻覚防止策は、単に追加のドキュメントを加える以上のものを含むべきです。より強力な対策には、最新の情報源・明示的な引用・権限チェック・矛盾検出・回答を控えるオプション・知識ベースに存在しない質問に対するテストが含まれます。

RAGナレッジベースの自動更新にもバージョン管理と無効化が必要です。パイプラインは、どのソースリビジョンがチャンクを生成したか、いつ埋め込みを再構築する必要があるか、削除または期限切れの情報がキャッシュやインデックスからどのように除去されるかを把握する必要があります。

RAGセキュリティ対策と実装コスト

RAGセキュリティ対策は検索開始前から始まります。テナント分離・情報源認可・秘密情報の除去・暗号化・監査ログ・取得ドキュメントからのプロンプトインジェクション対策はすべて設計に含める必要があります。一般的なデータベースセキュリティ対策は、データベースがAIコンポーネントとして記述されている場合でも適用されます。

組織はまた、データの収集・利用をプライバシールール・業界義務・AI関連法規制・自社のAI倫理ガイドラインに適合させる必要がある場合があります。検索はデータをモデルに利用可能にしますが、そのデータを利用する権限を新たに生み出すわけではありません。

完全なRAGコスト比較には、取り込み・埋め込み生成・データベースストレージ・キャッシュ・ネットワーク転送・リランキング・LLM入力トークン・モニタリング・バックアップ・エンジニアリング時間が含まれます。小規模ビジネスにとって、平均的なAI実装コストはモデルAPIの価格だけから推測できません。

RAGコスト削減とトークン節約は候補範囲と密接に関連しています。

検索とリランキングを通じて無関係なレコードを減らすことで、データベース作業とLLM入力を同時に削減できます。ローカル展開の場合、ローカルLLMセットアップとPC要件は別途の容量決定ですが、小さな検索コンテキストは下流のメモリ・計算負荷を軽減できます。

多くのAI実装失敗は、デモが少数の成功質問でのみ評価されるために起こります。実用的なAI実装の利点は、システムが古いデータ・欠落した回答・アクセス境界・コスト制限・障害回復も扱える場合に現れます。

難しいのはしばしば候補範囲

次の質問を考えてみましょう:

I am at Kiyomizu-dera. It is raining, and I have two hours. What should I do next?

いくつかの検索方法が役立ちます:

  • 語彙検索はKiyomizu-deraに言及するページを見つけることができます
  • 地理的検索は半径内の座標を見つけることができます
  • ベクトル検索は意味的に類似した旅行アドバイスを見つけることができます
  • SQLは営業時間・権限・予約制約を強制できます
  • リランカーは結果の候補を並べ替えることができます

課題は、これらの方法のいずれかが悪いことではありません。課題は、そもそも何を候補セットに入れるかを決定することです。

有用な回答には以下が必要になる場合があります:

  • 近くのランドマーク
  • 屋内博物館またはギャラリー
  • 現在営業中のレストラン
  • 今日開催されている一時イベント
  • 交通情報
  • アクセシビリティ情報
  • ユーザーの旅程にすでに含まれている場所

アプリケーションは中心点(訪問者・Kiyomizu-dera・当日・現在の状況)を知っていますが、有用な回答の正確な境界はまだわかりません。

意味的類似性は運用上の関連性ではない

意味的に最も類似したドキュメントが、現在のリクエストにとって最も有用なドキュメントであるとは限りません。

別の日本の寺院について美しく書かれた記事は、埋め込み空間では近いかもしれませんが、2時間以内に利用できません。短い交通通知は観光に関する質問とは意味的に遠いかもしれませんが、回答には不可欠です。レストランレコードはユーザーのリクエストの単語をほとんど含まないかもしれませんが、近く・営業中・旅程に適合しているという理由で関連性があります。

RAGシステムは通常、メタデータフィルタでこれに対処します:

{
  "city": "Kyoto",
  "area": "Higashiyama",
  "openNow": true,
  "weather": "rain",
  "categories": ["restaurant", "museum", "landmark"]
}

Enter fullscreen mode Exit fullscreen mode

これは合理的です。しかし、製品が成長するにつれ、フィルタはアプリケーションレベルの検索計画になります。誰かがルール・名前空間・結合・ファンアウトリードを維持し、各リクエストのコンテキストを再構築する必要があります。

地理的距離も完全な境界ではない

質問が単に「1キロメートル以内は何か?」であれば、PostGISやOpenSearchの地理検索などの地理インデックスが直接的な解決策です。

しかし、有用な旅行コンテキストは常に円形とは限りません。

  • 川・丘・鉄道により、2つの近い地点が到達しにくくなる場合があります
  • 雨により利用可能な施設が変わります
  • 家族と単独旅行者では異なる近傍が必要になる場合があります
  • 営業時間やイベント日により利用可能なコンテキストが変わります
  • 「雨の日の京都」などの編集上のグループ化は地理的領域ではありません
  • 1つの場所が同時にエリアガイド・駅ガイド・個人旅程に属することがあります

距離は依然として重要なシグナルです。ただし、視野を定義する唯一の関係ではありません。

アプリケーションはコンテキストを再構築し続ける

従来のスタックはこの問題を解決できます。SQL結合・地理インデックス・検索フィルタ・グラフ・アプリケーションが管理するIDリスト・ベクトルランキングを使用できます。

繰り返される作業は同じ局所性の再構築です:

start from the current place
  -> identify the area
  -> find allowed categories
  -> join today's events
  -> add relevant transit
  -> add itinerary items
  -> build candidates
  -> rank candidates

Enter fullscreen mode Exit fullscreen mode

ここに欠けている操作は別のスコアリングアルゴリズムではありません。再利用可能な方法でこの以前の質問に答えることです:

What belongs in the neighborhood of this known center for this kind of request?

再利用可能な近傍をデータとして扱う

1つの設計オプションは、毎回ゼロから再構築するのではなく、その近傍を保存することです。

これには必ずしも新しいデータベースが必要ではありません。アプリケーションはSQL結合テーブル・グラフエッジ・マテリアライズドビュー・検索ドキュメント・管理されたIDリストで関係をモデル化できます。重要な変化は概念的なものです。候補範囲は一時的なクエリロジックではなく、独自のライフサイクルを持つデータになります。

観光の例では、再利用可能な近傍にはいくつかの特性が必要です:

  • 各場所は1つの正規レコードを保持する
  • 同じ場所が複数のコンテキストに現れることができる
  • 場所をガイドに追加してもペイロードをコピーしない
  • 読み取りはカテゴリ・深さ・フィルタ・制限・トークンコストで制限される
  • 近傍が選択された後も語彙またはベクトルランキングを利用できる

この関係が稀な場合は、アプリケーションコードで十分かもしれません。同じパターンがユーザー・場所・プロジェクト・製品・時間ウィンドウにわたって現れる場合、局所性を第一級の検索プリミティブにすることは有用です。

KoutenDBがこの検索パターンを表現する方法

KoutenDBは、このパターンを中心に設計されたデータベースの1つです。正規レコードには座標のようなring配置を使用し、それらの座標を横断する再利用可能なビューにはstellar可視性レンズを使用します。

インポーターまたはアプリケーションは、観光データを正規のringに保持できます:

landmarks/kyoto/kiyomizudera
landmarks/kyoto/yasaka-pagoda
restaurants/kyoto/gion
culture/kyoto/national-museum
events/kyoto/2026-07-23
transit/kyoto/higashiyama

Enter fullscreen mode Exit fullscreen mode

次に、エリア中心のビューに有用な座標をアタッチできます:

kouten stellar attach \
  --stellar=travel/kyoto/higashiyama \
  --ring=landmarks/kyoto/kiyomizudera

kouten stellar attach \
  --stellar=travel/kyoto/higashiyama \
  --ring=restaurants/kyoto/gion

kouten stellar attach \
  --stellar=travel/kyoto/higashiyama \
  --ring=culture/kyoto/national-museum

kouten stellar attach \
  --stellar=travel/kyoto/higashiyama \
  --ring=events/kyoto/2026-07-23

Enter fullscreen mode Exit fullscreen mode

アプリケーションは既知の中心から周囲のコンテキストを読み取ることができます:

kouten get --stellar=travel/kyoto/higashiyama

Enter fullscreen mode Exit fullscreen mode

または同じ視野を1つのカテゴリに絞り込むこともできます:

kouten get --stellar=travel/kyoto/higashiyama --subring=restaurants
kouten get --stellar=travel/kyoto/higashiyama --subring=culture

Enter fullscreen mode Exit fullscreen mode

同じレストランは、雨の日ガイド・駅中心ガイド・ユーザーの旅程からも可視化でき、正規ペイロードをコピーする必要はありません。

KoutenDBはパス名から地理的または編集上の関連性を推論しません。

アプリケーション・インポーター・またはキュレーションプロセスは、どの座標が各近傍に属するかを依然として決定します。データベースはその決定を保存するため、後続の読み取りでゼロから再構築する必要がありません。

これは単なるパスプレフィックスではない

ring名は意図的に読みやすいパスに見えます。親子データが自然に一緒に属する場合、階層は有用です。

しかし、パスプレフィックスだけでは1つのツリーを表します。実際のレコードは同時に複数のビューに参加します:

canonical catalog: restaurants/kyoto/gion/example-cafe
area guide:        travel/kyoto/higashiyama
weather guide:     travel/kyoto/rainy-day
personal plan:     travel/users/123/today

Enter fullscreen mode Exit fullscreen mode

各パスの下にレストランをコピーすると同期作業が発生します。1つのパスに移動すると他のビューが弱まります。一方、stellarレンズは既存の座標を横断する可視性関係を保存します。

呼び出し元は中心とコスト境界を指定します。深さ・ブランチ予算・subring・フィルタ・射影・ソート・制限により、返されるコンテキストの量を制御します。呼び出し元は回答のすべての個別レコードを列挙する必要はありません。

局所性はベクトルランキングに先行できる

局所性対応検索とベクトル検索は相互排他的ではありません。

組み合わせたパイプラインは次のようになります:

known center: user + place + time
  -> retrieve the configured local neighborhood
  -> apply current constraints
  -> vector-rank the smaller candidate set if needed
  -> rerank and enforce a token budget
  -> LLM

Enter fullscreen mode Exit fullscreen mode

ベクトルデータベースは、どの候補が意味的に近いかを尋ねます。局所性レイヤーは、どの部分のデータを最初に検討すべきかを尋ねます。

これにより、読み込まれるペイロード・比較されるベクトル・リランクされるレコード・転送されるバイト・下流で検討されるトークンを削減できます。すべてのクエリが高速になることを保証するわけではありません。アプリケーションが意味のある局所性を表現できる場合にのみ、このモデルは有用です。

データベースを検索質問に合わせる

現在のRAGトレンドではなく質問から始める場合、データベースの決定はより明確になります。

Retrieval question Natural starting point
Which exact record or relationship is valid? Relational query and indexes
Which JSON documents match known fields? Document database or SQL/JSON
Which result can be reused briefly? Cache or session store
Which documents contain these words? Full-text search engine
Which documents are semantically similar? Vector search
Which places are inside a literal radius? Geographic index
Which context is useful around this known user, place, project, or time? Locality-aware neighborhood retrieval

これらは排他的な選択ではありません。PostgreSQLが信頼できる情報源として残り、OpenSearchが語彙検索を扱うこともあります。ベクトルデータベースが意味的に類似したチャンクをランク付けするかもしれません。KoutenDBは局所性対応ドキュメント・検索ストアとして、またはより早期の候補選択段階として使用できます。

小規模なシステムはこれらの役割を十分にカバーする1つのデータベースを選択できます。大規模なシステムはそれらを分離できます。追加のインフラストラクチャは、測定された検索・正確性・運用上の問題を解決する場合にのみ正当化されます。

したがって、実用的なRAG向けデータベース設計手順は次のとおりです:

  1. 信頼できる情報源と更新所有者を特定する
  2. テナント・ユーザー・ドキュメントのアクセス境界を定義する
  3. 厳密・語彙・意味的・地理的・局所性対応のクエリをリストアップする
  4. これらのクエリをカバーする最小限のデータベースタイプセットを選択する
  5. 検索品質・トークン・レイテンシ・障害ケースを測定する
  6. 再構築できないデータのデータベースバックアップ方法とデータベース移行手順を文書化する
  7. 候補とアクセスモデルが正しいことを確認した後でのみデータベースパフォーマンスチューニングを使用する

最終的な質問は、アプリケーションがすでに知っていること

RAGアーキテクチャは、どの埋め込みモデルやベクトルデータベースを使用するかを尋ねることから始まることが多いです。

もう1つの有用な質問が先にあります:

What does the application already know before retrieval begins?

認証されたユーザー・テナント・注文・プロジェクト・ドキュメントグループ・現在の場所・時間ウィンドウ・アクティブタスクなどをすでに知っているかもしれません。その情報は、完全なコーパスよりもはるかに小さく関連性の高い開始領域を定義できます。

リクエストに意味のある中心がない状態で始まる場合、グローバルな語彙またはベクトル検索がまさに適切かもしれません。リクエストが既知の中心から始まるがコンテキスト境界が不確かな場合、局所性を保持することで、ランキングとプロンプト構築を開始する前に検索問題を小さく保つことができます。

重要な選択は、SQL対ベクトル、または1つのデータベース製品対別の製品ではありません。アプリケーションが厳密な真実・語彙マッチング・意味的類似性・地理的近接性・または再利用可能なコンテキストの近傍を必要とするかどうかを決定し、各検索段階に実際に必要なデータモデルを提供することです。

それが、デモを超えて成長できるRAGデータベース設計の基盤です。