A newer version of the Streamlit SDK is available: 1.58.0
FabAgent Experiments
ํต์ฌ ์์ฌ๊ฒฐ์ ๋ง๋ค ์ ๋ ๋น๊ต ์คํ + ํธ๋ ์ด๋์คํ ํ + ์ํ์ฐฉ์ค ๊ธฐ๋ก์ ๋จ๊ฒจ, "์ ์ด ์ ํ์ ํ๋๊ฐ"๋ฅผ ์ธก์ ๋ ๊ทผ๊ฑฐ๋ก ์ค๋ช ํ ์ ์๊ฒ ํฉ๋๋ค.
์คํ ๋ชฉ๋ก
| ID | ์คํ | ๋น๊ต ๋์ | ๊ฒฐ์ | ๊ฒฐ๊ณผ ๋ฌธ์ |
|---|---|---|---|---|
| D1 | Tier 1 ์ด์ ํ์ง ๋ชจ๋ธ | IsoForest / LOF / OC-SVM / baseline | IsolationForest | tier1_detection/results.md |
| D2 | Retrieval ๋ฐฑ์๋ latency | keyword / FAISS / hybrid / +rerank | hybrid_rerank (latency) | retrieval_compare/results.md |
| D5 | ๋ฉํฐ ์์ด์ ํธ vs Single LLM | ๋ถ๋ฆฌยท์ ๋ฌธํ vs ํตํฉ ํธ์ถ | Multi-Agent | multi_vs_single/results.md |
| RAG-eval | RAGAS (hybrid vs hybrid_rerank) | 2 backend RAGAS ๋น๊ต | (D6์ ํตํฉ) | rag_eval/results.md |
| D6 | RAG paradigm 5๋จ๊ณ ablation | No RAG / Naive / FAISS / Hybrid / +Rerank | Hybrid | rag_paradigm/results.md |
| D7 | Workflow vs Agentic | ๋จ์ผ LLM ํธ์ถ vs tool-using ๋ฃจํ | Agentic | agentic_vs_workflow/results.md |
| D8 | CRAG ON vs OFF | self-correction (grader + refinement) | CRAG ํ์ฑ ์ ์ง (๊ด์ธก ๊ฐ์น) | crag_eval/results.md |
| D9 | ํ๊ตญ์ด reranker (Dongjin-kr/ko-reranker) | vs BAAI(์์ด) vs hybrid (12 docs) | ๋ ๋ค hybrid์ ๋ฏธ๋ฌ | reranker_compare/results.md |
| D10 | D9 ํ์: ์ฝํผ์ค 12โ34 ํ์ฅ ํ reranker ์ฌํ๊ฐ | hybrid / BAAI / ko-reranker (34 docs) | ๊ฐ์ค ๊ฒ์ฆ - ํจ๊ณผ ์์ ๋ฐ์ | reranker_compare/results.md |
| D11 | Conductor (Plan-and-Execute) vs Autonomous | 4 LLM call vs 10 LLM call | Conductor ์ฑํ (์๋ยท๋น์ฉ ์ฐ์, ํ์ง ๋๋ฑ) | conductor_vs_autonomous/results.md |
ํต์ฌ ๊ฒฐ์ ์์ฝ
D1. ์ด์ ํ์ง ๋ชจ๋ธ โ IsolationForest
| ๋ชจ๋ธ | ROC-AUC | PR-AUC |
|---|---|---|
| IsolationForest | 0.600 | 0.129 |
| baseline | 0.565 | 0.119 |
| OC-SVM | 0.547 | 0.098 |
| LOF | 0.530 | 0.089 |
- SECOM์ ๋น์ง๋ ์ด์ ํ์ง๊ฐ ์ด๋ ค์ด ํ์ค ๋ฒค์น๋งํฌ (๋ฌธํ ROC-AUC ~0.6 ๋ฒ์)
- ํธ๋ ์ด๋์คํ: Autoencoder/LSTM์ ๋ ๋ณต์กํ ํจํด ๊ฐ๋ฅํ๋ ํ์ต ๋ฐ์ดํฐยท์๊ฐ ๋น์ฉ ํผ
D2. Retrieval ๋ฐฑ์๋ latency โ 4 backend ๊ฒ์ฆ (๋จ์ latency ๋น๊ต)
| ๋ฐฑ์๋ | ํ๊ท latency |
|---|---|
| keyword | 0.5 ms |
| FAISS | ~60 ms |
| hybrid | ~54 ms |
| hybrid + rerank | ~326 ms |
- ์๋ฏธ ์ฐํ ์ฟผ๋ฆฌ์์ FAISSยทhybrid๊ฐ keyword ์๋
- ์ ๋ฐ๋ ํ๊ฐ๋ D6 (RAG paradigm ablation)์์ RAGAS๋ก ๋ณ๋ ์งํ
D5. ๋ฉํฐ ์์ด์ ํธ vs Single LLM โ Multi-Agent
| ์์ญ | ์ฐ์ |
|---|---|
| ์๋ยท๋น์ฉ | Single (2.6x ๋น ๋ฆ, 2.2x ์ ๋ ด) |
| ์๋ต ๊น์ด (์กฐ์น ๊ถ๊ณ ์) | Multi (1.6~1.9x detailed) |
| ๋ชจ๋ํยทํ์ฅ์ฑยท์๊ฐํ์ต | Multi |
| schemaยทcitation ์ ํ๋ | ๋๋ฑ (์์ชฝ strict JSON 100%) |
- ๋น์ฉ ์ ๋๊ฐ์ด ๋ ๋ฐฉ์ ๋ชจ๋ $0.01~0.02๋ก ๋ฏธ๋ฏธํด cost-awareํ ํ์ ์์
- ์ด์ ํ๊ฒฝ(์ฌ์ ๋ถ๋ณ Tier ์ฑ ์์ ๋ถ๋ฆฌ, ์ step ํ์ฅ)์์๋ Multi์ ๋ชจ๋ํ๊ฐ ๊ฒฐ์ ์
D6. RAG paradigm 5๋จ๊ณ ablation โ Hybrid (BM25+FAISS+RRF)
| Paradigm | Faithfulness | Answer Relevancy | Context Precision | Total ms |
|---|---|---|---|---|
| No RAG | 0.321 | 0.297 | 1.000 | 13,084 |
| Naive RAG (keyword) | 0.764 | 0.388 | 1.000 | 15,192 |
| Vector RAG (FAISS) | 0.784 | 0.146 | 1.000 | 12,267 |
| Hybrid (BM25+FAISS+RRF) | 0.821 | 0.394 | 1.000 | 10,977 |
| Hybrid + Rerank | 0.819 | 0.167 | 1.000 | 11,306 |
ํต์ฌ ์ธ์ฌ์ดํธ:
- RAG ๋์ ํจ๊ณผ๊ฐ ๊ฒฐ์ ์ - No RAG ๋๋น ์ด๋ค paradigm์ ๋ถ์ฌ๋ faithfulness 2.5๋ฐฐโ
- Hybrid๊ฐ ๋ณธ ์ฝํผ์ค์์ ๋ชจ๋ ์งํ 1์ - quality + latency ๋ชจ๋ ์ฐ์. production ํ์ค ํจํด (Microsoft Azure AI Search, LlamaIndex ๊ถ๊ณ )
- Cross-encoder Rerank๋ ๋ณธ ์ฝํผ์ค์์ ์ญํจ๊ณผ
- faithfulness ๋๊ธ, answer_relevancy 0.394 โ 0.167 ๋ํญ
- ์์ธ ์ถ์ : โ ์ฝํผ์ค ~10๋ฌธ์๋ก Hybrid top-3์ด ์ด๋ฏธ ์ถฉ๋ถ โก
BAAI/bge-reranker-base๊ฐ ์์ด ํ์ต โ ํ๊ตญ์ด ๋๋ฉ์ธ ํ ์คํธ ์ ์ ์ ํธ ์ก์ - ์ฝํผ์ค 100+ ํ์ฅ ๋๋ ํ๊ตญ์ด reranker(
dongjin-kr/ko-reranker)๋ก ์ฌํ๊ฐ ๊ถ์ฅ
์ํ์ฐฉ์ค: ์ฒ์์ "rerank๊ฐ production ํ์ค์ด๋๊น" ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฑํํ์ผ๋, RAGAS ํ๊ฐ์์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ๋ ์ ํธ๋ฅผ ๋ณด๋ด ๊ธฐ๋ณธ๊ฐ ๋ณ๊ฒฝ (hybrid_rerank โ hybrid). ์ ๋ ํ๊ฐ ์์ผ๋ฉด ํต๋
์ ๊ทธ๋๋ก ๋๊ณ ๊ฐ ๋ปํ ์ฌ๋ก.
D7. Workflow vs Agentic โ Agentic (tool-using agent)
| ์งํ | Workflow | Agentic | ๋ฐฐ์ |
|---|---|---|---|
| LLM ํธ์ถ / ์๋ | 3 | 9 | x3.0 |
| Tool ํธ์ถ / ์๋ | 0 | 13 | - |
| ์ ๋ํฌ ์ธ์ฉ / ์๋ | 4 | 5 | x1.25 |
| ์ ๋ ฅ ํ ํฐ / ์๋ | 5,890 | 20,474 | x3.5 |
| ์ถ๋ ฅ ํ ํฐ / ์๋ | 5,174 | 12,574 | x2.4 |
| Latency (T2~T4) | 83s | 194s | x2.3 |
| ๋น์ฉ / 1000์๋ | $11.82 | $30.27 | x2.6 |
์ฑํ ๊ทผ๊ฑฐ:
- Tool ํธ์ถ ๋ก๊ทธ = reasoning trace - "์ ์ด ๊ถ๊ณ ๊ฐ ๋์๋๊ฐ"์ audit trail ํ๋ณด (fab ์์ ์ฑ ๊ฒฐ์ ์ )
- Multi-source ๊ทผ๊ฑฐ ๊ฒฐํฉ - INCยทFMEAยทSOPยทincident DBยทPM ์ด๋ ฅ์ LLM์ด ์์จ์ ์ผ๋ก ๊ฒฐํฉ
- ๋น์ฉ +$0.018/์๋ - ์ผ ์๋ฐฑ ์๋์๋ ์ผ $5 ๋ฏธ๋ง, ์ฌ์ ์ ์ํฅ ๋ฌด์ ๊ฐ๋ฅ
- Latency 2.3๋ฐฐ๋ ๋ก๋ฉ UI๋ก ํก์ - ์ด๋ฏธ 4-Tier cascade ๋ฑ์ฅ UI ๊ตฌํ
์ํ์ฐฉ์ค: "4-Tier๊ฐ LLM ํธ์ถํ๋๊น multi-agent๋ค"๋ผ๊ณ ์ฃผ์ฅํ๋ค๊ฐ, Anthropic์ Building Effective Agents ์ ์๋ก ์๊ธฐ ๊ฒ์ฆํ๋ workflow์์ (๊ฐ Tier๊ฐ ์ฌ์ RAG 1ํ + LLM 1ํ). Tool-using ํจํด์ผ๋ก ์ ํ ํ ์ธ์ฉ ๊น์ด๋ +25% ์ ๋์ง๋ง, ๋๊ตฌ ํธ์ถ ๋ก๊ทธ๊ฐ reasoning trace์ด์ audit trail์ด ๋๋ ๊ฒ ๊ฒฐ์ ์ .
D8. CRAG (Self-correction) โ ํ์ฑ ์ ์ง (๊ด์ธก ๊ฐ์น)
| ์งํ | CRAG OFF | CRAG ON | ๋ณํ |
|---|---|---|---|
| Faithfulness | 0.641 | 0.639 | -0.1%p (๋๊ธ) |
| Answer Relevancy | 0.283 | 0.250 | -3.3%p (์ํญ ํ๋ฝ) |
| LLM ํธ์ถ / ์๋ | 3.0 | 3.7 | x1.22 |
| ๋น์ฉ / 1000์๋ | $9.40 | $12.29 | x1.31 |
| Latency (Tier 2) | 61s | 69s | x1.13 |
| Refinement ๋ฐ๋๋ฅ | - | 20% | (5๋ฒ ์ค 1๋ฒ) |
| ํ๊ท relevance_score | - | 0.61 | (CRAG ON์์ 0~1๋ก ๊ฐ์ํ) |
์ฑํ ๊ทผ๊ฑฐ (์์งํ trade-off):
- ํ์ง ๋ณํ ์ฌ์ค์ ์์ - faithfulness -0.1%p, relevancy -3.3%p. ๋ณธ ์ฝํผ์ค(~10๋ฌธ์)์์ hybrid๊ฐ ์ด๋ฏธ ์ ์๋
- ์๊ฐ ์ ์ ๋ฉ์ปค๋์ฆ ์์ฒด๋ ์๋ ํ์ธ - smoke test: gibberish ์ฟผ๋ฆฌ(
์์์์ xyzzy foobar)์ avg score 0.0 ๋ถ์ฌ ํ LLM์ดCMP ๊ณต์ ์คํจ ๋ชจ๋ ๋ถ์...์ผ๋ก ์ฌ์์ฑ, avg 0.0 โ 0.68 ํ๋ณต - ์ธ์ฉ ์ ๋ขฐ๋ ๊ฐ์ํ ๊ฐ์น - ๋ต๋ณ๋ง๋ค 0~1 relevance_score ๋ ธ์ถ โ ์ด์์๊ฐ "์ด ๊ถ๊ณ ๊ฐ ์ผ๋ง๋ ๊ฐํ ๊ทผ๊ฑฐ์ ๊ธฐ๋ฐํ๋๊ฐ" ์ฆ์ ํ๋จ
- ๋น์ฉ +31% ์ ๋๊ฐ ๋ฌด์ ๊ฐ๋ฅ - 1000 ์๋๋น +$2.90
- agentic loop์์ ๋ถ๋ถ ์ค๋ณต - agent๊ฐ ์ด๋ฏธ ๋ถ์กฑํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๋ค๋ฅธ query๋ก ์ฌํธ์ถํ๋ self-correction ์ผ๋ถ ์ํ
์ํ์ฐฉ์ค: AnthropicยทLangChain์ด CRAG๋ฅผ production ํจํด์ผ๋ก ์์ฃผ ์ธ๊ธ. ๋จ์ ๊ตฌํ(grader + refiner) + smoke test์์ ์ธ์์ ์๋ ํ์ธ. ๊ทธ๋ฌ๋ ์ ๋ ๋น๊ต์์ ํ์ง ๋ณํ ๋ฏธ๋ฏธ - D6 Rerank์ ๊ฐ์ ํจํด. ์์ ๋๋ฉ์ธ ์ฝํผ์ค์์ ์ ๊ตํ self-correction์ด ROI ๋ฎ์. ์ ๋ ํ๊ฐ ์์ด๋ "CRAG ๋์ ํ์" ๋ง์ผํ ์ผ๋ก ๋๋ฌ์ ๊ฒ. ๊ฒฐ์ : ํ์ฑ ์ ์งํ๋ ์ฝํผ์ค ํ์ฅ ์ ์ฌํ๊ฐ (์ธ์ฉ ์ ๋ขฐ๋ ๋ ธ์ถ์ด๋ผ๋ ๋ถ์ ๊ฐ์น๋ ์ ์ง).
D9. ํ๊ตญ์ด reranker โ ์ฑํ ๋ณด๋ฅ (D6 ๊ฐ์ค ๋ถ๋ถ์ ์ฌํ์ธ)
| ๋ชจ๋ | ํ๊ท LLM relevance | rerank latency | vs hybrid baseline |
|---|---|---|---|
| hybrid (no rerank) | 0.734 | 0 ms | baseline |
| BAAI/bge-reranker-base (์์ด) | 0.714 | 315 ms | -0.020 |
| Dongjin-kr/ko-reranker (ํ๊ตญ์ด) | 0.703 | 826 ms | -0.031 |
์ฟผ๋ฆฌ๋ณ ํจํด:
| ์ฟผ๋ฆฌ | hybrid | BAAI | ko | ์ฐ์น์ |
|---|---|---|---|---|
| Photo CD ์ง์ | 0.867 | 0.817 | 0.867 | hybrid / ko (tie) |
| CMP ์ง์ | 0.750 | 0.767 | 0.850 | ko (+0.10) |
| Etch ์ง์ | 0.750 | 0.650 | 0.567 | hybrid |
| ์๋ฏธ ์ฐํ 1 (lens ์ฒญ์) | 0.700 | 0.633 | 0.783 | ko (+0.083) |
| ์๋ฏธ ์ฐํ 2 (yield ์ํฅ) | 0.817 | 0.867 | 0.617 | BAAI |
| ์๋ฏธ ์ฐํ 3 (PM ๊ฐ์ด๋) | 0.517 | 0.550 | 0.533 | tie |
์ํ์ฐฉ์ค (D6 โ D9): D6์์ ์์ด reranker์ ๋ถ์ง ์์ธ์ "ํ๊ตญ์ด ๋ชจ๋ธ๋ก ํ๋ฆฐ๋ค"๊ณ ๊ฐ์ค. D9์์ ๊ฒ์ฆํ ๊ฒฐ๊ณผ - ํ๊ตญ์ด reranker๊ฐ CMPยทlens cleanup ์ฟผ๋ฆฌ์์ ๋ช ํํ ์ฐ์์ง๋ง, Etchยทyield ์ฟผ๋ฆฌ์์ ํฐ ์์ค. 6 ์ฟผ๋ฆฌ ํ๊ท ์ hybrid baseline ๋ฏธ๋ฌ. ๊ฒฐ๋ก : D6 ๊ฐ์ค์ ์ง์ง ๋ฌธ์ ๋ ์์ด/ํ๊ตญ์ด๊ฐ ์๋๋ผ ์ฝํผ์ค ๊ท๋ชจ. ์ด ๊ฐ์ค์ D10์์ ์ ๋ ๊ฒ์ฆ.
D10. ํ์ฅ ์ฝํผ์ค(34 docs)์์ reranker ํจ๊ณผ ๊ฒ์ฆ โ ๊ฐ์ค ์ ์ฆ, ํจ๊ณผ ์์ ๋ฐ์
| ๋ชจ๋ | D9 (12 docs) | D10 (34 docs) | ๋ณํ |
|---|---|---|---|
| hybrid (no rerank) | 0.734 | 0.592 | -0.142 (noiseโ) |
| BAAI/bge-reranker-base | 0.714 (-0.020) | 0.709 (+0.117) | ๋ฐ์ ! |
| Dongjin-kr/ko-reranker | 0.703 (-0.031) | 0.675 (+0.083) | ๋ฐ์ ! |
์๋ฆฌ์ฆ ์์ (D6 โ D9 โ D10):
- D6: production ํ์ค์ด ์์ ์ฝํผ์ค์์ ์ญํจ๊ณผ ๋ฐ๊ฒฌ ("rerank๊ฐ ๋ฌด์กฐ๊ฑด ์ข๋ค"๋ ํต๋ ์ ๋ ๋ฐ๋ฐ)
- D9: ํ๊ตญ์ด reranker๋ก๋ ์ ํ๋ฆผ โ ์์ด/ํ๊ตญ์ด ๋ฌธ์ ๊ฐ ์๋๋ผ "์ฝํผ์ค ๊ท๋ชจ๊ฐ ์ง์ง ์์ธ"์ด๋ผ๋ ๊ฐ์ค ์ ์
- D10: ์ฝํผ์ค 12 โ 34 ํ์ฅ ํ ์ฌ์คํ. hybrid baseline -0.14, reranker ํจ๊ณผ +0.12๋ก ์์ ๋ฐ์ โ ๊ฐ์ค ์ ๋ ์ ์ฆ
ํต์ฌ ๋ฉ์์ง: ์ ๋ ํ๊ฐ ์์ด๋ ์๋ชป๋ ํต๋
์ ๊ทธ๋๋ก ๋๊ณ ๊ฐ ๋ปํ๊ณ , ์ ๋ ํ๊ฐ ๋๋ถ์ ์ง์ง ์์ธ์ ๋ถ๋ฆฌํ๊ณ ๊ฒ์ฆํ ์ ์์๋ค. ์ฑํ: ์ฝํผ์ค 30+ ํ๊ฒฝ์์๋ RAG_BACKEND=hybrid_rerank ๊ถ์ฅ, ๋ฐ๋ชจ์ฉ ์ฝํผ์ค๋ hybrid ์ ์ง.
D11. Conductor (Plan-and-Execute) vs Autonomous โ Conductor ์ฑํ
| ์งํ | Autonomous | Conductor | ๋ณํ |
|---|---|---|---|
| LLM ํธ์ถ / ์๋ | 10.0 | 4.0 | -60% |
| Tool ํธ์ถ / ์๋ | 13.7 | 16.0 | +17% |
| ์ ๋ํฌ ์ธ์ฉ / ์๋ | 6.0 | 6.0 | ๋๋ฑ |
| ์ ๋ ฅ ํ ํฐ | 25,849 | 8,042 | -69% |
| ์ถ๋ ฅ ํ ํฐ | 13,385 | 5,895 | -56% |
| Latency / ์๋ | 131์ด | 60์ด | -54% |
| ๋น์ฉ / 1000์๋ | $33.23 | $13.80 | -58% |
์์ (D7 โ D11 narrative):
- D7: "workflow โ agentic"์ผ๋ก reasoning traceยท์์จ์ฑ ํ๋ณด (๊ฐ Tier๊ฐ tool ์์จ ํธ์ถ)
- D11: "agentic โ conductor"๋ก ํต์ ํจ์จ ํ๋ณต (Central Planner๊ฐ plan 1ํ ์ฐ์ถ + Tier executor๊ฐ plan๋๋ก ์คํ + LLM 1ํ synthesis)
- ๋ ํจํด ๋ชจ๋ ์ ๋ ๋น๊ต ํ ์ฑํ. autonomous๋ ํ๊ฒฝ๋ณ์
AGENT_MODE=autonomous๋ก ๋ณด์กด (๋ณต์กํ ์๋ยท์์์น ๋ชปํ ์ปจํ ์คํธ ์ ์ ํ์ ์) - ์ฌ๊ทยท๋ฌดํ๋ฃจํ ์ํ ์์ฒ ์ฐจ๋จ: autonomous์
MAX_TOOL_ITERATIONS=4์บก ์์กด์ด plan ๊ณ ์ ์คํ์ผ๋ก ๋ณธ์ง์ ํด๊ฒฐ
์คํ ๋ฐฉ๋ฒ
# Tier 1 ๋ชจ๋ธ ๋ฒค์น๋งํฌ (D1)
.venv/bin/python -m experiments.tier1_detection.benchmark
# Retrieval latency ๋น๊ต (D2)
.venv/bin/python -m experiments.retrieval_compare.benchmark
# ๋ฉํฐ ์์ด์ ํธ vs Single LLM (D5)
.venv/bin/python -m experiments.multi_vs_single.benchmark
# RAGAS hybrid vs hybrid_rerank
.venv/bin/python -m experiments.rag_eval.benchmark
# RAG paradigm 5๋จ๊ณ ablation (D6)
.venv/bin/python -m experiments.rag_paradigm.benchmark
# ์ฐจํธ๋ง ์ฌ์์ฑ (CSV ์บ์ ์ฌ์ฉ):
.venv/bin/python -m experiments.rag_paradigm.benchmark --charts-only
# Workflow vs Agentic (D7)
.venv/bin/python -m experiments.agentic_vs_workflow.benchmark
# CRAG ON vs OFF (D8)
.venv/bin/python -m experiments.crag_eval.benchmark
# ํ๊ตญ์ด reranker (Dongjin-kr/ko-reranker) ํ๊ฐ (D9ยทD10)
.venv/bin/python -m experiments.reranker_compare.benchmark
# Conductor vs Autonomous (D11)
.venv/bin/python -m experiments.conductor_vs_autonomous.benchmark
๊ฐ ์คํ์ results.md์ charts/*.png๋ฅผ ์์ฑํฉ๋๋ค.









