Home
Sangki Han
Cancel

Error Memory — 과거 에러 분석 사례를 RAG로 재활용하기

같은 서버에서 비슷한 에러가 반복되는 상황은 흔하다. 배포 직후 설정 오류가 여러 번 발생하거나, 특정 트래픽 패턴에서 항상 같은 NPE가 터지는 식이다. 현재 RAG 파이프라인은 매번 처음부터 분석한다. 과거에 같은 에러를 분석했다는 사실을 모른다. Error Memory는 분석 결과를 벡터 DB에 저장해두고, 다음 유사 에러 발생 시 과거 사례...

Graph RAG — import 파싱으로 의존성 그래프를 만들어 검색 결과 확장하기

에러 스택 트레이스에는 보통 하나의 클래스가 명시된다. 하지만 실제 원인은 그 클래스가 의존하는 다른 파일에 있는 경우가 많다. java.lang.NullPointerException at UserService.findById(UserService.java:42) UserService를 찾아서 LLM에게 주면 분석은 시작할 수 있다. 하지만 Us...

LLM이 코드를 수정할 때 생기는 문제들 — Self-reflection과 전체 파일 교체 전략

에러 분석 에이전트의 가장 핵심적인 기능은 수정 코드를 GitHub PR로 자동 생성하는 것이다. LLM이 before/after 스니펫을 제안하면, 실제 파일에서 before를 찾아 after로 교체한다. 이 패칭 과정에서 겪은 문제들과 최종 해결 방법을 정리한다. 처음 겪은 문제: string 매칭 실패 LLM이 제안하는 before 코드...

RAG 검색 품질을 어떻게 측정할까 — Hit Rate, MRR, 평가 시스템 구축

BM25 하이브리드 검색을 도입하고 나서 자연스럽게 궁금증이 생겼다. “검색이 실제로 잘 되고 있는 걸까?” 로그를 보면 파일 목록이 반환되는 건 확인되지만, 그게 맞는 파일인지 판단할 기준이 없었다. RAG 품질을 수치로 측정하는 평가 시스템을 만든 이유다. 무엇을 측정하나 RAG 평가에서 핵심은 “정답 파일이 검색 결과에 포함됐는가”다. ...

LangChain 도입기 - LLM 에이전트 루프를 직접 짜다가 생긴 일

서버 에러 로그를 LLM이 분석해서 Slack으로 원인과 수정 코드를 보내주는 시스템을 만들고 있었다. LLM이 단순히 로그를 받아서 답을 내는 게 아니라, 필요하면 직접 소스 파일을 검색해가며 분석하는 에이전트 구조였다. 처음엔 이 루프를 직접 구현했는데, 문제가 생겼다. 직접 구현한 에이전트 루프 LLM 에이전트의 동작 방식은 단순하다. 1....

BM25를 활용한 RAG 검색 품질 향상 — 벡터 검색의 한계와 하이브리드 접근

개인 프로젝트에서 RAG(Retrieval-Augmented Generation)를 구축하면서 벡터 검색만으로는 해결되지 않는 문제를 겪었다. LLM이 에러 스택 트레이스를 분석할 때 UserService, findById 같은 정확한 클래스명·메서드명을 언급하는데, 벡터 검색이 그 파일을 상위에 올려놓지 못하는 경우가 있었다. 이 문제를 BM25와...

AI 오류 자동 분석 에이전트 구축기 (3) — Embedding 모델과 ChromaDB RAG 구축

에러 로그만 보고 정확한 수정 코드를 제안하려면 LLM이 소스 파일을 알고 있어야 한다. 소스 파일 전체를 매번 프롬프트에 넣을 수는 없다. RAG(Retrieval-Augmented Generation)가 필요한 이유다. 왜 RAG를 도입했나 puppynote-server는 수백 개의 Java 파일로 구성되어 있다. 이걸 전부 LLM 프롬프트에 ...

AI 오류 자동 분석 에이전트 구축기 (2) — FastAPI와 파이프라인 설계

에이전트의 뼈대가 되는 FastAPI 서버를 어떻게 설계했는지, 그리고 puppynote-server(Spring Boot)에서 어떻게 에러를 보내는지 정리한다. 왜 FastAPI인가 에이전트 백엔드로 Python을 선택한 이유는 LLM 생태계 때문이다. Ollama Python SDK, LangChain, ChromaDB 등 LLM 관련 라이브러...

Spring AI + Ollama로 반려동물 음식 검색 기능 구현하기

개요 PuppyNote 프로젝트에 반려동물 음식 안전 정보를 제공하는 AI 검색 기능을 추가했다. “당근은 강아지에게 먹여도 되나요?” 같은 질문을 입력하면 AI가 안전 여부와 영양 정보를 답변해주는 기능이다. AI 호출은 비용(응답 시간)이 크기 때문에 Elasticsearch를 1차 캐시로 사용해 동일한 질문이 반복될 경우 AI를 거치지 않고...

AI 오류 자동 분석 에이전트 구축기 (1) — 도입 배경과 초기 세팅

개인 프로젝트 puppynote-server를 운영하면서 반복적으로 겪는 불편함이 있었다. 에러가 발생해도 즉시 확인하기 어렵다는 것이다. 왜 만들었나 개인 스터디 프로젝트는 24시간 모니터링하는 팀이 없다. 배포하고 자리를 뜨면 에러가 났는지조차 모른다. Slack에 에러 알림이 와도 “나중에 봐야지”가 반복된다. 원인 파악에 시간이 걸리고, 이...