지난 몇 일 동안 제가 항상 존재하기를 바랐던 것을 만들었습니다. 조직의 내부 데이터 (문서, 위키, 데이터베이스 등) 를 가져와 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 가 실제로 실패하는 곳입니다. 그것은 모델이 아닙니다. 그것은 검색이 아닙니다. 그것은