Index Phase
文書
→
チャンキング
→
Embedding
→
ベクトル保存
Query Phase
質問
→
Embedding
→
検索
→
Rerank
→
Prompt構築
→
LLM生成
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導入が必須
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
| 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 |
日本語は追加学習版推奨 |