KANT Private LLM 엔지니어 교육과정에서 배우고 직접 실험한 내용을 기록합니다. 강의 원문을 옮기지 않고, 무엇을 이해했고 코드로 무엇을 확인했는지를 제 말로 정리합니다. 실습은 직접 실행하고 설명할 수 있을 때만 완료로 표시합니다.
| 항목 | 내용 |
|---|---|
| 현재 단계 | RAG 프로젝트(3) 진행 중 — 데이터 · 검색 담당, Naive 검색 완료 → Hybrid · Reranker |
| 최근 학습 | 2026-11-05 · RAG 프로젝트(3) 해운 Basic 색인 · 문단 800자 청킹 · Qdrant Cloud · Naive Hit@5 0.929 / Recall@5 0.564 |
| 다음 할 일 | RAG 프로젝트 Hybrid · Reranker · 3종 비교 · CE 마무리 과제 · RAG 남은 q_hard(7-4 · 8-4 · 9-2 · 9-3 · 9-4) · Python 보강 q 문제 |
| 밀린 실습 | 주말 실습 백로그에서 관리 |
| 날짜별 TIL | daily/ — 같은 내용을 하루 단위(오늘 배운 것 · 왜 중요한가 · 코드 · 헷갈린 점 · 내일 할 것)로 정리 |
| 목표 | 평가와 운영까지 고려하는 LLM 엔지니어 |
flowchart LR
PY[파이썬 베이직] --> BM[기초 수학] --> ML[머신러닝] --> DLB[딥러닝 기초] --> DLA[딥러닝 심화] --> LLM[LLM 실전]
LLM --> DE[데이터 엔지니어링] --> LC[LangChain] --> RAG[RAG] --> CE[Context Engineering] --> AG[AI Agent] --> OPS[LLMOps·서빙]
classDef done fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef now fill:#fef3c7,stroke:#d97706,color:#78350f
classDef next fill:#f3f4f6,stroke:#9ca3af,color:#374151
class PY,BM,ML,DLB,DLA done
class LLM,DE,LC,RAG,CE,OPS now
class AG next
초록: 이론 진도를 마친 구간 · 노랑: 진행 중 · 회색: 예정 (실습 완료 여부는 아래 목차의 상태를 기준으로 봅니다)
상태 표시 ✅ 완료 · 🧪 실습 일부 완료 · 📘 이론 정리 · ⏳ 실습 대기 · 📭 실습 자료 없음 · ⬜ 미수강
기초 수학 · basic-math/
| 장 | 주제 | 상태 |
|---|---|---|
| 1 | 벡터·행렬, 노름과 정규화, 내적과 코사인 유사도, 행렬곱과 선형층 (08-05) | 🧪 1-1·1-2 실습 |
| 2 | 선형 변환, span·rank·영공간, Ax = b, solve vs inv, 조건수 (08-06) |
🧪 2-2 완료 · 2-3 일부 |
| 3·4 | 고유값·PCA, 직교성과 최소제곱, SVD와 저랭크 근사 (08-07) | 🧪 4-1 실습 · PCA 미실행 |
| 5~7 | 텐서 shape, Attention QKᵀ/√d_k, Softmax·CE, 미분·역전파 (08-10) |
🧪 6-1 필수 실습 |
머신러닝 · machine-learning/
| 장 | 주제 | 상태 |
|---|---|---|
| 1 | 모델 평가와 임계값 선택 — baseline 비교, Recall 정책, test는 마지막 한 번 | ✅ 완료 |
| 2 | 트리 앙상블 — 배깅·랜덤포레스트·부스팅, 후보 모델 비교 | 🧪 2-1 문제 1-1만 완료 |
| 3 | 편향·분산 진단과 Ridge·Lasso·ElasticNet 규제 | 📘 이론 정리 |
| 4 | 클래스 불균형, 교차검증 선택, 데이터 누수 방지 | 📘 이론 정리 · ⏳ 4-1·4-2 |
| 5 | CV 기반 하이퍼파라미터 탐색, End-to-End Pipeline과 스키마 검증 | ✅ 완료 (5-2 심화는 재구현 필요) |
딥러닝 기초 · deep-learning-basics/
폴더 번호는 올린 순서이고, 장 번호는 강의 기준입니다. (예:
08-cnn-foundations= 12장)
| 장 | 주제 | 상태 | 폴더 |
|---|---|---|---|
| 1~2 | ML과 DL, 학습 흐름, Tensor dtype·shape·broadcasting, CPU/GPU 디버깅 | ✅ 완료 | 01 |
| 3 | 퍼셉트론, MLP, nn.Linear, flatten, forward |
✅ 완료 | 02 |
| 4 | 비선형성, ReLU·Sigmoid·Softmax와 출력층 계약 | ✅ 완료 | 03 |
| 5 | 손실 함수, optimizer, learning rate와 parameter 갱신 | ✅ 완료 (재실행 1건) | 04 |
| 6~7 | 계산 그래프·Autograd, Transform·DataLoader·split | 🧪 심화 일부 대기 | 05 |
| 8 | MLP 학습·검증·metric·history 종합 흐름 | 🧪 8-8만 완료 | 06 |
| 9 | Seed, 로깅, state_dict, checkpoint, 재개, 실험 폴더 |
🧪 기본 완료 · 수정 셀 재실행 필요 | 07 |
| 10 | 학습 곡선과 과적합·과소적합 진단 | ⬜ 건강 문제로 이월 | — |
| 12 | CNN 설계, 학습 파이프라인, GPU 메모리, MLP-CNN 비교, 실험 리포트 | ✅ 기본 완료 (12-4 수정 필요) | 08 |
| 13 | 시퀀스 데이터, RNN forward shape, 경사 소실과 clipping | ✅ 기본 완료 | 09 |
딥러닝 심화 · deep-learning-advanced/
| 장 | 주제 | 상태 |
|---|---|---|
| 1 | RNN/LSTM의 한계와 Transformer 등장 배경, config hash 재현성 | ✅ 완료 |
| 2 | 데이터 스키마 감사, subword tokenizer, 동적 padding, offset mapping | ✅ 완료 |
| 3 | Q·K·V, Scaled Dot-Product Attention, mask, Multi-Head, GQA KV Cache | ✅ 완료 |
| 4강 | Transformer 전체 구조 — Encoder·Decoder 계열, 위치 정보, Causal Mask, FFN·Residual·LayerNorm, KV Cache (폴더 09) | 📘 이론 정리 |
| 4 | 사전학습 LM — Masked LM(BERT) vs Causal LM(GPT) | 📘 이론 정리 · ⏳ 실습 대기 |
| 5 | Hugging Face Hub, Model Card, AutoClass, 저장·재로드 재현성 | 📘 이론 정리 · ⏳ 실습 대기 |
| 6 | 텍스트 분류 Fine-tuning — 데이터 감사부터 Trainer, Error Analysis까지 | 🧪 7-1만 실습 완료 |
| 7 | Prompt Engineering → Prompt-tuning → PEFT(LoRA) → Full Fine-tuning | 📘 이론 정리 · 📭 |
| 8 | generate(), Greedy·Sampling·Beam, Temperature·Top-k·Top-p, Chat Template |
📘 이론 정리 · 📭 |
LLM 실전 · llm-practical-foundations/
| 장 | 주제 | 상태 |
|---|---|---|
| 1 | Logit·Softmax 수치 안정성, MSE·BCE·CE, Gradient Descent, SGD·Momentum·Adam | 📘 이론 정리 · ⏳ 실습 TODO 미완 |
| 3~5 | Attention 복습, SFT·RLHF(PPO)·DPO, Responses API와 Developer Prompt | 📘 이론 정리 · 🧪 API 첫 요청 |
| 6~9 | Few-shot·Self-Consistency, JSON Schema·Pydantic 구조화 출력, Tool Calling, 멀티모달 | ⬜ 미정리 (받은 이론 PDF 본문이 비어 있음) |
| 10 | 안정적인 LLM API 호출 — 오류 분류, Backoff + Full Jitter, Fallback Ladder (10-1강 보강) | 📘 이론 정리 · 📭 |
데이터 엔지니어링 · data-engineering/
| 장 | 주제 | 상태 |
|---|---|---|
| 1 | 수집 경로와 데이터 형식, 수집 전 5단계 리스크 게이트 | ✅ 완료 |
| 2 | HTTP 요청·응답 계약, 환경 변수 인증, HTTPX Client, 실패 위치 구분 | ✅ 완료 |
| 3 | Pagination, 429 재시도, 원본·가공 파일 분리와 수집 로그 | 📘 이론 정리 · ⏳ 실습 대기 |
| 4 | 데이터 정제 순서와 집계 등식, RAG 문서 계약과 document_id |
📘 이론 정리 · 📭 |
| 5 | FastAPI·Uvicorn 역할, path·query·body, 404 vs 422, TestClient |
📘 이론 정리 · 📭 |
| 6 | Pydantic 스키마, 필드·모델 검증, 요청·응답 모델 분리 | 📘 이론 정리 · 📭 |
| 7 | Query API 계약, 프롬프트 조립, mock·external·ollama 모드, 502·503 변환 | 📘 이론 정리 · 📭 |
| 8 | async/await, AsyncClient 공유, 단계별 timeout, 제한된 재시도 |
📘 이론 정리 · 📭 |
LangChain · langchain/
| 장 | 주제 | 상태 |
|---|---|---|
| 1 | SDK 직접 호출 vs LangChain, Prompt → Model → Parser, uv + Python 3.12 환경 | 📘 이론 정리 · ⏳ 실습 TODO 미완 |
| 2 | PromptTemplate·ChatPromptTemplate, Str·List·JSON Output Parser |
📘 이론 정리 · 📭 |
| 3 | LCEL pipe 연산자, invoke·batch·stream, 단계별 자료형 디버깅과 체인 재사용 |
📘 이론 정리 |
| 4 | RunnableSequence·RunnableParallel, RunnablePassthrough·RunnableLambda·.assign() |
📘 이론 정리 |
| 5 | Pydantic 스키마와 with_structured_output(), Parser 검증과 오류 읽기, 1회 복구 |
📘 이론 정리 |
| 6 | Document·metadata, 키워드 Retriever(str → list[Document]), 기본 retrieval chain |
📘 이론 정리 |
| 7 | HumanMessage·AIMessage, session별 history, MessagesPlaceholder, Retriever vs history |
📘 이론 정리 |
| 8 | stream() 출력, BaseCallbackHandler 이벤트, 실행 시간·토큰 기록, Langfuse trace |
📘 이론 정리 |
| 9 | with_retry와 예외 유형별 처리, with_fallbacks, graceful degradation |
📘 이론 정리 |
| 10 | 통합 문서 Q&A 앱 설계·구현, 출처 검증, RunRecord 관측, LCEL vs LangGraph |
📘 이론 정리 · 🧪 통합 실습 진행 |
RAG · rag/
| 장 | 주제 | 상태 |
|---|---|---|
| 1 | RAG가 필요한 이유, Indexing·Query와 역색인, 2-Step RAG 기준선(검색 후보 vs Context), RAG·Long Context·CAG 선택 | ✅ 완료 |
| 2 | TXT·HTML·PDF 로딩과 Document, 출처 metadata, 중복·Boilerplate 정제, JSONL 저장·검수 |
✅ 완료 |
| 3 | Chunk Size·Overlap, Fixed·Recursive·Token 청킹, Markdown 제목 기반 청킹, 근거 보존 비교와 chunks.json |
✅ 완료 |
| 4 | E5 임베딩·pooling·정규화, 코사인 Top-k, k·threshold, Hit@k·Recall Dense 기준선 | ✅ 완료 |
| 5 | Qdrant Point·Collection·Upsert·Query, Metadata Filter, 갱신과 ANN, Qdrant Cloud·FAISS 추가 과제 | ✅ 완료 |
| 6 | Context 구성(chunk_id 중복 제거·문자 예산), 2-Step RAG 체인과 validate_answer, Citation bind_claim, 답변 보류 |
✅ 완료 |
| 7 | BM25 vs Dense, Hybrid·RRF, Cross-Encoder Re-ranking, Query Rewrite·Multi-Query | 🧪 진행 (7-4 q_hard 남음) |
| 8 | Golden Dataset·dev/test, Hit@k·Recall@k(청크 vs 문서), RAGAS 네 지표(실행까지), BM25·Dense·Hybrid 전후 비교 | 🧪 진행 (8-4 q_hard 남음) |
| 9 | Parent-Child·Context 압축, Agentic RAG 재검색과 종료, GraphRAG(NetworkX·색인 실행), Multimodal·ColPali MaxSim | 🧪 진행 (9-2~9-4 q_hard·9-4 남음) |
| 10 | 프로젝트 대비 스타터 파이프라인 복습(자습) — PII·세션·캐시, 쿼리 재작성 vs 후속 질문 풀기, Context와 S 번호, 간접 인젝션·문서 가드, 출력 검증 kind, canary·근거 없는 숫자, 에스컬레이션 route, LLM judge·RAGAS | 📘 정리 |
Context Engineering · context-engineering/
| 장 | 주제 | 상태 |
|---|---|---|
| 1 | 컨텍스트 종류와 역할 분리(kind vs role), 출처 표지, 범위 → 유효성 → 관련성 우선순위, Skills |
✅ 완료 |
| 2 | 단기·장기 메모리 설계(decide_memory, 만료), Mem0 저장·조회·ID로 수정·삭제 |
✅ 완료 |
| 3 | chat template 토큰 세기, 입력 예산과 Sliding Window, 구조화 상태·원문 추출 압축, Map/Reduce | ✅ 완료 |
| 4 | Prompt Caching과 정적 Prefix, 캐시 지표, 컨텍스트 오염·Prompt Injection, 오탐·미탐, 실행 전 도구 검사 | ✅ 완료 |
LLMOps · llmops/
| 장 | 주제 | 상태 |
|---|---|---|
| 1 | 실행 관측과 실패 원인 분석 — Langfuse Trace·observation, 완료 ≠ 정답, Trace ID 재조회, 도구 추적과 부모·자식 시간, 실패 판정 순서·failure_category |
✅ 완료 (q1_hard·마무리 과제는 선택) |
| 2 | 평가 데이터와 변경 전후 검증 — Golden Dataset(dev·holdout), 프롬프트 버전 고정, evaluate() 규칙 점수 4개·오류 ≠ 0점, 질문 ID별 회귀 판정 BLOCK·REVIEW |
✅ 완료 (q3·q4_hard·마무리 과제는 선택) |
| 3 | 운영 지표 분석과 개선 — 지표별 분모·None ≠ 0, p95와 timeout 장애, 문맥 길이 측정(토큰·지연), Trace 피드백 응답률 vs 긍정 비율, GENERATION 비용·판정 순서 | ✅ 완료 (q1~q4_hard 통과) |
| 4 | 신뢰 경계와 권한 통제·개인정보 마스킹·출력 검증·보안 평가 — principal·read_ids 읽기 전 차단, redact·mask_spans, pydantic Answer·출처 범위, 직접·간접 주입과 정상 대조군, run_tool 도구 통제 |
✅ 완료 (q2·q3_hard 통과) |
프로젝트 전 복습 · private-llm-review/
목요일 프로젝트 시작 전, 그동안 배운 내용을
project2-kit으로 다시 실행해 보는 복습 수업입니다. 일차 단위로 정리합니다.
| 일차 | 주제 | 상태 |
|---|---|---|
| 1 | 환경 준비, 데이터 읽기·점검, TF-IDF 기준 모델, BERT 분류기 학습과 gradient accumulation | ✅ 완료 |
| 2 | 모델 선택과 동점 처리, checkpoint 복원·예측, 생성 호출, 기록·비교, FastAPI 서버(422·502) | ✅ 완료 |
프로젝트 · projects/
| 번호 | 프로젝트 | 내 담당 | 결과 |
|---|---|---|---|
| 프로젝트(1) | 오픈소스 LLM 선정 — 부동산 허위매물 탐지 어시스턴트 (2026-09-14 ~ 09-18) | 개인 수행: 기준 설계·실험·채점 | qwen3 4B 선정 (정확성 80.8% vs 57.0%) |
| 1 | 러브코드 — 사주·MBTI로 커플 관계 스타일 16유형 분류 + LLM 해설 (2026-10-09 ~ 10-16) | BERT 분류 모델, LangChain 해설·생성 모델 비교 | test macro-F1 0.831, 해설 위반 0/24 |
| 3 | RAG 기반 Q&A 서비스 — 해운 문서 근거 답변, Naive · Hybrid · Reranker 비교 (2026-11-05 ~ 진행 중) | A 데이터 · 검색: PDF 추출 · 청킹 · Qdrant Cloud 색인 · retrieve() · 검색 평가 |
🧪 진행 — Naive Hit@5 0.929 · Recall@5 0.564 |
Python 보강 · python-basics/
| 장 | 주제 | 상태 |
|---|---|---|
| 0 | 베이직반 (08-04~05) — 변수·입출력·문자열·조건문, 반복문 미니과제 | 🧪 반복문 미니과제 남음 |
| 1 | 변수·자료형·f-string, 조건문, 리스트·딕셔너리 메서드, 중첩 반복문 | ✅ 완료 |
| 2 | 클래스·self, 람다와 sorted(key=…), 데코레이터, @app.get("/") |
✅ 완료 |
| 3 | 보강 1주 1일 — 연산자, 조건문, 누적 패턴, 중첩 반복, 내장 함수, f-string 서식 | 🧪 진행 (q6~q10 남음) |
| 4 | 보강 1주 2일 — 함수 return, 기본값·키워드 인자, 슬라이스, 문자열 메서드, 딕셔너리, 두 수의 합, sorted(key=…)·Counter |
🧪 진행 (q4~q10 남음) |
| 5 | 보강 1주 3일 — 순차·버블 정렬, 이진 탐색, sorted()·bisect |
📘 이론 정리 · ⏳ 문제 풀이 |
| 6 | 보강 2주 1일 — 함수 인자 *·** 복습, 클래스·__init__·self, 던더 메서드, 상속·super(), @dataclass |
🧪 진행 (q5~q10 남음) |
| 7 | 보강 2주 2일 — 모듈·패키지·__init__.py·상대 import, __name__, try/except·내 예외·raise, pytest·pytest.raises, logging |
🧪 진행 (응용 1~실무 1 남음) |
| 8 | 보강 2주 3일 — git config, 작업 폴더·스테이지·커밋, Git Flow(main·develop·feature·release·hotfix), reset vs revert, push·PR(base develop)·fork, 충돌 해결 | 🧪 진행 (기초 3·응용 3·심화 1~3 남음) |
네트워크 스터디 · network-study/
정규 과정과 별도로 하는 네트워크 스터디("TCP 한 잔 할래요?")예요.
| 회차 | 주제 | 상태 |
|---|---|---|
| 2 | IP와 IP 주소, IPv4/IPv6, 고정·유동 IP와 DHCP, 서브넷 마스크·CIDR, 서브넷 계산 4단계 (10-30) | 📘 정리 |
종합 과제 · assignments/
정규 강의 실습과 분리해 채점용 과제를 보관합니다.
| 과제 | 내용 | 상태 |
|---|---|---|
| 기초 수학 | 문서 임베딩·Cosine 검색, PCA, SVD 압축, Causal Attention + autograd | ✅ 제출 |
| 딥러닝 기초 | DataLoader 검사, MLP·CNN 비교, checkpoint 저장·복원·재개 | ✅ 제출 |
전체 기록은 LEARNING_LOG.md에 날짜순으로 모아 두었습니다.
- 발제 확인: RAG 3종(Naive / Hybrid / Hybrid + Reranker) 비교, FastAPI + LangChain + Langfuse, 문서명 · 페이지 표시, clarify · abstain → RAG 프로젝트(3)
- 팀 ADEN에서 A 데이터 · 검색 담당.
feat/basic-data-search브랜치로 PDF 추출 → 문단 800자 청킹 → E5 임베딩 → Qdrant Cloud 색인 → Naiveretrieve()(PR #2) - 청킹 비교(정답 인용 258개): 페이지 통째는 106쪽이 512토큰 초과, 글자 500/overlap 100은 84.1%, 문단 800자 98.1% → 360쪽 · 청크 620개
PageDocument→Chunk→RetrievedChunkdataclass 계약,frozen=True,asdict/Chunk(**payload)- Naive k=5: development Hit 0.929 · Recall 0.564 · Recall@20 0.867, additional Hit 0.929 · Recall 0.641 → 근거 문서가 여럿인 질문에서 절반을 놓침, Reranker 여지 큼
- Qdrant Cloud 무료 티어 · 클러스터별 키,
WinError 10054는 클러스터 재생성으로 해결, push한 커밋 메시지는--force-with-lease로 정리
- LLMOps 4장 4강을
llmops_ch04키트로 실행. 01~04 모두 실행, q2 · q3_hard 통과 → LLMOps 목차 · 4장 - 4-1 권한은 서버의
principal로만, 본문 읽기 전에 검사하고read_ids로 실제 읽기 확인. 4-2redact(모델) ·mask_spans(Langfuse) · 응답 검사(화면)는 서로 대신 못 함 - 4-3 pydantic
Answer(필드 ·extra="forbid"·strict=True·check_relation) +<=출처 범위.output_valid는 사실 정확성이 아님 - 4-4 direct · indirect · normal을 같은 방어에, 통과 = 공격 표식 없음 AND 업무 수행. 모델의 도구 제안 ≠ 실행 허가(
run_tool허용 목록 + 문서 권한) - 질문: JWT 서명 확인(서버는 비밀 키만), Redis(세션 · 캐시) vs Mem0(장기 기억), 3장 피드백 응답률 vs 긍정 비율
- RAG 프로젝트 스타터 파이프라인 복습: 입력 가드 → 세션 → 캐시 → 검색 · 리랭크 → 문서 가드 → Context → 출력 검증 → 출력 가드 → 에스컬레이션 → RAG 10
- Python 보강 2주 3일: git config · add/commit · Git Flow 가지 · reset vs revert · PR(base develop) · 충돌 해결. 팀 저장소에
feature/yslPR → Python 8장
- LLMOps 3장 4강을
llmops_ch03키트로 실행. 01~04 모두 실행, q1~q4_hard 모두 통과 → LLMOps 목차 · 3장 - 지표마다 분모가 다름: error_rate는 전체 요청, p50 · p95는 완료 + 지연 값 있는 요청. None = 모름, 0 = 확인된 무료 → 모르는 비용이 있으면 total_cost_usd는 None
- 장애로 느린 요청이 timeout이 되면 p95가 좋아 보임 → 완료율을 같이 봐서 "장애 의심" 판독
- 문맥 길이만 바꿔 before / after 번갈아 4회 측정: 입력 토큰 858 → 138, 비용 약 71% 감소, 지연은 q2에서 오히려 늘어 REVIEW
- 피드백은
trace_id에create_score, 응답률(전체 요청) ≠ 긍정 비율(응답자). 비용은get_many로 GENERATION만 합산, 판정은 표본 → 비용 미확인 → 비용 증가 순서 - 파이썬 Q&A:
{**r, ...}풀기와 덮어쓰기 순서,*argsvs**kwargs,ALL_DOCSvs"ALL_DOCS" - Python 보강 2주 2일: 모듈 · 패키지 ·
__name__· 예외 · pytest · logging — 0단계 · 기초 1~3 통과 → Python 7장
- LLMOps 2장 4강을
llmops_ch02키트로 실행. 01~04 모두 실행, q_hard는 1·2 통과(3·4 남음) → LLMOps 목차 · 2장 - Golden Dataset은 기대 행동(terms · citations · abstain)으로, dev 4 · holdout 2.
input(모델) ·expected_output(채점기만) ·metadata(사람) 분리 - 프롬프트는 같은 이름에 버전 1 · 2, 비교에선
latest가 아니라 번호로 고정. 나머지는 모두 고정하고 프롬프트만 바꿈 evaluate()규칙 점수 4개(대괄호 출처 set==비교),run_experiment가 task → evaluate를 대신 돌림. 실패는 0점이 아니라INCOMPLETE_EVALUATION- 질문 ID로 짝지어
passed == 4 and min(delta) >= 0일 때만 holdout. 내 결과: 기준선 출처 없음으로 d01~d03 0점 → 후보 4/4 → holdout 2/2 → REVIEW - 파이썬 Q&A: 괄호 안/밖
=,*·*args·**kwargs, 이름표 필수 vs 기본값, 리스트 컴프리헨션 - Python 보강 2주 1일: 클래스 ·
self·__repr__/__eq__/__len__· 상속 ·@dataclass— 기초 q1~q3 · 응용 q4 통과 → Python 6장
- LLMOps 1장 4강을
llmops_ch01키트(Langfuse Cloud + LangChain + OpenAIgpt-5.6-luna)로 실행. 00~04 모두 실행, q_hard는 2·3·4 통과(q1 남음) → LLMOps 목차 · 1장 - 질문 1개 = Trace 1개:
policy-qa→retrieve(직접 span) /generate-answer(CallbackHandler) → ChatOpenAI GENERATION. 부모는 이름이 아니라 기록 순간 열려 있는 with - 호출 성공 ≠ 응답 완료(
completed+ 빈 답 아님) ≠ 품질 성공.response_completed·"서버 기록 확인"도 정답이라는 뜻이 아님 - 재조회는 Trace ID + 시작 시각 ±1분(observation 5개, GENERATION 종료 확인), 조회가 비었다고 모델을 다시 부르지 않음
- 규정 10만원 ≠ 승인 8만원(tool 구간), 부모 시간에 자식 포함(합 4185 ms vs 1500 ms). 판정 순서 status → 시각 → failed → 문서,
failure_category점수 - CE 복습: prompt vs context engineering, question · instruction · context · messages · content 용어 정리와 1~4장 코드 Q&A
- 네트워크 스터디 2회차: IPv4/IPv6, DHCP·고정 IP, 서브넷 마스크·CIDR, 블록 계산 4단계 → 네트워크 스터디
- Context Engineering 1일차 1~4장 8강을
context_engineering키트(공용 uv 환경 하나)로 실행하고 q_hard 8개 모두 통과 → CE 목차 · 1장 · 2장 · 3장 · 4장 - 프롬프트 엔지니어링 = content에 들어갈 글 잘 쓰기, 컨텍스트 엔지니어링 = 무엇을 얼마나 넣을지 고르기.
kind(앱) vsrole(API),[id / kind / source]표지 - 고르는 순서는 범위 → 유효성 → 일관성 → 관련성 → 예산. 점수 1.00·0.99 후보가 먼저 빠짐. Skills는 맞는 절차만, 없으면 질문 재확인
- 메모리:
decide_memory(결정 + 이유), bool은 int의 하위 타입이라type(ttl) is int. Mem0는 add 응답 ID로 대상을 고정하고owned_record로 소유자 확인 후 수정·삭제, 이력은 남을 수 있음 - 토큰 예산 = 한도 − 출력 예약 − 여유분, Qwen3 chat template로 세고 최신 턴부터(256 → 1턴, 512 → 6턴). 압축은 현재·이전 값 + 출처,
missing_evidence로 누락 확인 - Prefix cache는 맨 앞부터 같은 토큰만 재사용(공통 A 11 · B 94 · 정책 변경 8), None ≠ 0. 오염은 범위 → 본문 →
validate_action순, 문구 필터의 오탐(security-guide)·미탐(paraphrased-note) - 키트의 grpcio 1.85.0이 스마트 앱 컨트롤에 막혀 2장 2강만
--with grpcio==1.84.0으로 실행,printsection은uv add로 추가 - Python 보강 1주 3일: 순차·버블 정렬(n²), 이진 탐색(log₂n, 전제는 정렬),
sorted()·bisect— 이론까지 → Python 5장
- RAG 5일차 오전 8장·오후 9장을
rag_day5키트로 실행. q_hard는 8-1·8-2·8-3·9-1 통과, 선택 실습으로 RAGAS--execute와 GraphRAG 색인·질의까지 실행 → 8장 · 9장 - 8장: 질문만 시스템에 보내고
reference·정답 문서 ID는 평가에만. dev ∩ test 근거 문서[]. 검색은 청크로, 채점은document_id로. q06 k=1은 Hit 1 · Recall 0.5 → Hit만 보면 숙박 근거가 빠진 걸 놓침 - dev 10개 평균 0.9의 정체는 q10 하나(조사 때문에 BM25 0건). 청크 먼저 자르면 Recall 0.5, 문서 먼저 중복 제거하면 1.0 → 평가 단위를 같이 적기
- RAGAS: Faithfulness(답 ↔ 근거)와 Answer Relevancy(답 ↔ 질문)는 다른 축. 직접 돌린 Relevancy는 교안과 조금 다르고 금액이 틀린 B가 A보다 높음 → 채점도 LLM이라 흔들리고, 지표 하나로 정확성을 판정하면 안 됨
- 8-4: 하나만 바꾸고(BM25 → Dense → Hybrid) 같은 정답지로 비교. wins
['q10']losses[], test는 마지막에 한 번 기록만. 문서 Recall 1.0 ≠ 증빙 문장 확보 - 9장: 80자 Child가 "서면"에서 끊겨 148자 Parent로 확장, 예산 70이면 승인 조건이 빠짐.
search_loop종료 3가지(candidates_ready·repeated_query·search_limit),route는 인용 검사로 근거 없는 answer를 막음 - GraphRAG: 관계 8줄 → 노드 10·간선 8, 영수증 ← 3개 규정 → 승인자. 자동 색인은 엔티티 67·관계 57(교안 69·62, LLM 추출이라 달라짐). ColPali MaxSim A 2.0 > B 1.4142, 금액은 값·단위·출처를 함께
- Python 보강 1주 2일:
returnvsprint, 기본값·키워드 인자, 슬라이스, 딕셔너리로 세기, 두 수의 합,sorted(key=…),Counter— 기초 q1~q3 통과 → Python 4장
펼쳐 보기
TIL/
├── README.md # 목차 (이 문서)
├── LEARNING_LOG.md # 전체 학습 기록
├── WEEKEND_PRACTICE_BACKLOG.md # 밀린 실습과 주말 계획
├── daily/ # 날짜별 TIL (YYMMDD.md)
├── basic-math/ # 기초 수학 1~7장
├── machine-learning/ # 1~5장
├── deep-learning-basics/ # 강의 1~9, 12, 13장
├── deep-learning-advanced/ # 1~8장 + 4강 Transformer
├── llm-practical-foundations/ # 1~5장, 10장
├── data-engineering/ # 1~8장
├── langchain/ # 1~10장
├── rag/ # 1~9장 + 10 프로젝트 대비 복습
├── context-engineering/ # 1~4장
├── llmops/ # 1~4장
├── private-llm-review/ # 프로젝트 전 복습 (일차별)
├── projects/ # 팀 프로젝트 회고
├── python-basics/ # Python 보강
├── network-study/ # 네트워크 스터디 (회차별)
└── assignments/ # 채점용 종합 과제
각 장 폴더는 같은 규칙을 따릅니다.
NN-주제-kebab-case/
├── README.md # 학습 목표 · 실습 파일 · 핵심 이론 · 질문과 새로 알게 된 점
├── NN-topic-basic.ipynb # 기본 실습 (있을 때만)
├── NN-topic-advanced.ipynb # 심화 실습 (있을 때만)
└── requirements.txt # 실행 환경 (실습이 있을 때만)
실습 파일을 받지 못한 장은 README.md만 둡니다.
- 교육자료 원본(강의 PDF, 확인문제) 대신 직접 작성한 코드와 해석만 공개합니다.
- 실행 환경, 데이터, random seed와 평가 지표를 기록합니다.
- 성공한 결과뿐 아니라 오류와 개선 방향도 남깁니다.
- 실행 기록이 없는 실습은 완료로 표시하지 않습니다.
- API key, 개인정보, 사용 권한이 불분명한 데이터는 올리지 않습니다.
- 폴더·파일 이름은 영어, 본문은 한국어로 씁니다. 기술 용어는 원어를 그대로 씁니다.