AI Wiki - 100-hours-a-week/9-team-Devths-WIKI GitHub Wiki

Devths AI/ML Engineering Wiki

AI Repository: GitHub Link


๐Ÿ“š ๋ชฉ์ฐจ

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์‹œ์Šคํ…œ ์„ค๊ณ„

์„ค๊ณ„ ๊ณผ์ œ (๋‹จ๊ณ„ 1~8)

๊ธฐ์ˆ  ์˜์‚ฌ๊ฒฐ์ • (ADR)

[AI] 00. ADR 001-005 - ๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-001: LLM ์ŠคํŠธ๋ฆฌ๋ฐ ํ†ต์‹  ๋ฐฉ์‹ (SSE vs WebSocket)
  • ADR-002: ๋ถ„์„ ๊ฒฐ๊ณผ ์ €์žฅ ํ˜•์‹ (JSON vs Text)
  • ADR-003: VectorDB ์„ ํƒ (ChromaDB)
  • ADR-004: ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ (Polling)
  • ADR-005: ๋ฉด์ ‘ Q&A ์ €์žฅ ์ „๋žต (๊ฐœ๋ณ„ ์ €์žฅ)

[AI] 01. ADR 006-010 - ์ธํ”„๋ผ ๋ฐ ํ†ตํ•ฉ

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-006: ์ธํ”„๋ผ ์ง„ํ™” ์ „๋žต (EC2 โ†’ Docker โ†’ K8s)
  • ADR-007: Kubernetes vs Kubeflow ๋„์ž… ์‹œ๊ธฐ
  • ADR-008: OCR + ์ž„๋ฒ ๋”ฉ ๋‚ด๋ถ€ ํ†ตํ•ฉ ์ฒ˜๋ฆฌ
  • ADR-009: ์ฑ„ํŒ… ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ (Redis + LangChain Memory)
  • ADR-010: OCR ์„œ๋น„์Šค ์„ ํƒ (Gemini Vision)

[AI] 02. ADR 011-015 - ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-011: ์„œ๋ฒ„๋ฆฌ์Šค API ์ „๋žต (Lambda ๊ฒ€ํ† )
  • ADR-012: ์บ˜๋ฆฐ๋” ์„œ๋น„์Šค ์ฐจ๋ณ„ํ™” ์ „๋žต
  • ADR-013: ํŒ€ ๋ธ”๋กœ๊ทธ / Wiki ์šด์˜ ๋ฐฉ์‹
  • ADR-014: LLM ๋ชจ๋ธ ์„ ์ • ๋ฐ Fallback ์ „๋žต
  • ADR-015: ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ์ „๋žต (Celery Beat โ†’ Airflow)

[AI] 03. ADR 016-020 - ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ตœ์ ํ™”

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-016: LLM ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ (LangSmith vs LangFuse)
  • ADR-017: FastAPI ์„œ๋ฒ„ ๋ถ„๋ฆฌ ์ „๋žต (๋ชจ๋ธ ์„œ๋ฒ„ vs ์„œ๋น„์Šค ์„œ๋ฒ„)
  • ADR-018: ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ (Celery Beat โ†’ Kafka)
  • ADR-019: LLM ์ถœ๋ ฅ ๊ตฌ์กฐํ™” (LangChain + LangGraph)
  • ADR-020: RAG Reranker ๋„์ž… (Cohere Rerank)

[AI] 04. ADR 021-025 - ์ตœ์ ํ™” โญ NEW

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-021: Embedding ๋ชจ๋ธ ํ†ต์ผ (Gemini ๋‹จ์ผ ๋ชจ๋ธ + BM25 Hybrid)
  • ADR-022: AI ํŒŒ์ดํ”„๋ผ์ธ ํ…Œ์ŠคํŠธ (n8n ๋„์ž…)
  • ADR-023: ๋ฉด์ ‘ ์งˆ๋ฌธ Pool ์บ์‹ฑ ์ „๋žต (80% ๋น„์šฉ ์ ˆ๊ฐ)
  • ADR-024: VectorDB ํ•„ํ„ฐ๋ง ์ „๋žต
  • ADR-025: (์˜ˆ์ •)

[AI] 05. ADR 026-030 - ์„œ๋ฒ„ ๊ตฌ์กฐ ๋ฐ ๋ชจ๋ธ ์ „๋žต

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-026: Gunicorn + Uvicorn ์„œ๋ฒ„ ๊ตฌ์กฐ
  • ADR-027: AI ํŽ˜๋ฅด์†Œ๋‚˜ ๋„์ž…
  • ADR-028: (์˜ˆ์ •)
  • ADR-029: (์˜ˆ์ •)
  • ADR-030: VectorDB ์„ ํƒ (ChromaDB)

[AI] 06. ADR 031-035 - ๋ชจ๋ธ ํ•™์Šต/์ตœ์ ํ™” ๋ฐ ์„œ๋น™

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-031: ํŒŒ์ธํŠœ๋‹/๊ฐ•ํ™”ํ•™์Šต ๋ฏธ์ ์šฉ ๊ฒฐ์ •
  • ADR-032: Gemini API ์„ ํƒ (LLM + VLM ํ†ตํ•ฉ)
  • ADR-033: Ollama ๋„์ž… (๋ฉด์ ‘ ๋ชจ๋“œ ํ•œ์ • - ๋ณด์•ˆ ๊ฐ•ํ™”)
  • ADR-034: ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ์ „๋žต (Gemini โ†’ BERT)
  • ADR-035: ์ข…ํ•ฉ ๋ชจ๋ธ ์ „๋žต (V1-V3)

[AI] 07. ADR 036-040 - PoC/Pilot ๊ธฐ์ˆ  ์„ ์ •

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-036: OCR vs VLM ์„ ํƒ ์ „๋žต (CLOVA + Gemini Vision)
  • ADR-037: vLLM ๋กœ์ปฌ ์„œ๋น™ ๋ชจ๋ธ ์„ ์ • (EXAONE vs Qwen)
  • ADR-038: ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „๋žต (Gemini โ†’ ko-sroberta)
  • ADR-039: VectorDB ์ „๋žต (ChromaDB ์œ ์ง€ - V3 ์ตœ์ )
  • ADR-040: ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ์ „๋žต

[AI] 08. ADR 041-045 - ์ธํ”„๋ผ ํ™•์žฅ ๋ฐ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Šค์ผ€์ผ๋ง โญ NEW

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-041: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Šค์ผ€์ผ๋ง ์ „๋žต (RunPod + Lambda)
  • ADR-042: (์˜ˆ์ •)
  • ADR-043: (์˜ˆ์ •)
  • ADR-044: (์˜ˆ์ •)
  • ADR-045: (์˜ˆ์ •)

[AI] 09. ADR 046-050 - ๋น„๋™๊ธฐ ์ตœ์ ํ™”

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-046: ChromaDB ์šด์˜ ๋ชจ๋“œ ์„ ์ • (Embedded โ†’ Server Mode)
  • ADR-047: EXAONE 32B ๋ชจ๋ธ ์„œ๋น™์„ ์œ„ํ•œ GPU ์ธํ”„๋ผ ์„ ํƒ (RunPod)
  • ADR-048: ์ฑ„ํŒ…ยท๋ฉด์ ‘ ํ”ผ๋“œ๋ฐฑ ์‘๋‹ต ๋ฐฉ์‹ (์ŠคํŠธ๋ฆฌ๋ฐ ์œ ์ง€)
  • ADR-049: ๋น„๋™๊ธฐ ํ˜ธ์ถœ ๋ฐฉ์‹ - ์ž„๋ฒ ๋”ฉ ๋ฐฐ์น˜ ๋ฐ ๋…๋ฆฝ ์ž‘์—… ๋ณ‘๋ ฌํ™”
  • ADR-050: RAGยท๋ฉด์ ‘ ์กฐํšŒ ๋ณ‘๋ ฌํ™” (asyncio.gather)

[AI] 10. ADR 051-055 - ํŒŒ์ดํ”„๋ผ์ธ ๊ณ ๋„ํ™”

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-051: ๋ชจ์˜ ๋ฉด์ ‘ ์งˆ๋ฌธ ์ƒ์„ฑ ๋ฐฉ์‹ (๋‹คํšŒ ๊ฐœ๋ณ„ ํ˜ธ์ถœ โ†’ 1ํšŒ ๋ฐฐ์น˜ ์ƒ์„ฑ)
  • ADR-052: ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ ๋ฐฉ์‹ ์ง„ํ™” (์ฝ”๋“œ ๋‚ด์žฅ โ†’ YAML ์™ธ๋ถ€ํ™”)
  • ADR-053: ์ฑ„ํŒ… ๋Œ€ํ™” ๋งฅ๋ฝ(history) ์‹ค์ œ ๋ฐ˜์˜ (LCEL ๋„์ž…)
  • ADR-054: RAG ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ํ™•์žฅ (Dense MMR + Sparse BM25 ์•™์ƒ๋ธ”)
  • ADR-055: ์บ์‹œยท์งˆ๋ฌธ ์ด๋ ฅ ์ €์žฅ์†Œ ์ „๋žต (์ธ๋ฉ”๋ชจ๋ฆฌ ์šฐ์„ , Redis/Kafka ํ™•์žฅ)

[AI] 11. ADR 056-060 - RAG ํ™•์žฅ

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-056: ๋ชจ์˜๋ฉด์ ‘ ๊ฒฐ๊ณผ VectorDB ์ž๋™ ์ ์žฌ ํŒŒ์ดํ”„๋ผ์ธ
  • ADR-057: ๋ฉด์ ‘ยท์ฑ„ํŒ… ๋Œ€ํ™” ๋งฅ๋ฝ ๊ด€๋ฆฌ ์ „๋žต (์„ธ์…˜ ๊ธฐ๋ฐ˜, ๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ ๋ฏธ๋„์ž…)
  • ADR-058: PDF ํ…์ŠคํŠธ ์ถ”์ถœ ์ „๋žต (OCR ํŒŒ์ดํ”„๋ผ์ธ ์œ ์ง€)
  • ADR-059: URL ๊ธฐ๋ฐ˜ ๋ฌธ์„œ ์ž…๋ ฅ ์ง€์› (WebBaseLoader ๋„์ž…)
  • ADR-060: ํ…์ŠคํŠธ ๋ถ„ํ•  ์ „๋žต (RecursiveCharacterTextSplitter + pdfplumber ์ „ํ™˜ ๋กœ๋“œ๋งต)

[AI] 12. ADR 061-065 - ๋ณด์•ˆ ๋ฐ DB ์—ฐ๋™

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-061: RAGChain MMR ์ฝ”๋ฃจํ‹ด ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ Langfuse ๊ด€์ธก ๋„์ž…
  • ADR-062: ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜ ๋ฐฉ์–ด ์‹œ์Šคํ…œ (์ •๊ทœ์‹ ๊ธฐ๋ฐ˜ 2๋‹จ๊ณ„ ํ•„ํ„ฐ๋ง)
  • ADR-063: PDF ํ…์ŠคํŠธ ์ถ”์ถœ ์ „๋žต ์ง„ํ™” (pdfplumber ์šฐ์„  + OCR ํด๋ฐฑ)
  • ADR-064: ChromaDB-PostgreSQL ๋ฐ์ดํ„ฐ ์—ฐ๋™ ์ „๋žต (user_id ๊ธฐ๋ฐ˜ ๊ฐ„์ ‘ ์—ฐ๋™)
  • ADR-065: ์ž„๋ฒ ๋”ฉ ์บ์‹œ ์ „๋žต (CacheBackedEmbeddings + LocalFileStore)

[AI] 13. ADR 066-070 - ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ์ „๋žต

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-066: ๊ธฐ์ˆ ๋ฉด์ ‘ ์งˆ๋ฌธ ์ค‘๋ณต ๋ฐฉ์ง€ (์ž„๋ฒ ๋”ฉ ์œ ์‚ฌ๋„ + ๋‹ต๋ณ€ ํ’ˆ์งˆ ํ‰๊ฐ€)
  • ADR-067: LangChain 6๋Œ€ ๋ชจ๋“ˆ ๋„์ž… ํ˜„ํ™ฉ (4๊ฐœ ์™„์ „ ๋„์ž…, Memory ์˜๋„์  ๋ฏธ๋„์ž…)
  • ADR-068: LangChain Callbacks ๋„์ž… (Langfuse CallbackHandler ์ „ํ™˜)
  • ADR-069: RAG ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ํ™•์žฅ ์ „๋žต ๋กœ๋“œ๋งต
  • ADR-070: LCEL ์ „ํ™˜ + ๋ถ€๋ชจ ๋ฌธ์„œยท๋‹ค์ค‘ ์ฟผ๋ฆฌ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๋„์ž… ๊ณ„ํš

[AI] 14. ADR 071-075 - ๊ณ ๊ธ‰ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๋„์ž…

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-071: ๋ถ€๋ชจ ๋ฌธ์„œ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๋„์ž… (ParentDocumentRetriever + InMemoryStore)
  • ADR-072: ๋‹ค์ค‘ ์ฟผ๋ฆฌ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๋„์ž… (LCEL ์ฒด์ธ ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ ๋‹ค๊ฐํ™”)
  • ADR-073: ๋‹ค์ค‘ ๋ฒกํ„ฐ ์Šคํ† ์–ด ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๋„์ž… (์š”์•ฝ ์ž„๋ฒ ๋”ฉ + ๊ฐ€์„ค ์ฟผ๋ฆฌ)
  • ADR-074: ์…€ํ”„ ์ฟผ๋ฆฌ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๋„์ž… (๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐํ™” ๊ฒ€์ƒ‰)
  • ADR-075: ์‹œ๊ฐ„ ๊ฐ€์ค‘ ๋ฒกํ„ฐ ์Šคํ† ์–ด ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๋„์ž… (๊ฐ์‡ ์œจ ๊ธฐ๋ฐ˜ ์ตœ์‹ ์„ฑ ๋ฐ˜์˜)

[AI] 16. ADR 081-085 - SageMaker ๋„์ž… (ADR-076~080 ํŒŒ์ผ ์—†์Œ)

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-081: Amazon SageMaker ๋„์ž… ๊ฒฐ์ • (๊ด€๋ฆฌํ˜• ML ์„œ๋น™ ํ”Œ๋žซํผ ์„ ์ •)
  • ADR-082: SageMaker ํ˜ธ์ŠคํŒ… ๋ฐฉ์‹ (์‹ค์‹œ๊ฐ„ + ๋น„๋™๊ธฐ ํ˜ผํ•ฉ ์ „๋žต)
  • ADR-083: SageMaker์™€ ๊ธฐ์กด vLLMยทRunPod ํ†ตํ•ฉ ์ „๋žต
  • ADR-084: SageMaker ๋ชจ๋ธ ํŒจํ‚ค์ง• ๋ฐ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ
  • ADR-085: SageMaker ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋น„์šฉ ๊ด€๋ฆฌ (CloudWatch + Cost Explorer)

[AI] 17. ADR 086-090 - LLM ์ตœ์ ํ™” ๋ฐ MLOps

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-086: ํšจ์œจ์„ฑยท๋‹ต๋ณ€ ํ’ˆ์งˆยท์•ˆ์ •์„ฑ โ€” Exaone 8B ์ œ์™ธ, Gemini API ์œ ์ง€
  • ADR-087: SageMaker ๋„์ž… โ€” LLM ํŒŒ์ธํŠœ๋‹ ํ•„์ˆ˜ 5๋Œ€ ๊ธฐ๋Šฅ
  • ADR-088: ์ฑ„์šฉ ํŠธ๋ Œ๋“œ ๋ฐฐ์น˜ ํ•™์Šต ํŒŒ์ดํ”„๋ผ์ธ (ํฌ๋ก +Celery + SageMaker Training)
  • ADR-089: ํ•™์Šตยท๋ฐฐํฌ์šฉ Docker ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ (AWS ECR)
  • ADR-090: ๊ฐœ์ธํ™” ์ถ”์ฒœ ๋„์ž… (Phase 1: ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ง, Phase 2: ํ˜‘์—… ํ•„ํ„ฐ๋ง)

[AI] 18. ADR 091-095 - OSS LLM ๋ฐ ํ‰๊ฐ€ ์ „๋žต

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-091: Langfuse LLM-as-Judge ๊ธฐ๋ฐ˜ ๋ชจ๋ธ ํ‰๊ฐ€ ์ „๋žต
  • ADR-092: vLLMยทExaONE 8Bยท32B ์„œ๋น™ ํŠธ๋žœ์Šคํฌ๋จธยท์–‘์žํ™” ํ…Œ์ŠคํŠธ ์ „๋žต
  • ADR-093: OSS LLM ์ฑ„ํƒ โ€” Qwen3-14B-Base ๋ฐ ๊ถŒ์žฅ GPU ์ธ์Šคํ„ด์Šค
  • ADR-094: ์ฑ„์šฉ ํŠธ๋ Œ๋“œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ (WebBaseLoader ์ž์ฒด ํฌ๋กค๋ง)
  • ADR-095: ์ฑ„์šฉ ํŠธ๋ Œ๋“œ ์ž๋™ ํฌ๋กค๋ง ๋กœ๋“œ๋งต (WebBaseLoader โ†’ Tavily)

[AI] 19. ADR 096-100 - ์ธํ”„๋ผ ๋ฐ ์šด์˜ ์ตœ์ ํ™”

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-096: Celery Beat ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์œ„ํ•œ Redis/ElastiCache ํ†ตํ•ฉ ์ „๋žต
  • ADR-097: AI ์„œ๋ฒ„ ์ค‘๊ฐ„ ๊ตฌํ˜„ ์ฒดํฌํฌ์ธํŠธ (๋„์ž… ํ˜„ํ™ฉ ์ ๊ฒ€ ๋ฐ ์šฐ์„ ์ˆœ์œ„ ์ •๋ฆฌ)
  • ADR-098: LLM ํŽ˜๋ฅด์†Œ๋‚˜ ๊ฐ•ํ™” ์ „๋žต (๋ฉด์ ‘๊ด€ ์บ๋ฆญํ„ฐ ๋‹ค์–‘ํ™”)
  • ADR-099: OCR ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ์ˆœํ™” (LangChain PDFLoader ํ™•์ •)
  • ADR-100: CORS ์ •์ฑ… ์ˆ˜์ • (๋ช…์‹œ์  ๋„๋ฉ”์ธ ๊ด€๋ฆฌ + ํ™˜๊ฒฝ๋ณ€์ˆ˜ํ™”)

[AI] 20. ADR 101-105 - ๊ธฐ๋Šฅ ๊ณ ๋„ํ™”

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-101: Tavily Search API ๋„์ž… (์ฑ„์šฉ ํŠธ๋ Œ๋“œ Phase 2 ํฌ๋กค๋ง ๊ณ ๋„ํ™”)
  • ADR-102: CPU-bound ๋น„๋™๊ธฐ ํƒœ์Šคํฌ Celery ์ด๊ด€ (504 ํƒ€์ž„์•„์›ƒ ํ•ด๊ฒฐ)
  • ADR-103: Tavily Search API ์ „์ฒด ๊ตฌํ˜„ ์™„๋ฃŒ (๊ฒ€์ƒ‰ API + ์บ์‹ฑ + ํด๋ฐฑ)
  • ADR-104: RAG ๋ฆฌ๋žญ์ปค ์„ ์ • (FlashRank ๋„์ž…)
  • ADR-105: AI ์„œ๋น„์Šค Redis ์‚ฌ์šฉ ํ˜„ํ™ฉ ๋ฐ AWS ElastiCache ์—ฐ๋™ ๊ฐ€์ด๋“œ

[AI] 21. ADR 106-110 - LCEL ์•„ํ‚คํ…์ฒ˜ ๊ณ ๋„ํ™”

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-106: RAG ํŒŒ์ดํ”„๋ผ์ธ ๊ณ ๋„ํ™” ๋กœ๋“œ๋งต (LCEL โ†’ ๊ณ ๊ธ‰ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ โ†’ RAPTOR)
  • ADR-107: Docker Compose ๋™์‹œ์„ฑ ํ™•์žฅ (Gunicorn 4 Uvicorn Workers)
  • ADR-108: Celery Fallback ์ „๋žต (Redis ์—ฐ๊ฒฐ ๋ถˆ๊ฐ€ ์‹œ asyncio.create_task() ์ „ํ™˜)
  • ADR-109: ์‚ฌ์ „ ์ •์˜ ์š”์•ฝ ์ฒด์ธ ์„ ํƒ ์ „๋žต (stuff/map-reduce/map-refine/CoD)
  • ADR-110: LCEL ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• ์ „๋ฉด ๋„์ž… (Runnable ๊ฐ์ฒด ์กฐํ•ฉ)

[AI] 22. ADR 111-115 - ๋ชจ๋ธ ํ‰๊ฐ€ ๋ฐ ML ํŒŒ์ดํ”„๋ผ์ธ

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-111: ์–ธ์–ด๋ชจ๋ธ ์œ ํ˜•๋ณ„ ์ ์šฉ ์ „๋žต (MLM/์ž๊ธฐํšŒ๊ท€/ํŠธ๋žœ์Šคํฌ๋จธ ์—ญํ•  ๋ถ„๋ฆฌ)
  • ADR-112: AI ํ‰๊ฐ€ ๊ณ ๋„ํ™” ์ „๋žต (Faithfulness/Context Relevance/Multi-Judge)
  • ADR-113: Langfuse ๊ธฐ๋ฐ˜ RAG ํ‰๊ฐ€ ๊ณ ๋„ํ™” (Dataset API/Heuristic/RAGAS)
  • ADR-114: ML ํŒŒ์ดํ”„๋ผ์ธ ๋ฐฐ์น˜ ์ „๋žต (Dev ํ•™์Šต / Prod ์ถ”๋ก  ๋ถ„๋ฆฌ ์•„ํ‚คํ…์ฒ˜)
  • ADR-115: SageMaker Managed Instance ์ „๋žต (์ผํšŒ์„ฑ ํ•™์Šต + ์ƒ์‹œ ์ถ”๋ก )

[AI] 23. ADR 116-120 - SageMaker ์ž๋™ํ™” ์ „๋žต

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-116: SageMaker ์ž๋™ํ™” ๋„๊ตฌ ๋น„๊ต (๋„์ž… vs ์ œ์™ธ ๊ฒฐ์ •)
  • ADR-117: SageMaker Pipelines vs Airflow (SageMaker Pipelines ์„ ํƒ)
  • ADR-118: SageMaker AMT ๋„์ž… (Pipeline TuningStep + Bayesian Optimization)
  • ADR-119: ECR ๊ธฐ๋ฐ˜ ํ•™์Šต ์ปจํ…Œ์ด๋„ˆ ํ†ตํ•ฉ ๊ด€๋ฆฌ (JumpStart ๋ฏธ์‚ฌ์šฉ ๊ฒฐ์ •)
  • ADR-120: SageMaker Experiments ๋„์ž… (Langfuse์™€ ์—ญํ•  ๋ถ„๋ฆฌ)

[AI] 24. ADR 121-125 - ์•ˆ์ •์„ฑ ๋ฐ ์ฝ”๋“œ ํ’ˆ์งˆ

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-121: INTERVIEW PHASE 1 SSE Keepalive (300โ†’180์ดˆ, ํƒ€์ž„์•„์›ƒ ๋Œ€์‘)
  • ADR-122: VectorDB โ†’ S3 ํ•™์Šต ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” Celery ํƒœ์Šคํฌ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
  • ADR-123: Gunicorn ๋ฉ€ํ‹ฐ์›Œ์ปค ์„ธ์…˜ ํŒŒ์ผ ๋ฝ (threading.Lock โ†’ FileLock)
  • ADR-124: LLM ์‘๋‹ต ํ—ฌํผ ์ถ”์ถœ ๋ฐ ๊ผฌ๋ฆฌ์งˆ๋ฌธ Silent Failure ์ œ๊ฑฐ
  • ADR-125: Few-shot ๊ฑฐ๋ฆฌ ์™„ํ™” ์ „๋žต ๋ฐ ํ‰๊ฐ€ ํ”„๋กฌํ”„ํŠธ ์™ธ๋ถ€ํ™”

[AI] 25. ADR 126-130 - ๊ณ ๊ฐ€์šฉ์„ฑ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-126: Redis ๊ณ ๊ฐ€์šฉ์„ฑ(HA) ์ „๋žต (ElastiCache Replication Group)
  • ADR-127: SSE ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ํ•ด์ œ ๊ฐ์ง€ (is_disconnected() + CancelledError)
  • ADR-128: ํด๋ง ํžŒํŠธ ์ถ”๊ฐ€ (202 ์‘๋‹ต์— interval_ms / max_attempts ํฌํ•จ)
  • ADR-129: ์ธํ„ฐ๋ทฐ ๋ผ์šฐํŠธ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ณ ๋„ํ™” (ํ—ฌํผ ์ถ”์ถœ / Few-Shot ์บ์‹œ / ํ”„๋กฌํ”„ํŠธ ์™ธ๋ถ€ํ™”)
  • ADR-130: FileTaskStore โ†’ RedisTaskStore ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (k8s ๋ฉ€ํ‹ฐ ํŒŒ๋“œ ๋Œ€์‘)

[AI] 26. ADR 131-135 - ์‹œ์Šคํ…œ ๊ณ ๋„ํ™” ๋ฐ ์™„์„ฑ

์ƒ์„ธ ๋ชฉ์ฐจ ๋ณด๊ธฐ
  • ADR-131: Tavily ๊ฒฐ๊ณผ ์‹ ๋ขฐ์„ฑ ๊ฒ€์ฆ + ์ตœ์‹  ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง (ADR-101 ๊ณ ๋„ํ™”)
  • ADR-132: ์„ธ์…˜ ์Šคํ† ์–ดยทํƒœ์Šคํฌ ํ Redis ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (k8s ๋ฉ€ํ‹ฐ ํŒŒ๋“œ ์ƒํƒœ ๊ณต์œ )
  • ADR-133: SageMaker Celery Worker ๋ฐฐ์น˜ ์ „๋žต (sagemaker_sync ํ ์ฒ˜๋ฆฌ)
  • ADR-134: BM25+MMR ์•™์ƒ๋ธ” ํŒŒ์ดํ”„๋ผ์ธ ๋Ÿฐํƒ€์ž„ ๊ฒ€์ฆ ๊ฐ€์‹œ์„ฑ ํ™•๋ณด
  • ADR-135: ๋น„๋™๊ธฐ ์ž‘์—… ์™„๋ฃŒ ์•Œ๋ฆผ ์ „๋žต (Webhook Primary + Polling Fallback)

๐Ÿš€ ์ฃผ์š” AI ๊ธฐ๋Šฅ

๊ธฐ๋Šฅ ์„ค๋ช… ์‚ฌ์šฉ ๊ธฐ์ˆ 
์ด๋ ฅ์„œ ๋ถ„์„ ๊ฐ•์ /์•ฝ์  ๋ถ„์„ + ๊ฐœ์„ ์  ์ œ์•ˆ LLM + RAG + BM25 Hybrid
์ฑ„์šฉ๊ณต๊ณ  ๋งค์นญ ์ด๋ ฅ์„œ-์ฑ„์šฉ๊ณต๊ณ  ์ ํ•ฉ๋„ ๋ถ„์„ Gemini Embedding + LLM
๋ชจ์˜ ๋ฉด์ ‘ AI ๋ฉด์ ‘๊ด€ (๊ผฌ๋ฆฌ์งˆ๋ฌธ + ํ‰๊ฐ€) LangGraph + Question Pool
์บ˜๋ฆฐ๋” ์—์ด์ „ํŠธ ์ž์—ฐ์–ด๋กœ ์ผ์ • CRUD Tool Calling
๊ฐœ์ธ์ •๋ณด ๋งˆ์Šคํ‚น ์ฒจ๋ถ€ํŒŒ์ผ ๊ฐœ์ธ์ •๋ณด ์ž๋™ ๋งˆ์Šคํ‚น VLM + YOLO

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ

๊ตฌ๋ถ„ ๊ธฐ์ˆ 
Framework FastAPI (Python 3.10)
LLM Gemini 3 Flash/Pro + GPT-5 mini (Fallback)
Workflow LangChain + LangGraph
Embedding Gemini Embedding (๋‹จ์ผ ๋ชจ๋ธ, ADR-021)
VectorDB ChromaDB
Retriever BM25 + Vector Hybrid Search (ADR-021)
Reranker Cohere Rerank API (ADR-020)
Cache Redis (Session + Question Pool)
OCR CLOVA OCR / Gemini Vision
Monitoring LangSmith (ADR-016)
Testing n8n (ADR-022)
Batch Celery Beat (ADR-015)
Infrastructure RunPod (70%) + Lambda (30%) ํ•˜์ด๋ธŒ๋ฆฌ๋“œ (ADR-041)

๐Ÿ“‹ ADR ์š”์•ฝ

ADR 001-010 (๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜)

# ์ œ๋ชฉ ๊ฒฐ์ •
001 LLM ์ŠคํŠธ๋ฆฌ๋ฐ ํ†ต์‹  SSE ์„ ํƒ
002 ๋ถ„์„ ๊ฒฐ๊ณผ ์ €์žฅ JSON (ํ•˜์ด๋ธŒ๋ฆฌ๋“œ)
003 VectorDB ์„ ํƒ ChromaDB
004 ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ Polling
005 ๋ฉด์ ‘ Q&A ์ €์žฅ ๋งค ๋ฌธ๋‹ต ๊ฐœ๋ณ„ ์ €์žฅ
006 ์ธํ”„๋ผ ์ง„ํ™” ์ „๋žต EC2 โ†’ Docker โ†’ K8s
007 K8s ๋„์ž… ์‹œ๊ธฐ V3
008 OCR + ์ž„๋ฒ ๋”ฉ AI Server ๋‚ด๋ถ€ ํ†ตํ•ฉ
009 ์ฑ„ํŒ… ์ปจํ…์ŠคํŠธ Redis + LangChain Memory
010 OCR ์„œ๋น„์Šค Gemini Vision (V1)

ADR 011-020 (๊ณ ๊ธ‰ ๊ธฐ๋Šฅ)

# ์ œ๋ชฉ ๊ฒฐ์ •
011 ์„œ๋ฒ„๋ฆฌ์Šค API V3์—์„œ Lambda ๊ฒ€ํ† 
012 ์บ˜๋ฆฐ๋” ์ฐจ๋ณ„ํ™” V2: ์ค€๋น„ ๊ฐ€์ด๋“œ
013 Wiki ์šด์˜ GitHub Wiki + ๋ธ”๋กœ๊ทธ
014 LLM ๋ชจ๋ธ ์„ ์ • Gemini 3 Flash + GPT-5 mini Fallback
015 ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ์ „๋žต Celery Beat โ†’ Airflow ๊ฒ€ํ† 
016 LLM ๋ชจ๋‹ˆํ„ฐ๋ง LangSmith (V2~)
017 FastAPI ์„œ๋ฒ„ ๋ถ„๋ฆฌ V3: ๋‹จ์ผ โ†’ V4: ๋ชจ๋ธ/์„œ๋น„์Šค ๋ถ„๋ฆฌ
018 ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ Celery Beat (V3) โ†’ Kafka ๊ฒ€ํ†  (V4+)
019 LLM ์ถœ๋ ฅ ๊ตฌ์กฐํ™” LangChain + LangGraph (V3~)
020 RAG Reranker Cohere Rerank (V3~)

ADR 021-025 (์ตœ์ ํ™”) โญ NEW

# ์ œ๋ชฉ ๊ฒฐ์ •
021 Embedding ๋ชจ๋ธ ํ†ต์ผ Gemini ๋‹จ์ผ ๋ชจ๋ธ + BM25 Hybrid
022 AI ํŒŒ์ดํ”„๋ผ์ธ ํ…Œ์ŠคํŠธ n8n ๋„์ž… (๊ฐœ๋ฐœ/ํ…Œ์ŠคํŠธ)
023 ๋ฉด์ ‘ ์งˆ๋ฌธ Pool ์บ์‹ฑ Question Pool + RAG Fallback (80% ๋น„์šฉ ์ ˆ๊ฐ)
024 VectorDB ํ•„ํ„ฐ๋ง ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง (V3) โ†’ RDB Hybrid ๊ฒ€ํ†  (V4)
025 (์˜ˆ์ •) -

ADR 041-045 (์ธํ”„๋ผ ํ™•์žฅ) โญ NEW

# ์ œ๋ชฉ ๊ฒฐ์ •
041 ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Šค์ผ€์ผ๋ง RunPod (70%) + Lambda (30%) - 24% ๋น„์šฉ ์ ˆ๊ฐ
042 (์˜ˆ์ •) -
043 (์˜ˆ์ •) -
044 (์˜ˆ์ •) -
045 (์˜ˆ์ •) -

ADR 046-050 (๋น„๋™๊ธฐ ์ตœ์ ํ™”)

# ์ œ๋ชฉ ๊ฒฐ์ •
046 ChromaDB ์šด์˜ ๋ชจ๋“œ Server Mode ๋„์ž… (K8s ๋ฉ€ํ‹ฐ ์ธ์Šคํ„ด์Šค ์ง€์›)
047 GPU ์ธํ”„๋ผ ์„ ํƒ RunPod ์„œ๋ฒ„๋ฆฌ์Šค (๋น„์šฉยทํ• ๋‹น๋Ÿ‰ ์ตœ์ )
048 ์ฑ„ํŒ…ยท๋ฉด์ ‘ ์‘๋‹ต ๋ฐฉ์‹ ์ŠคํŠธ๋ฆฌ๋ฐ ์œ ์ง€ (UXยท๋น„์šฉยท์•ˆ์ •์„ฑ)
049 ์ž„๋ฒ ๋”ฉ ๋ฐฐ์น˜ ๋ณ‘๋ ฌํ™” asyncio.gather (์ฒ˜๋ฆฌ๋Ÿ‰ยท๋น„์šฉ ๊ฐœ์„ )
050 RAGยท๋ฉด์ ‘ ์กฐํšŒ ๋ณ‘๋ ฌํ™” asyncio.gather (์ง€์—ฐ ๋ฐ˜๊ฐ)

ADR 051-055 (ํŒŒ์ดํ”„๋ผ์ธ ๊ณ ๋„ํ™”)

# ์ œ๋ชฉ ๊ฒฐ์ •
051 ๋ฉด์ ‘ ์งˆ๋ฌธ ์ƒ์„ฑ ๋ฐฉ์‹ 1ํšŒ ๋ฐฐ์น˜ ์ƒ์„ฑ (API ํ˜ธ์ถœ 5โ†’1ํšŒ)
052 ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ ๋ฐฉ์‹ YAML ์™ธ๋ถ€ํ™” (๋ฒ„์ „ ๊ด€๋ฆฌยท๋ณด์•ˆยท์žฌ์‚ฌ์šฉ)
053 ์ฑ„ํŒ… ๋Œ€ํ™” ๋งฅ๋ฝ ๋ฐ˜์˜ LCEL ๋ฌธ๋ฒ• ๋„์ž… (Gemini ํžˆ์Šคํ† ๋ฆฌ ์ž๋™ ๊ด€๋ฆฌ)
054 RAG ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ํ™•์žฅ Dense(MMR)+Sparse(BM25) ์•™์ƒ๋ธ”
055 ์บ์‹œยท์งˆ๋ฌธ ์ด๋ ฅ ์ €์žฅ ์ธ๋ฉ”๋ชจ๋ฆฌ ์šฐ์„ , Redis/Kafka ํ™•์žฅ ๋Œ€๋น„

ADR 056-060 (RAG ํ™•์žฅ)

# ์ œ๋ชฉ ๊ฒฐ์ •
056 ๋ฉด์ ‘ ๊ฒฐ๊ณผ VectorDB ์ ์žฌ ๋น„๋™๊ธฐ ์ž๋™ ์ ์žฌ + ๋ฐฐ์น˜ CLI
057 ๋Œ€ํ™” ๋งฅ๋ฝ ๊ด€๋ฆฌ ์ „๋žต ์„ธ์…˜ ๊ธฐ๋ฐ˜ ๊ด€๋ฆฌ (๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ ๋ฏธ๋„์ž…)
058 PDF ํ…์ŠคํŠธ ์ถ”์ถœ OCR ํŒŒ์ดํ”„๋ผ์ธ ์œ ์ง€ (LangChain Loader ๋ฏธ๋„์ž…)
059 URL ๊ธฐ๋ฐ˜ ๋ฌธ์„œ ์ž…๋ ฅ WebBaseLoader ๋„์ž…
060 ํ…์ŠคํŠธ ๋ถ„ํ•  ์ „๋žต RecursiveCharacterTextSplitter + pdfplumber ์ „ํ™˜ ์ค€๋น„

ADR 061-065 (๋ณด์•ˆ ๋ฐ DB ์—ฐ๋™)

# ์ œ๋ชฉ ๊ฒฐ์ •
061 MMR ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ๊ด€์ธก Langfuse ์ž„๋ฒ ๋”ฉยท๋ฆฌํŠธ๋ฆฌ๋ฒŒ span ์ถ”๊ฐ€
062 ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜ ๋ฐฉ์–ด ์ •๊ทœ์‹ ๊ธฐ๋ฐ˜ 2๋‹จ๊ณ„ ํ•„ํ„ฐ๋ง
063 PDF ์ถ”์ถœ ์ „๋žต ์ง„ํ™” pdfplumber ์šฐ์„  + EasyOCR ํด๋ฐฑ
064 ChromaDB-PostgreSQL ์—ฐ๋™ user_id ๊ธฐ๋ฐ˜ ๊ฐ„์ ‘ ์—ฐ๋™
065 ์ž„๋ฒ ๋”ฉ ์บ์‹œ ์ „๋žต CacheBackedEmbeddings + LocalFileStore

ADR 066-070 (๋ฆฌํŠธ๋ฆฌ๋ฒ„ ์ „๋žต)

# ์ œ๋ชฉ ๊ฒฐ์ •
066 ๋ฉด์ ‘ ์งˆ๋ฌธ ์ค‘๋ณต ๋ฐฉ์ง€ ๋‹ต๋ณ€ ํ’ˆ์งˆ ๋“ฑ๊ธ‰ + ์œ ์‚ฌ๋„ ํ•„ํ„ฐ๋ง
067 LangChain 6๋Œ€ ๋ชจ๋“ˆ ๋„์ž… 4๊ฐœ ์™„์ „ ๋„์ž…, Memory ์˜๋„์  ๋ฏธ๋„์ž…
068 LangChain Callbacks Langfuse CallbackHandler ์ „ํ™˜
069 RAG ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ํ™•์žฅ ์ „๋žต ๋‹ค์ค‘ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๋กœ๋“œ๋งต ์ˆ˜๋ฆฝ
070 LCEL ์ „ํ™˜ + ๊ณ ๊ธ‰ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ LCEL + ๊ณ ๊ธ‰ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ 5์ข… ๋„์ž… ๋กœ๋“œ๋งต

ADR 071-075 (๊ณ ๊ธ‰ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๋„์ž…)

# ์ œ๋ชฉ ๊ฒฐ์ •
071 ๋ถ€๋ชจ ๋ฌธ์„œ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ParentDocumentRetriever + InMemoryStore
072 ๋‹ค์ค‘ ์ฟผ๋ฆฌ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ LLM์œผ๋กœ 3๊ฐ€์ง€ ์ฟผ๋ฆฌ ๋ณ€ํ˜• ์ƒ์„ฑ
073 ๋‹ค์ค‘ ๋ฒกํ„ฐ ์Šคํ† ์–ด ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ์š”์•ฝยท๊ฐ€์„ค ์ฟผ๋ฆฌ ํ™œ์šฉ
074 ์…€ํ”„ ์ฟผ๋ฆฌ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ LLM ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•„ํ„ฐ ์ž๋™ ์ƒ์„ฑ
075 ์‹œ๊ฐ„ ๊ฐ€์ค‘ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๊ฐ์‡ ์œจ ๊ธฐ๋ฐ˜ ์ตœ์‹ ์„ฑ ๋ฐ˜์˜

ADR 081-085 (SageMaker ๋„์ž…)

# ์ œ๋ชฉ ๊ฒฐ์ •
081 SageMaker ๋„์ž… ๊ฒฐ์ • AWS ์ผ์›ํ™”, MLOps ํ‘œ์ค€ํ™”
082 SageMaker ํ˜ธ์ŠคํŒ… ๋ฐฉ์‹ ์‹ค์‹œ๊ฐ„+๋น„๋™๊ธฐ ํ˜ผํ•ฉ ์ „๋žต
083 SageMaker-vLLM-RunPod ํ†ตํ•ฉ 8B SageMaker ์„œ๋น™, 32B ๋ฏธ์‚ฌ์šฉ
084 ๋ชจ๋ธ ํŒจํ‚ค์ง• ๋ฐ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ Pipeline + Model Registry ๋„์ž…
085 SageMaker ๋ชจ๋‹ˆํ„ฐ๋ง CloudWatch + Cost Explorer

ADR 086-090 (LLM ์ตœ์ ํ™” ๋ฐ MLOps)

# ์ œ๋ชฉ ๊ฒฐ์ •
086 LLM ํšจ์œจ์„ฑ ์ „๋žต Gemini API ์œ ์ง€, Exaone 8B ์ œ์™ธ
087 SageMaker ํŒŒ์ธํŠœ๋‹ ํ•„์ˆ˜ ๊ธฐ๋Šฅ Training/Pipelines/Registry/Endpoint/Experiments
088 ์ฑ„์šฉ ํŠธ๋ Œ๋“œ ๋ฐฐ์น˜ ํ•™์Šต ํŒŒ์ดํ”„๋ผ์ธ ํฌ๋ก +Celery + SageMaker Training
089 ํ•™์Šตยท๋ฐฐํฌ์šฉ Docker ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ ECR ํ†ตํ•ฉ ๊ด€๋ฆฌ
090 ๊ฐœ์ธํ™” ์ถ”์ฒœ ๋„์ž… Phase 1: ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ง, Phase 2: ํ˜‘์—… ํ•„ํ„ฐ๋ง

ADR 091-095 (OSS LLM ๋ฐ ํ‰๊ฐ€ ์ „๋žต)

# ์ œ๋ชฉ ๊ฒฐ์ •
091 LLM-as-Judge ํ‰๊ฐ€ ์ „๋žต Langfuse ๊ธฐ๋ฐ˜ ํ’ˆ์งˆ ํ‰๊ฐ€ ์ž๋™ํ™”
092 vLLMยทExaONE ์„œ๋น™ ์ „๋žต 8B ์–‘์žํ™”+vLLM, AWQ ๊ฒ€ํ† 
093 OSS LLM ์ฑ„ํƒ Qwen3-14B-Base (H100ยทL40S ๊ถŒ์žฅ)
094 ์ฑ„์šฉ ํŠธ๋ Œ๋“œ ํฌ๋กค๋ง WebBaseLoader ์ž์ฒด ํฌ๋กค๋ง (Tavily ์ถ”ํ›„ ๊ฒ€ํ† )
095 ์ฑ„์šฉ ํŠธ๋ Œ๋“œ ์ž๋™ ํฌ๋กค๋ง ๋กœ๋“œ๋งต WebBaseLoader โ†’ Tavily ๋‹จ๊ณ„์  ์ „ํ™˜

ADR 096-100 (์ธํ”„๋ผ ๋ฐ ์šด์˜ ์ตœ์ ํ™”)

# ์ œ๋ชฉ ๊ฒฐ์ •
096 Celery Beat Redis/ElastiCache ํ†ตํ•ฉ ElastiCache Replication Group
097 AI ์„œ๋ฒ„ ์ค‘๊ฐ„ ์ฒดํฌํฌ์ธํŠธ ์šฐ์„ ์ˆœ์œ„: Langfuse > ์ž„๋ฒ ๋”ฉ ์บ์‹œ > RAG ๊ณ ๋„ํ™”
098 LLM ํŽ˜๋ฅด์†Œ๋‚˜ ๊ฐ•ํ™” ์ „๋žต ์ง๋ฌด๋ณ„ ํŽ˜๋ฅด์†Œ๋‚˜ + ํ”„๋กฌํ”„ํŠธ ์™ธ๋ถ€ํ™”
099 OCR ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ์ˆœํ™” LangChain PDFLoader ํ™•์ •
100 CORS ์ •์ฑ… ์ˆ˜์ • ๋ช…์‹œ์  ๋„๋ฉ”์ธ ๊ด€๋ฆฌ + ํ™˜๊ฒฝ๋ณ€์ˆ˜ํ™”

ADR 101-105 (๊ธฐ๋Šฅ ๊ณ ๋„ํ™”)

# ์ œ๋ชฉ ๊ฒฐ์ •
101 Tavily Search API ๋„์ž… Phase 2 ํฌ๋กค๋ง ๊ณ ๋„ํ™”
102 CPU-bound ํƒœ์Šคํฌ Celery ์ด๊ด€ text_extract/masking 504 ํƒ€์ž„์•„์›ƒ ํ•ด๊ฒฐ
103 Tavily Search API ๊ตฌํ˜„ ์™„๋ฃŒ ๊ฒ€์ƒ‰ API + ์บ์‹ฑ + ํด๋ฐฑ ๋กœ์ง
104 RAG ๋ฆฌ๋žญ์ปค ์„ ์ • FlashRank ๋„์ž…
105 Redis ์‚ฌ์šฉ ํ˜„ํ™ฉ ๋ฐ ElastiCache ์—ฐ๋™ ElastiCache ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€์ด๋“œ

ADR 106-110 (LCEL ์•„ํ‚คํ…์ฒ˜ ๊ณ ๋„ํ™”)

# ์ œ๋ชฉ ๊ฒฐ์ •
106 RAG ํŒŒ์ดํ”„๋ผ์ธ ๊ณ ๋„ํ™” ๋กœ๋“œ๋งต LCEL > ๊ณ ๊ธ‰ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ > RAPTOR ์ˆœ์„œ
107 Docker Compose ๋™์‹œ์„ฑ ํ™•์žฅ Gunicorn 4 ์›Œ์ปค (deploy.replicas ๋Œ€์ฒด)
108 Celery Fallback ์ „๋žต Redis ์‹คํŒจ ์‹œ asyncio.create_task() ์ž๋™ ์ „ํ™˜
109 ์š”์•ฝ ์ฒด์ธ ์„ ํƒ ์ „๋žต stuff/map-reduce/map-refine/CoD ๊ธธ์ด๋ณ„ ์„ ํƒ
110 LCEL ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• ์ „๋ฉด ๋„์ž… Runnable ๊ฐ์ฒด ์กฐํ•ฉ ๋„์ž…

ADR 111-115 (๋ชจ๋ธ ํ‰๊ฐ€ ๋ฐ ML ํŒŒ์ดํ”„๋ผ์ธ)

# ์ œ๋ชฉ ๊ฒฐ์ •
111 ์–ธ์–ด๋ชจ๋ธ ์œ ํ˜•๋ณ„ ์ ์šฉ ์ „๋žต MLMโ†’๋ฆฌ๋žญํ‚น, ์ž๊ธฐํšŒ๊ท€โ†’์ƒ์„ฑ, ํŠธ๋žœ์Šคํฌ๋จธโ†’์ž„๋ฒ ๋”ฉ
112 AI ํ‰๊ฐ€ ๊ณ ๋„ํ™” ์ „๋žต ๋‹ค์ค‘ ํ‰๊ฐ€ ์ง€ํ‘œ + Langfuse CI/CD ์ž๋™ํ™”
113 Langfuse ๊ธฐ๋ฐ˜ RAG ํ‰๊ฐ€ ๊ณ ๋„ํ™” ํœด๋ฆฌ์Šคํ‹ฑโ†’์Œ๋น„๊ตโ†’์˜จ๋ผ์ธ ์ƒ˜ํ”Œ๋ง + RAGAS
114 ML ํŒŒ์ดํ”„๋ผ์ธ ๋ฐฐ์น˜ ์ „๋žต Dev ํ•™์Šต / Prod ์ถ”๋ก  ์™„์ „ ๋ถ„๋ฆฌ
115 SageMaker Managed Instance ์ „๋žต ์ผํšŒ์„ฑ ํ•™์Šต + ์ƒ์‹œ ์ถ”๋ก  ๋น„์šฉ ์ตœ์ ํ™”

ADR 116-120 (SageMaker ์ž๋™ํ™” ์ „๋žต)

# ์ œ๋ชฉ ๊ฒฐ์ •
116 SageMaker ์ž๋™ํ™” ๋„๊ตฌ ๋น„๊ต Training/Pipelines/AMT/Experiments ๋„์ž…, Autopilot ์ œ์™ธ
117 SageMaker Pipelines vs Airflow SageMaker Pipelines ์„ ํƒ
118 SageMaker AMT ๋„์ž… Pipeline TuningStep (Bayesian Optimization)
119 ECR ๊ธฐ๋ฐ˜ ํ•™์Šต ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ECR ์ปค์Šคํ…€ ์ด๋ฏธ์ง€, JumpStart ๋ฏธ์‚ฌ์šฉ
120 SageMaker Experiments ๋„์ž… Dev ํ•™์Šต(Experiments) + Prod ์ถ”๋ก (Langfuse) ์—ญํ•  ๋ถ„๋ฆฌ

ADR 121-125 (์•ˆ์ •์„ฑ ๋ฐ ์ฝ”๋“œ ํ’ˆ์งˆ)

# ์ œ๋ชฉ ๊ฒฐ์ •
121 SSE Keepalive ์ „๋žต 300โ†’180์ดˆ ๋‹จ์ถ•, Nginx/Gunicorn ํƒ€์ž„์•„์›ƒ ๋Œ€์‘
122 VectorDBโ†’S3 Celery ๋™๊ธฐํ™” ๋ฐฐ์น˜ ํฌ๊ธฐ ์กฐ์ • + ์žฌ์‹œ๋„ ๋กœ์ง ์ถ”๊ฐ€
123 Gunicorn ์„ธ์…˜ ํŒŒ์ผ ๋ฝ threading.Lock โ†’ FileLock ๊ต์ฒด
124 LLM ์‘๋‹ต ํ—ฌํผ ์ถ”์ถœ ํ—ฌํผ ์ถ”์ถœ + Silent Failure ์ œ๊ฑฐ
125 Few-shot ๊ฑฐ๋ฆฌ ์™„ํ™” ๋ฐ ํ”„๋กฌํ”„ํŠธ ์™ธ๋ถ€ํ™” Few-shot ์ตœ์ ํ™” + ํ”„๋กฌํ”„ํŠธ ์™ธ๋ถ€ํ™”

ADR 126-130 (๊ณ ๊ฐ€์šฉ์„ฑ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜)

# ์ œ๋ชฉ ๊ฒฐ์ •
126 Redis HA ์ „๋žต ElastiCache Replication Group (์ž๋™ ํŽ˜์ผ์˜ค๋ฒ„)
127 SSE ์—ฐ๊ฒฐ ํ•ด์ œ ๊ฐ์ง€ is_disconnected() + CancelledError (๋ฆฌ์†Œ์Šค ๋ˆ„์ˆ˜ ๋ฐฉ์ง€)
128 ํด๋ง ํžŒํŠธ ์ถ”๊ฐ€ 202 ์‘๋‹ต์— interval_ms/max_attempts ํฌํ•จ
129 ์ธํ„ฐ๋ทฐ ๋ผ์šฐํŠธ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ณ ๋„ํ™” ํ—ฌํผ ํ•จ์ˆ˜ยท์บ์‹ฑยท์™ธ๋ถ€ํ™” ๋ฆฌํŒฉํ† ๋ง
130 FileTaskStore โ†’ RedisTaskStore ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ k8s ๋ฉ€ํ‹ฐ ํŒŒ๋“œ ์ƒํƒœ ๊ณต์œ 

ADR 131-135 (์‹œ์Šคํ…œ ๊ณ ๋„ํ™” ๋ฐ ์™„์„ฑ)

# ์ œ๋ชฉ ๊ฒฐ์ •
131 Tavily ๊ฒฐ๊ณผ ์‹ ๋ขฐ์„ฑ ๊ฒ€์ฆ ๋„๋ฉ”์ธ/๋‚ ์งœ/์Šค๋‹ˆํŽซ ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง
132 ์„ธ์…˜ ์Šคํ† ์–ดยทํƒœ์Šคํฌ ํ Redis ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ Redis ํ†ตํ•ฉ (k8s ํ™•์žฅ์„ฑ ๋ณด์žฅ)
133 SageMaker Celery Worker ๋ฐฐ์น˜ ์ „๋žต sagemaker_sync ํ ์ „์šฉ ์›Œ์ปค ๊ฒฉ๋ฆฌ
134 BM25+MMR ์•™์ƒ๋ธ” ๊ฐ€์‹œ์„ฑ ํ™•๋ณด Langfuse span ์ถ”๊ฐ€ (์•™์ƒ๋ธ” ์„ฑ๋Šฅ ์ถ”์ )
135 ๋น„๋™๊ธฐ ์ž‘์—… ์™„๋ฃŒ ์•Œ๋ฆผ ์ „๋žต Webhook ์šฐ์„  + ํด๋ง ํด๋ฐฑ

๐ŸŽฏ V3 ํ•ต์‹ฌ ๊ธฐ์ˆ  ๊ฒฐ์ •

Embedding ์ „๋žต (ADR-021)

  • โœ… Gemini Embedding ๋‹จ์ผ ๋ชจ๋ธ (๋ฒกํ„ฐ ๊ณต๊ฐ„ ํ†ต์ผ)
  • โœ… BM25 + Vector Hybrid Search (์ •ํ™•๋„ 10~15% ํ–ฅ์ƒ)
  • โŒ SBERT ์ž์ฒด ์„œ๋น™ ์ œ์™ธ (ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ)

RAG ์ตœ์ ํ™” (ADR-020, ADR-021)

BM25 (ํ‚ค์›Œ๋“œ 30%) + Gemini Embedding (์˜๋ฏธ 70%)
  โ†“
Hybrid Search (20๊ฐœ)
  โ†“
Cohere Reranker (3๊ฐœ)
  โ†“
LLM

๋น„์šฉ ์ ˆ๊ฐ (ADR-023)

  • โœ… Question Pool + RAG Fallback
  • โœ… ์บ์‹œ ํžˆํŠธ์œจ 80% โ†’ ๋น„์šฉ 80% ์ ˆ๊ฐ ($7.5 โ†’ $1.5/์›”)
โš ๏ธ **GitHub.com Fallback** โš ๏ธ