
Claude、GPT-4、Llamaといった大規模言語モデル(LLM)は、その驚くべき自然言語推論能力とコード合成能力によって、現代のコンピューティングに革命をもたらしました。
しかし、何十億ものパラメータを持つにもかかわらず、LLMは本番の企業環境にデプロイされると、2つの致命的な脆弱性に悩まされます。
これまで、組織はファインチューニングによってこれを解決しようと試みてきました。しかし、ファインチューニングは計算コストが高く、古い事実を忘れるのに苦労し、証明可能な情報源の引用を提供できません。
普遍的なアーキテクチャソリューションが**検索拡張生成(Retrieval-Augmented Generation: RAG)**です。
RAGは、LLMのパラメトリックな推論能力と、動的で非パラメトリックな企業知識ベースとの間のギャップを埋め、事実に基づいた根拠と監査可能性を保証します。
RAGを理解するためには、AIシステムにおける2種類の知識表現を区別する必要があります。
RAGパイプラインでは、LLMは百科事典としてではなく、分析推論エンジンとして扱われます。ユーザーが質問をすると、システムは非パラメトリックメモリをクエリし、最も関連性の高い事実の段落を取得し、それらをプロンプトのコンテキストウィンドウに挿入し、LLMに次のように指示します。「提供された参照ドキュメントのみを使用してユーザーの質問に答えてください。情報源を引用してください。」
プロダクションレベルのRAGパイプラインは、取り込み(Ingestion)、検索(Retrieval)、**生成(Generation)**の3つの連続したフェーズで構成されます。
[ INGESTION ]
Raw Docs ──> Chunking ──> Embedding Model ──> Vector Database (pgvector / Qdrant)
[ RETRIEVAL & RERANKING ]
User Query ──> Hybrid Search (Dense Vector + BM25) ──> Cross-Encoder Reranker ──> Top-K Chunks
[ GENERATION ]
Prompt = Context Chunks + User Query ──> LLM (Claude / GPT-4) ──> Factual Cited Answer
200ページのPDFを単一のレコードとしてベクトルデータベースにそのまま投入することはできません。取り込みステージでは、高解像度の検索のために生データを準備します。
text-embedding-3-smallやbge-large-en-v1.5など)に通し、テキストを1,536次元のセマンティック座標空間にマッピングします。素朴なRAGシステムは、ベクトルデータベースでのコサイン類似度検索のみに依存しています。本番環境では、純粋なベクトル検索は以下の点で頻繁に失敗します。
ERR_TIMEOUT_502)。Dr. Loc Nguyen)。これを解決するために、最新のRAGはハイブリッド検索(Hybrid Search)を実装しています。これは、密なベクトル検索(Dense Vector Search)(意味的な概念理解)と疎なキーワード検索(Sparse Keyword Search)(BM25の語彙精度)を**Reciprocal Rank Fusion (RRF)**を使用して組み合わせるものです。
# hybrid_retrieval.py
from collections import defaultdict
import numpy as np
def reciprocal_rank_fusion(
dense_results: list[str],
sparse_results: list[str],
k: int = 60
) -> list[tuple[str, float]]:
"""
Fuses ranked lists from vector search and BM25 keyword search.
RRF Score = sum(1 / (k + rank))
"""
rrf_scores = defaultdict(float)
for rank, doc_id in enumerate(dense_results):
rrf_scores[doc_id] += 1.0 / (k + rank + 1)
for rank, doc_id in enumerate(sparse_results):
rrf_scores[doc_id] += 1.0 / (k + rank + 1)
# Sort documents by descending fusion score
sorted_docs = sorted(rrf_scores.items(), key=lambda x: x[1], reverse=True)
return sorted_docs
# Top-ranked chunks are subsequently passed to a Cross-Encoder Reranker
# (such as Cohere Rerank v3) to compute exact query-to-passage relevance scores.
トップ25のハイブリッド結果にクロスエンコーダーリランカー(Cross-Encoder Reranker)(Cohere RerankやBGE-Rerankerなど)を適用することで、システムは完全なクロスアテンションに基づいてパッセージを再スコアリングし、LLMに最も関連性の高い3〜5個のコンテキストチャンクを提示します。
最終フェーズでは、取得されたチャンクを統合して一貫性のある回答を生成します。プロンプトテンプレートは、ハルシネーションを防ぐために厳格な認識論的謙虚さ(epistemic modesty)を強制する必要があります。
You are an enterprise AI assistant for Loc Corp.
Answer the user's question using ONLY the provided context blocks below.
If the answer cannot be deduced from the context, state clearly: "I cannot answer this based on the available records."
Do not invent information. Always cite chunk references (e.g., [Doc 1]).
--- CONTEXT BLOCKS ---
[Doc 1]: Loc Corp standard SLA provides 99.95% uptime for Enterprise tier customers.
[Doc 2]: Enterprise customer tickets receive a 1-hour initial response window.
--- USER QUESTION ---
What is the SLA uptime guarantee for Enterprise clients?
--- ANSWER ---
| データベース | アーキテクチャタイプ | 強み | 理想的なシナリオ |
|---|---|---|---|
| pgvector (PostgreSQL) | リレーショナル拡張 | ACIDトランザクション、SQL結合、新たなインフラ不要 | 既にPostgresを本番運用している場合 |
| Qdrant | 専用ベクトルエンジン (Rust) | ペイロードフィルタリング、超高速HNSW、ディスク上のベクトル | 高スループットAIマイクロサービス |
| Pinecone | マネージドクラウドサーバーレス | 運用オーバーヘッドゼロ、自動スケーリング | 迅速なプロトタイピング、サーバーレスチーム |
| Chroma | 軽量組み込み / ローカル | 簡単なローカルセットアップ、Pythonネイティブ | エッジデバイス、CLIツール、単体テスト |
ランダムな出力を手動で検査するだけでは、RAGパイプラインを最適化することはできません。プロダクションシステムは、RAGトライアド(RagasやTruLensなどのフレームワークによって形式化されています)を監視します。
ある企業は、長くて複雑な技術仕様書を多数含む社内ドキュメントのためにRAGシステムを構築しています。彼らは、チャンクが小さすぎるとLLMが重要なコンテキストを失うこと、またチャンクが大きすぎるとLLMのコンテキストウィンドウを超過することを懸念しています。きめ細かな検索とLLMのための包括的なコンテキストのバランスを取ることで、これらの懸念に最もよく対処できるチャンキング戦略は何ですか?
ファインチューニングは、モデルの内部ニューラル重みを調整して、特定のトーン、スタイル、または出力構文(自然言語からSQLを生成するなど)を学習させます。RAGは、プロンプトコンテキストに外部のリアルタイムの事実を提供します。企業知識の検索においては、RAGの方がはるかに優れています。なぜなら、事実の更新には、数日間のGPU再トレーニングを実行するのではなく、データベースの行を変更するだけで済むからです。
普遍的な数値はありません。密な技術文書の場合、256〜512トークンで50トークンの重複を持たせることで、意味的な特異性と十分な周辺コンテキストのバランスが取れます。法律契約や長い物語形式のポリシーの場合、階層的チャンキング(128トークンの小さな検索チャンクが1,024トークンの親ブロックを指す)が最高の精度を提供します。
RAGは、生のLLM生成と比較してハルシネーションを90%以上削減しますが、完全にゼロにするわけではありません。取得されたパッセージに矛盾する事実が含まれている場合や、モデルがシステムプロンプトの指示を無視した場合、ハルシネーションは依然として発生する可能性があります。「テキストに存在する場合のみ回答する」といった厳密なネガティブプロンプティングと、自動検証ガードレールを使用することが不可欠です。
検索拡張生成は、実験的なハックからエンタープライズAIエンジニアリングの基盤となるアーキテクチャへと進化しました。
階層的チャンキング、Reciprocal Rank Fusionを用いたハイブリッド密/疎検索、クロスエンコーダーリランキング、そしてRAGトライアドの可観測性を組み合わせることで、エンジニアリングチームは、独自の企業知識の価値を最大限に引き出す、信頼性が高く監査可能なAIアプリケーションを構築できます。
AI CLIログの整形、Cron式の作成、JWTの解析、chmod権限の計算をオフラインで実行。

本番RAGパイプライン向けにPinecone、Qdrant、Milvus、pgvectorのアーキテクチャを、HNSW vs IVFFlatインデックス、単段フィルタリング検索、p95レイテンシ、メモリフットプリントでベンチマークします。
続きを読む
ステートフルなAgentic RAGについて、グラフステートマシン、自己修正ループ、フォールバックルーティングを、本番環境レベルのアーキテクチャとコード例で網羅的に解説するガイドです。
続きを読む
本番RAGパイプラインにおけるLangChainとLlamaIndexのアーキテクチャを、ドキュメント解析、ベクトルインデックス、クエリルーティング、レイテンシベンチマークの観点から比較します。
続きを読む