I built ORAG - an organizational RAG and MCP platform in TypeScript
요약
ORAG는 조직의 내부 데이터(문서, 위키 등)를 활용하여 AI 에이전트가 사용할 수 있도록 설계된 엔터프라이즈급 RAG 및 MCP 플랫폼입니다. 이 플랫폼은 Notion, Confluence, S3 등 다양한 소스를 연결하는 강력한 RAG 파이프라인을 제공하며, 50ms 미만의 낮은 검색 지연 시간을 목표로 합니다. 핵심적으로 ORAG는 Model Context Protocol(MCP) 서버를 통해 AI 에이전트에게 구조화된 권한 접근 방식을 제공하고, 역할 기반 접근 제어(RBAC), 감사 로그, SSO 기능을 통합하여 기업 환경에서 실제로 배포 가능한 수준의 보안과 컴포지빌리티를 확보했습니다.
핵심 포인트
- ORAG는 내부 데이터를 활용하는 엔터프라이즈급 RAG 및 MCP 플랫폼입니다.
- 단순한 LLM 모델 문제가 아닌 '컨텍스트 레이어' 부족이 AI 오류의 주원인이며, ORAG가 이를 해결합니다.
- MCP(Model Context Protocol) 서버를 통해 모든 데이터 소스에 표준화되고 구조화된 권한 접근 인터페이스를 제공하여 컴포지빌리티를 높입니다.
- 50ms 미만의 낮은 검색 지연 시간과 역할 기반 접근 제어(RBAC), 감사 로그 등 기업용 필수 기능을 갖추었습니다.
- 전체 스택을 TypeScript로 구축하여 개발의 일관성과 안정성을 확보했습니다.
지난 몇 일 동안 제가 항상 존재하기를 바랐던 것을 만들었습니다. 조직의 내부 데이터 (문서, 위키, 데이터베이스 등) 를 가져와 AI 에이전트가 실제로 사용할 수 있게 하는 플랫폼입니다. 결과는 ORAG 입니다. 이는 완전히 TypeScript 로 구축된 조직용 RAG 와 MCP 서버 플랫폼입니다. 바로 확인하세요: https://orag.theanmolsharma.com/ 여기에서 제가 무엇을 만들었는지, 왜 만들었는지, 그리고 중요한 기술적 결정들을 설명합니다.
문제는 모든 팀이 내부 데이터에 AI 기능을 구축할 때 같은 벽에 부딪힙니다. LLM 은 당신의 데이터가 무엇을 의미하는지 알지 못합니다. 소유자가 누구인지, 신뢰할 수 있는지, 또는 주어진 에이전트가 접근해야 하는지 알지 못합니다. 결과적으로 AI 는 확신 있는 잘못된 답변을 줍니다. 이는 어떤 답변도 없는 것보다 더 나쁩니다. 이는 컨텍스트 문제입니다. 모델 문제는 아닙니다. 모델은 좋습니다. 컨텍스트 레이어가 누락되었습니다.
ORAG 이 하는 일은 ORAG 는 세 가지 레이어에서 이 문제를 해결합니다:
- RAG 파이프라인 연결 Notion, Confluence, S3, GitHub 또는 사용자 정의 소스를 연결합니다. ORAG 은 검색 지연 시간 목표인 50ms 미만으로 채크업, 임베딩, 벡터 검색을 처리합니다.
- MCP 서버 검색 레이어는 Model Context Protocol 서버로 노출됩니다. 하나의 설정 파일이 AI 에이전트에게 조직의 지식 베이스에 구조화된 권한 접근을 제공합니다.
- 접근 제어 모든 지식 베이스와 MCP 서버에 대한 역할 기반 권한. 감사 로그, 팀 워크스페이스, SSO 입니다. 기업용 AI 를 실제로 배포 가능하게 하는 것들입니다.
기술 스택 모든 것은 TypeScript 입니다. 각 레이어가 사용하는 것은:
LangChain.js 를 RAG 파이프라인에 사용: 문서 로드, 채크업 전략, 임베딩 모델, 벡터 저장소 통합
MCP 프로토콜을 에이전트 인터페이스에 사용: 타입 지정, 스트리밍, 인증된 pgvector / Pinecone 을 벡터 검색에 사용
첫날부터 역할 기반 접근 제어가 구축되었습니다. 나중에 추가되지 않았습니다.
왜 MCP 인가요? 대안은 모든 통합을 위한 전용 접합 코드를 작성하는 것입니다. 새로운 에이전트, 새로운 데이터 소스: 사용자 정의 연결자, 사용자 인증, 사용자 정의 오류 처리. MCP 는 AI 에이전트에 표준 인터페이스를 제공합니다. 하나의 설정 파일이 있고, 당신의 에이전트는 스트리밍, 인증, 관찰성을 포함하여 다른 타입 지정 API 와 같이 지식 베이스를 호출할 수 있습니다. 이것이 ORAG 을 컴포지블하게 만드는 것입니다. 한 번에 소스를 추가합니다. 필요한 모든 에이전트가 MCP 서버를 지목합니다.
난이도: 프로덕션에서의 검색 품질 노트북에서 작동하는 RAG 는 쉽습니다. 프로덕션에서 작동하는 RAG 는 아닙니다. 간극은 세부 사항에 있습니다: 채크업 전략은 사람들이 생각한 것보다 더 중요합니다. 검색 점수는 obse
확장성 (scalability)이 필요하고, 부하 하에서도 지연 시간 (latency) 이 예측 가능해야 합니다. 관찰 가능성 (observability) 레이어에 다른 것보다 더 많은 시간을 투자했습니다: 검색 (retrievals), 도구 호출 (tool calls), 완성 (completions) 전반의 완전한 요청 추적, 지연 시간 분해 및 검색 품질 점수를 하나의 뷰에서 제공했습니다. 이를 없애면 성능이 저하될 때 당신은 무언가를 보지 않고 비행합니다. 제가 배운 것 접근 제어 (access control) 는 기업용 AI 가 실제로 실패하는 곳입니다. 그것은 모델이 아닙니다. 그것은 검색이 아닙니다. 그것은
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기