File size: 3,744 Bytes
8e72164
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import json
import re


def parse_config_descriptor(config_name: str, index: int = None) -> dict:
    if not config_name:
        label = f"Config {index + 1}" if index is not None else "Config"
        return {
            "label": label,
            "model": "Standard LLM",
            "retrieval": "Hybrid (Dense + BM25)",
            "reranker": "None",
            "enhancements": ["Default"],
            "display_name": label,
            "raw_signature": "unknown",
        }

    lower = config_name.lower().replace("_", " ")
    label = f"Config {index + 1}" if index is not None else "Config"

    # Model detection
    model = "GPT-OSS 120B"
    if "llama-3.3-70b" in lower or "llama 3.3 70b" in lower or "llama3" in lower:
        model = "Llama 3.3 70B"
    elif "gpt-oss-120b" in lower or "gpt oss 120b" in lower or "gptoss" in lower:
        model = "GPT-OSS 120B"
    elif "gemini-1.5-flash" in lower or "gemini" in lower:
        model = "Gemini 1.5 Flash"
    elif "mixtral" in lower:
        model = "Mixtral 8x7B"

    # Retrieval strategy
    retrieval = "Hybrid (Dense + BM25)"
    if "vector only" in lower or ("vector" in lower and "hybrid" not in lower):
        retrieval = "Vector (Dense FAISS)"
    elif "lexical" in lower or ("bm25" in lower and "hybrid" not in lower):
        retrieval = "Lexical (BM25 Keyword)"
    elif "hybrid" in lower:
        retrieval = "Hybrid (Dense + BM25)"

    # Reranker
    reranker = "None"
    if "minilm" in lower:
        reranker = "MiniLM Cross-Encoder"
    elif "tinybert" in lower:
        reranker = "TinyBERT (Low-Latency)"
    elif "bge-large" in lower or "bge large" in lower:
        reranker = "BGE Large Cross-Encoder"
    elif "bge-m3" in lower or "bge m3" in lower:
        reranker = "BGE M3 Reranker"
    elif "none" in lower or "noreranker" in lower:
        reranker = "None (Direct First-Stage)"

    # Enhancements
    enhancements = []
    if "query rewrite" in lower: enhancements.append("Query Rewrite")
    if "multi query" in lower: enhancements.append("Multi-Query")
    if "hyde" in lower: enhancements.append("HyDE")
    if "step back" in lower: enhancements.append("Step-Back")
    if "query expansion" in lower: enhancements.append("Query Expansion")
    if "sub query" in lower: enhancements.append("Sub-Query")
    if "metadata" in lower: enhancements.append("Metadata Filtering")
    if "routing" in lower: enhancements.append("Intent Routing")
    if "graph" in lower: enhancements.append("GraphRAG")
    if "compression" in lower: enhancements.append("Context Compression")

    if not enhancements:
        enhancements.append("Default (Baseline)")

    display_name = f"{label} ({model}{retrieval}{reranker}{', '.join(enhancements)})"

    return {
        "label": label,
        "model": model,
        "retrieval": retrieval,
        "reranker": reranker,
        "enhancements": enhancements,
        "display_name": display_name,
        "raw_signature": config_name,
    }


def clean_json_response(response: str) -> dict:
    if not response or not isinstance(response, str):
        raise ValueError("Empty or invalid response from LLM generator")

    text = response.strip()

    # Remove markdown code blocks
    if text.startswith("```"):
        lines = text.splitlines()
        if lines and lines[0].startswith("```"):
            lines = lines[1:]
        if lines and lines[-1].startswith("```"):
            lines = lines[:-1]
        text = "\n".join(lines).strip()

    try:
        return json.loads(text)
    except json.JSONDecodeError:
        # Match outermost { ... }
        match = re.search(r"(\{.*\})", text, re.DOTALL)
        if match:
            return json.loads(match.group(1))
        raise