def mode_fallback(self, query, quality_threshold=0.9, model_name="qwen3:0.6b",
                  num_predict=512, temperature=0.3):
    """
    フォールバックモード: RAG結果を評価し、必要に応じてWeb検索
    """
    print(f"\n{'='*60}")
    print(f"モード: Fallback (閾値: {quality_threshold})")
    print(f"クエリ: {query}")
    print(f"{'='*60}\n")
    
    start_time = time.time()
    
    # ステップ1: RAG検索
    print("📚 RAG検索を実行中...")
    rag_context, rag_metadata = self._execute_rag_search(query)
    
    # ステップ2: 品質評価
    quality_score = self.evaluator.evaluate_quality(
        query, 
        rag_metadata.get("chunks", []),
        rag_metadata.get("scores", [])
    )
    
    print(f"品質スコア: {quality_score:.3f} (閾値: {quality_threshold})")
    
    # ステップ3: 閾値判定
    if quality_score >= quality_threshold:
        # RAG結果で十分
        print("✅ RAG結果の品質が十分です")
        context = rag_context
        metadata = rag_metadata
        method_used = "RAG"
    else:
        # Web検索にフォールバック
        print("🔄 品質が不十分です。Web検索にフォールバック...")
        web_context, web_metadata = self._execute_web_search(query)
        context = web_context
        metadata = web_metadata
        method_used = "Web (Fallback)"
    
    # ステップ4: LLMで回答生成
    answer = self._generate_answer(query, context, model_name,
                                   num_predict, temperature)
    
    elapsed_time = time.time() - start_time
    
    return {
        "answer": answer,
        "context": context,
        "metadata": metadata,
        "method": method_used,
        "mode": "fallback",
        "quality_score": quality_score,
        "elapsed_time": elapsed_time
    }
