Knowledge Architecture

Retrieval-Augmented Generation

学習ロードマップ & 技術体系 2025 / Phase 02 → 03
学習済み
現在・次フェーズ
未着手
Index Phase 文書 チャンキング Embedding ベクトル保存
Query Phase 質問 Embedding 検索 Rerank Prompt構築 LLM生成
I
Index Phase
文書を検索可能なベクトル表現に変換し、格納する事前処理
Phase 03 — 学習中

Chunking

文書を検索可能な「塊」に分割する。分割粒度が検索精度を左右する最重要パラメータの一つ。

固定長 セマンティック 再帰的
chunk_size=300, overlap=100 で実装済み
オーバーラップ → 境界の文脈欠落を防止
Phase 03 — 選定済み

Embedding Model

テキストを固定長ベクトルに変換する。モデル選択が「意味的な近さ」の品質を決める。

e5-small 384次元 prefix付与
passage: / query: プレフィックスで
文書とクエリの非対称性を吸収
未着手

Vector Database

ベクトルを永続化し、高速な近傍探索を可能にする専用データストア。

Pinecone Qdrant FAISS Chroma
現在は NumPy 配列でメモリ上に保持
本番運用ではDB導入が必須
II
Query Phase
ユーザーの質問を起点に、検索・再ランク・生成を連鎖させる実行時処理
Phase 02 — 完了

検索アルゴリズム

高次元ベクトル空間における近傍探索。精度と速度のトレードオフを制御する。

HNSW IVF PQ コサイン類似度
HNSW → グラフベースの近似最近傍探索
IVF → クラスタベース、PQ → ベクトル圧縮
未着手

Hybrid Search

ベクトル検索(意味)とキーワード検索(BM25)を組み合わせ、両方の長所を活かす。

BM25 RRF スコア融合
固有名詞 → キーワード検索が強い
意味的類似 → ベクトル検索が強い
未着手

Reranking

初回検索の結果を、より精密なモデルで再スコアリングし、上位を厳選する。

Cross-Encoder ms-marco
Bi-Encoder(高速・粗い) → 候補抽出
Cross-Encoder(低速・精密) → 最終順位
未着手

Query Transformation

元のクエリを書き換え・拡張し、検索の再現率を高める前処理。

HyDE Multi-Query Step-Back
HyDE → 仮回答を生成してから検索
Multi-Query → 複数の言い換えで検索
実装済み — 改善余地あり

Prompt Engineering

検索結果をLLMに適切に渡すための指示設計。ハルシネーション抑制の要。

System Prompt Few-shot CoT
「コンテキストのみに基づいて回答」
→ 知識外の生成(幻覚)を抑制
選定済み — Qwen3-1.7B

LLM Generation

検索結果を統合し、自然言語で回答を生成する最終段。モデル選択が品質を決定する。

Qwen3 Gemma 3 Llama 3
Qwen3-1.7B (fp16) → 3.4GB VRAM
日本語生成品質で小型モデル最優
Qwen3-1.7B
KV
空き ≈ 10.5 GB
e5-small 0.1 GB
Qwen3-1.7B (fp16) 3.4 GB
KV Cache ≈ 1.0 GB
空き容量 ≈ 10.5 GB

VRAM Estimation (Inference)

VRAM ≈ P × B × 1.3
P = パラメータ数 (Billions)
B = バイト数/パラメータ (fp16→2, fp8→1, int4→0.5)
1.3 = KV Cache + Overhead 係数

例: 1.7 × 2 × 1.3 ≈ 4.4 GB

Cosine Similarity

sim(q, d) = q · d / (‖q‖ · ‖d‖)
正規化済みベクトルなら ‖q‖ = ‖d‖ = 1
→ sim(q, d) = q · d (内積 = 類似度)

NumPy: np.dot(embeddings, query)

Chunking Parameters

N = ⌈(L − O) / (C − O)⌉
N = チャンク数, L = 文書長
C = chunk_size, O = overlap

例: L=3000, C=300, O=100 → N=15

Data Type Sizes

fp32 : fp16 : fp8 : int4 = 4 : 2 : 1 : ½
fp32 → 符号1 + 指数8 + 仮数23 = 32bit
fp16 → 符号1 + 指数5 + 仮数10 = 16bit
fp8 → 符号1 + 指数4 + 仮数3  = 8bit (E4M3)
int4 → 整数 -8〜7 = 4bit
Model Selection
Colab T4 (15 GB VRAM) での小型LLM比較 — 日本語RAG用途
Model Params VRAM (fp16) 日本語 License 備考
Qwen3-1.7B 1.7B ≈ 4.4 GB Apache 2.0 Thinking mode 対応、今回採用
Qwen3-4B 4B ≈ 10.4 GB Apache 2.0 余裕あれば切替可能
Gemma 3 4B 4B ≈ 10.4 GB Gemma License 画像入力対応が強み
Llama 3.2 3B 3B ≈ 7.8 GB Llama License 日本語は追加学習版推奨