여기어때 공통플랫폼개발팀이 Confluence·Jira에 흩어진 사내 지식을 정확하게 검색하는 Agentic RAG MCP 서버를 구축한 과정의 1편이다. 기존 Atlassian MCP의 키워드 검색 한계(6~7회 왕복)와 이미지 미인식 문제를 해결하기 위해 LightRAG(GraphRAG 계열)와 Navigator 두 리트리버를 설계하고, 그 아래 데이터 파이프라인을 다진 내용을 다룬다.
핵심 포인트- 챗봇 대신 MCP 인터페이스로 설계해 기존·신규 사내 에이전트 모두가 검색 도구를 바로 꽂아 쓸 수 있게 했다
- 전통적 청크 벡터 검색 대신 LightRAG(GraphRAG) + Navigator 두 리트리버 조합 — 의미 검색과 계층 구조 탐색을 분리
- Confluence/Jira를 CQL·JQL 증분 쿼리로 수집해 하루 1,300건만 처리, LLM 호출 비용을 전량 재적재 대비 1/100로 절감
- JSON→Markdown 정규화로 임베딩 품질과 LLM 컨텍스트 효율을 동시에 개선
- 이미지에 주변 맥락(문서 제목+앞뒤 본문)을 함께 넣어 Gemini로 대체 텍스트 생성 — "해변 사진"이 "의미적 격차를 보여주는 예시"로 변환됨
상세 정리- 문제 정의: 문서는 있지만 경로를 아는 사람의 머릿속에만 있어 반복 질문 발생 — 지식이 문서가 아닌 사람에게 종속
- MCP 채택 이유: 챗봇은 슬랙 하나에 묶이지만 MCP 규격으로 검색을 분리하면 기존·신규 모든 에이전트가 공유 가능
- 기존 Atlassian MCP 한계: 키워드 미매칭 시 6~7회 검색 왕복 + 이미지를 파일명/링크로만 반환해 모델이 이미지 내용 날조
- 리트리버 2개 이유: 사내 질문은 여러 문서에 걸친 답변이 대부분 — 청크 유사도 나열로는 조각 간 관계 파악 불가
- LightRAG: Entity+Relation 지식 그래프를 미리 구성해 벡터 유사도뿐 아니라 그래프 탐색으로 관련 개념까지 함께 끌어옴
- Navigator: Confluence 폴더 트리·Jira Project·Epic·Story·Subtask 계층을 그래프 DB에 원본 그대로 담아 결정론적으로 탐색
- 증분 수집: CQL lastModified/JQL updated 필터로 전체 17만건 중 하루 평균 1,300건만 처리, LLM 비용 1/100
- Markdown 정규화: revision 번호 등 노이즈 제거 + Heading/코드블록 구조 유지, 청킹과 컨텍스트 전달 모두에 구조 신호 활용
- 이미지 대체 텍스트 채택 이유: 멀티모달 임베딩은 이미지 위치·역할 맥락을 잃고 검색 품질 열위, 대체 텍스트는 문서 내 이미지 위치에 삽입돼 맥락 보존
- 맥락 주입 효과: 이미지만 넘기면 "해변에 사람이 모여 있는 모습"이지만 문서 제목+앞뒤 본문 주입 시 "의미적 격차를 보여주는 예시"로 검색 가능 설명 생성
- 식별키 보존: 대체 텍스트 불충분 시 에이전트가 원본 이미지를 직접 조회 가능한 구조
- 결과 미리보기: 기존 MCP 대비 정확도 향상 + 토큰 절감, 2·3편에서 리트리버 상세와 평가 파이프라인 공개 예정
왜 읽나사내 문서 기반 RAG 시스템을 처음부터 설계하는 AI/ML·백엔드 엔지니어, 특히 이미지 처리와 증분 파이프라인 고민이 있는 분에게.