RAG가 틀리는 이유! 벡터 검색의 한계와 GraphRAG가 다른 점

graphrag_rag_diff

RAG를 처음 도입했을 때 기대가 컸다. LLM이 학습하지 않은 사내 데이터를 실시간으로 검색해서 답변에 쓴다는 아이디어는 당시로선 꽤 혁신적으로 들렸다. 실제로 환각이 줄었다. 아무 맥락 없이 LLM에게만 물어보던 때보다는 확실히 나아졌다. 그런데 쓸수록 이상한 게 보이기 시작했다. 단순한 질문에는 잘 답하는데, 조금만 복잡해지면 흔들렸다. “이 프로젝트 담당자가 지난 분기에 진행한 다른 프로젝트와 예산이 겹치는 부분이 … Read more

LangGraph에서 에이전트가 멈추는 이유 – Human in the Loop 설계 패턴 정리

langgraph human in the loop

에이전트가 멈춰야 할 때 멈추지 않거나, 멈추지 말아야 할 때 멈추는 문제를 LangGraph로 멀티에이전트 시스템을 운영하면서 꽤 오래 고민했다. 이론적으로 Human-in-the-Loop는 단순하다. 에이전트가 스스로 판단하기 어려운 지점에서 사람에게 확인을 요청하고, 사람의 입력을 받아서 다시 진행하는 것이다. 그런데 실제로 구현해보면 “어느 노드에 interrupt를 거냐”와 “체크포인터를 어떻게 설계하냐”가 에이전트 전체 흐름을 좌우한다는 걸 알게 된다. 이 글은 … Read more

vLLM 배치 사이즈부터 모델 스왑까지 직접 운영

vLLM_배치사이즈_모델스왑

공식 문서는 설치까지는 친절하다. 그 다음부터가 문제다. vLLM 깃허브 star 수는 이미 수만을 넘었고, 한국어로 된 설치 가이드도 제법 나온다. 그런데 막상 추론 서버를 실제 운영 환경에 올려보면 공식 문서가 다루지 않는 영역이 금방 나타난다. GPU 메모리 설정을 어떻게 잡아야 안정적으로 돌아가는지, 배치 사이즈가 응답 시간에 어떻게 영향을 주는지, 모델을 스왑해야 할 때 서비스를 얼마나 … Read more

RAG 파이프라인 구축부터 운영까지! 실무에서 쌓은 것들 한방에 정리!

rag파이프라인구축

어느 순간부터 RAG 파이프라인을 짜는 것보다 운영하는 게 더 어렵다는 걸 알게 됐다. 처음에는 임베딩 모델을 골라서 벡터 DB에 인덱싱하고, 유사도 검색으로 컨텍스트를 뽑아서 LLM에 넘기면 끝이라고 생각했다. 실제로 돌려보기 전까지는 그렇게 생각했다. 그런데 막상 프로덕션에 올리면 다른 세계가 펼쳐진다. 검색 정확도가 쿼리 유형마다 들쭉날쭉하고, FastAPI 서버는 동시 요청 몇 개에 응답이 뭉개지고, 벡터 DB … Read more

Codex vs Claude Code AI 에이전트 개발할 때 어떤 걸 켜야 하나

codex_claude_code

두 도구를 다 써보지 않으면 비교를 제대로 할 수 없다. Codex vs Claude Code 비교 글이 검색하면 나오긴 하는데, 대부분 스펙 표를 나열하거나 벤치마크 숫자로 끝난다. 실제로 LangGraph 에이전트를 만들고, RAG 파이프라인을 디버깅하는 맥락에서 두 도구를 번갈아 쓰면서 느낀 차이는 그 표들이 잘 담지 못하는 부분에 있었다. 나는 LangGraph 기반 멀티에이전트 시스템을 운영하고, RAG 파이프라인 … Read more