Posts
All the articles I've posted.
-
RAG 임베딩 비교 — 내 블로그 데이터로 recall@k 측정 (OpenAI vs bge-m3)
[퀀트 회고에서 '느낌 벤치마킹 → 수치 벤치마킹' 원칙](/posts/quant-study-00-pandas) 을 세운 뒤, 이번엔 임베딩 모델 비교를 실제로 수치화. 내 블로그 글 441청크에 OpenAI text-embedding-3-small 과 bge-m3 를 각각 인덱싱하고, 20개 질문·정답 출처 테스트셋으로 recall@3 을 측정. 전체 OpenAI 80% vs bge-m3 90%. hard 난이도에서 bge-m3 가 100% — 단어 안 겹쳐도 의미로 원문과 연결한 케이스가 결정적. easy 에서 놓친 원인은 오타(cladue, 언더스코어)라 채점 기준 자체가 틀렸다는 반전.
-
Eval 공부 #2 — 유사도 기반 평가의 함정 · 테스트셋 5원칙 · '회귀테스트' 라는 용어 오해
Eval 두 번째 시간. 유사도 기반 평가 (임베딩 코사인) 를 직접 돌려봤더니 예상 못 한 결과 — OpenAI text-embedding-3-small 과 bge-m3 둘 다 '틀린 답' 에 가장 높은 점수를 매김. 유사도는 내용이 아니라 주제·표현 근접성을 잡기 때문. 마크다운 형식 차이만으로도 유사도가 크게 흔들림. 실전에선 유사도 + LLM-as-Judge 병행이 표준. 그리고 테스트셋 설계 5원칙 + '회귀테스트가 아니라 개선 검증(A/B)' 이라는 용어 정정.
-
Eval 공부 #1 — '느낌 벤치마킹' 을 끝낼 때 · 정확도 기반 + LLM-as-Judge 첫 구현
여태 프로젝트마다 '빠른 거 같다', '정확한 것 같다' 식 느낌 평가만 해왔는데, 이제 진짜로 수치화하는 Eval 공부 시작. Eval 의 4가지 종류(정확도 / 유사도 / LLM-as-Judge / 사람 평가) 정리 + 도구 선택 정확도 10/10 측정 + LLM-as-Judge 로 같은 질문에 대한 두 답변을 8/10 vs 3/10 으로 채점. LLM-as-Judge 의 한계(평가자 변동성, 같은 모델 답변 후한 점수)까지.
-
MCP 공부 #3 — Resources / Prompts 의 정체 + LangGraph 와 통합 (`MultiServerMCPClient` · `ainvoke`)
MCP 의 세 구성요소 중 #1 / #2 에서 다룬 Tools 외에 Resources(LLM 이 읽을 데이터, 백그라운드 컨텍스트, 읽기 전용) 와 Prompts(미리 정의된 템플릿) 까지. Inspector + Claude Desktop 으로 새 서버 확인 → langchain-mcp-adapters 로 MCP 서버를 LangGraph 에 통합. MCP 통신이 비동기라 `ainvoke` 필요한 이유, MultiServerMCPClient 가 서버 그대로 불러오는 비결(=MCP 표준 준수), Resources 를 시스템 프롬프트로 주입했을 때의 도메인 응답 품질 차이까지.