본문 바로가기

이 포트폴리오의 원본은 https://cv.iruyo.com (심재빈) 입니다 · 출처 식별자 jbx-7f3a2e9b

← 경력기술서

사내 인프라 운영 중 단독

TextRAG — 사내 RAG 시스템

사내 자료를 외부 LLM에 못 보내는 제약과 좁은 RAM(3모델 동시 상주 불가)을, 인덱싱·서빙 장비 분리와 메모리 예산 설계로 푼 로컬 RAG — 혼자 만들어 운영 중, recall@5 87%

기간
2026.04 – 진행 중 · 3개월
소속
스틸리언
수행 인원
본인 1인 단독
본인 역할
민감한 사내 자료를 외부로 보내지 않는 보안 환경에서 로컬 RAG를 혼자 구축했습니다. 아키텍처 설계, MCP 검색 도구 구현, 좁은 RAM에 세 모델을 욱여넣는 메모리 운용, iOS 팀 도입 가이드와 교육까지 맡았습니다.
정량 임팩트
사내 문서 수천 건과 여러 제품 코드베이스를 색인해 상시 운영합니다. 직접 만든 골든셋 기준 recall@5 87%, recall@10 90%, MRR 0.76을 기록했습니다. 구글 로그인 기반 그룹 접근 제어를 붙였고, 같은 엔진을 사내 검색·MCP 도구·GitLab MR 리뷰봇이 함께 씁니다.
버전·릴리즈
운영 중 · iOS 팀 대상 MCP 도구 노출 완료 · 여러 코퍼스 상시 색인

언어

  • Python3
  • Shell

기술

  • FastAPI
  • Ollama
  • vLLM

환경

  • PyCharm
  • VSCode

외부 LLM에 사내 자료를 보낼 수 없는 환경에서, 로컬 LLM과 자체 임베딩으로 구성한 사내 RAG 시스템(TextRAG)을 설계하고 도입부터 운영까지 맡고 있습니다.

TextRAG — 사내 RAG 공통 인프라외부 LLM 금지 아래 로컬로 자체 구축 — 단일 엔진을 검색·MCP·리뷰봇이 공유TextRAG — 사내 RAG 공통 인프라외부 LLM 금지 아래 로컬로 자체 구축 — 단일 엔진을 검색·MCP·리뷰봇이 공유주 서빙 장비메모리 예산 — keep_alive · 재정렬 off · KV cache↓여러 코퍼스 상주제품 코드베이스 + 사내 문서 수천 건+ 보조 코퍼스인덱싱 전용 장비코드 이중 분할 — 심볼·패시지 청크임베딩 생성벡터 DB코드 검색 + 서술형 답변 공용① 임베딩 검색벡터 유사도로 후보 추림② 재정렬 (Reranker)메모리 빡빡하면 선택적 off③ 로컬 LLM 생성사내 자료 외부 유출 0사내 검색개발자 직접 질의Claude Code MCP 도구원클릭 설치 · iOS팀 교육GitLab MR 리뷰봇코드 리뷰 API · 5축 자동제안→설계→구현→팀 교육→계측·평가까지 1인 단독 · 검색 recall@5 87% · MRR 0.76 · 2026.02~ 운영

배경·과제

  • 취미로 만들던 로컬 RAG 도구를, 노션·컨플루언스·지라에 흩어진 사내 자료와 이슈 히스토리를 빠르게 찾기 위해 사내 인프라로 옮기고 확장했습니다.

  • 보안 제품을 만드는 회사 특성상 외부 LLM API를 쓸 수 없어, 사내 전용 검색·생성 인프라가 필요했습니다.

  • 서빙 장비의 RAM이 작아 임베딩·재정렬·생성 모델을 동시에 띄울 수 없는 제약이 있었습니다.

수행·기여

  • 노션·컨플루언스·지라 자료를 한 곳에서 자연어로 검색하고, 질문 의도에 맞는 문서만 추렸습니다.

  • 문서 유사도로 비슷한 자료를 찾고, 코퍼스 단위로 묶어 검색 범위를 지정할 수 있게 했습니다.

  • Claude Code 등 개발 도구와 MCP로 연결해 코드 맥락과 이슈 히스토리를 가져와 코드 작성과 기획 문서 작성 때 활용했습니다.

  • 구글 계정 로그인 기반 접근 제어를 붙여, 그룹별로 매칭된 코퍼스만 검색할 수 있도록 했습니다.

TextRAG — 활용 · 그룹 기반 접근 제어흩어진 사내 자료를 자연어로 — 그룹마다 접근 가능한 코퍼스만 검색TextRAG — 활용 · 그룹 기반 접근 제어흩어진 사내 자료를 자연어로 — 그룹마다 접근 가능한 코퍼스만 검색그룹 기반 접근 제어그룹마다 접근 가능한 코퍼스만흩어진 사내 자료노션 · 컨플루언스 · 지라제품 코드베이스구글 로그인사용자가 속한 그룹 식별자연어 질의원하는 걸 말로 검색그룹 ↔ N개 코퍼스 매칭사용자 그룹별 검색 범위관련 문서만 추림질문 의도에 맞는 것만유사 문서 비교비슷한 자료 찾기개발 맥락 (MCP)코드 스타일 · 이슈 히스토리기획 문서 작성관련 근거 자료 검색사내 검색개발자 직접 질의구글 로그인 → 그룹 → 접근 가능한 코퍼스 매칭 · 개발 맥락·이슈 히스토리·기획까지 다방면 활용
  • 인덱싱 전용 장비와 서빙 전용 장비로 분리해 3단 모델 스택을 운용했습니다.

  • 모델별 keep_alive 토글, 재정렬 선택 비활성, KV cache 축소로 메모리 예산을 짜서 동시 상주 문제를 풀었습니다.

  • 코드를 심볼 청크와 패시지 청크로 나눠, 코드 검색과 서술형 답변 양쪽에 재사용했습니다.

  • 검색 기능을 Claude Code MCP 도구로 공개하고, 설치 스크립트와 가이드를 만들어 iOS 팀 교육을 진행했습니다.

  • 코드 리뷰용 API 엔드포인트를 열어 GitLab MR 리뷰봇이 같은 엔진을 쓰도록 했습니다.

  • 검색·답변 1건마다 지연·결과 수·점수·호출원을 비침습 방식으로 기록하는 계측 레이어를 붙였습니다. 검색 파이프라인은 그대로 두고 쿼리는 해시만 남겨, 로깅이 실패해도 서비스가 멈추지 않게 했습니다.

  • 대표 질의 30문항 골든셋과 회귀 스크립트로 recall@k, MRR, 혼입률을 계산하고 기준선 대비 회귀를 비교했습니다.

성과

  • 사내 문서 수천 건과 여러 제품 코드베이스를 색인한 상태로 상시 운영하고 있습니다.

  • 단일 서버 엔진을 사내 검색·MCP 도구·MR 리뷰봇이 함께 쓰는 공통 인프라로 만들었습니다.

  • 골든셋 30문항으로 검색 품질을 측정했습니다. recall@5 87%, MRR 0.76, 코드 검색은 거의 100%였습니다. 약한 구간의 원인을 확인해 개선 방향을 잡았습니다.

TextRAG — 검색 품질 평가직접 만든 평가셋으로 정량 측정 · 측정 방법 자체도 교정TextRAG — 검색 품질 평가직접 만든 평가셋으로 정량 측정 · 측정 방법 자체도 교정골든셋 · 대표 질문 30개정답 · 근거 출처 고정87%recall@590%recall@100.76MRR코드 검색은 거의 100%큰 혼합 코퍼스의 약한 구간은 원인 규명해 개선안 도출측정 방법까지 자체 교정측정 방식 허점 2건을 실패분석으로 찾아 바로잡음대표 질문 30개로 상위 적중·순위 품질 정량화 — 수치를 신뢰할 수 있게 측정법까지 손봄

화면

시맨틱 검색·LLM 답변 화면

자료 업로드

리모트 싱크 (인덱싱·서빙 장비 분리)

백업·이전 (코퍼스 ZIP)

  • 평가 측정 과정의 허점을 두 가지 찾아 수정해, 수치를 신뢰할 수 있게 했습니다.

  • 검색 사용량·속도·실패율을 자동 수집해 운영 상태를 꾸준히 점검합니다.

  • 제안부터 설계, 구현, 서버 구축, 배포, 도입 교육까지 한사이클로 직접 진행했습니다.