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

MCP 서버를 사내 RAG 시스템에 직접 연결 성공

MCP_RAG

MCP라는 게 처음 나왔을 때는 솔직히 “또 새로운 표준 하나 더 생겼네” 싶었다. 표준이라는 게 너무 많이 생기다 보면 결국 안 쓰게 되는 경우가 많으니까. 그런데 막상 사내 RAG 시스템에 직접 붙여보니까 생각이 달라졌다. 설정 자체는 놀라울 정도로 간단했는데, 프로덕션 환경에 진짜로 올리려고 하니 그제서야 진짜 고민이 시작됐다. 이 글은 그 과정을 정리한 거다. MCP가 … Read more

LangGraph 에이전트에 PostgreSQL BM25를 직접 붙여본 기록 – Elasticsearch 없이 검색 노드 만들기

PostgreSQL_BM25

며칠 전 PostgreSQL 안에서 BM25 검색이 네이티브로 돌아간다는 소식을 보고 바로 테스트해봤다. 그동안 하이브리드 검색을 하려면 BM25는 PostgreSQL의 tsvector로 어설프게 흉내내거나, 아예 Elasticsearch를 따로 띄우는 수밖에 없었다. 그런데 이제 PostgreSQL 익스텐션 하나로 진짜 BM25 스코어링이 인덱스 레벨에서 돈다는 거다. 마침 LangGraph 에이전트의 검색 노드를 손보던 시기여서, 바로 적용해봤다. 이 글은 그 적용 과정과 결과를 정리한 … Read more

FastAPI RAG 서버가 느려진 이유! 비동기인데 왜 막히나 싶었던 디버깅 기록

fastapi_rag_비동기

분명히 비동기로 짰는데 왜 느려지는 거지. RAG 서버 운영하면서 가장 많이 했던 생각이 이거다. FastAPI는 처음부터 async를 전제로 설계된 프레임워크다. 동시성 처리에 강하다는 게 거의 상식처럼 통한다. 그런데 실제로 RAG 파이프라인을 얹어서 운영해보면, “비동기로 썼다”는 사실 자체가 성능을 보장해주지 않는다는 걸 몸으로 배운다. 이 글은 내가 운영하던 RAG API가 동시 요청 몇 개만 들어와도 응답 … Read more