프로젝트 소개
Lexos는 자체 호스팅 언어 모델을 기반으로 구축된 이벤트 기반 AI 문서 처리 엔진입니다. 고동시성 Go 게이트웨이와 비동기 Python 워커를 결합하여 HTTP 요청 처리를 차단하거나 외부 AI API에 의존하지 않고 문서 요약, 검색 증강 생성(RAG), 음성 전사를 실행합니다.
README에 설명된 주요 기능:
자체 호스팅 및 프라이버시 중심: 문서 파싱, 임베딩, 벡터 검색, 전사, LLM 추론이 모두 자체 호스팅 Docker 환경 내에서 실행되며 외부 AI API가 필요 없습니다.
비동기 처리: 클라이언트는 작업 식별자와 함께 즉시 202 Accepted 응답을 받고, CPU 집약적 작업은 백그라운드에서 계속됩니다.
실시간 답변 스트리밍: Server-Sent Events가 생성된 답변을 Python 워커에서 Redis Pub/Sub과 Go 게이트웨이를 거쳐 브라우저로 토큰 단위로 스트리밍합니다.
S3 호환 객체 스토리지: 개발용 MinIO와 프로덕션용 Cloudflare R2를 동일한 S3 호환 클라이언트 구성으로 사용합니다.
콘텐츠 주소 처리: SHA-256 지문이 소스 콘텐츠, 작업, 매개변수를 결합하여 완료된 아티팩트를 재사용하고 동시 중복 처리를 억제합니다.
다국어 검색: 다국어 임베딩, 토크나이저 인식 청킹, FAISS 코사인 유사도 검색이 지원 언어 전반에서 관련 증거를 검색합니다.
격리된 자동 테스트: Go 핸들러는 의존성 주입된 Redis 및 스토리지 인터페이스를 사용하고, Python 테스트는 Pytest와 pytest-mock으로 모델, 스토리지, 네트워크 작업을 모킹합니다.
아키텍처: Next.js 프론트엔드가 전사, 요약, 질의응답 워크플로를 제공하며 TanStack Query 폴링과 SSE 렌더링을 사용합니다. Go + Echo 게이트웨이는 수집, 검증, 객체 스토리지로의 스트리밍 업로드, 작업 디스패치, 중복 억제, SSE 프록시를 처리합니다. Redis는 브로커, 작업 상태 저장소, 처리 캐시, 분산 잠금 계층 역할을 합니다. Python 워커는 큐를 폴링하며 세 가지 파이프라인을 실행합니다: Qwen3 0.6B로 Map-Reduce 파이프라인을 통한 요약용 Distiller, FastEmbed 임베딩과 FAISS 인덱스를 사용한 RAG용 Gleaner, Faster-Whisper를 통한 오디오 전사용 Scriber.
배포: 약 4 vCPU와 8GB RAM의 소형 CPU 전용 VPS를 대상으로 설계되었으며, AI 워커는 약 2GB 메모리 예산을 사용합니다. 양자화된 Q4_K_M GGUF 모델, 메모리 매핑 로딩, ONNX 기반 임베딩, 문서별 FAISS IndexFlatIP 인덱스, 순차 워커 동시성, 외부화된 상태로 리소스 사용을 예측 가능하게 유지합니다.
실행: Docker와 Docker Compose가 필수이며, 저장소를 클론하고 docker-compose up --build -d를 실행합니다. 초기 부팅은 모델 파일 다운로드와 캐싱으로 몇 분이 걸릴 수 있습니다. 프로덕션 스토리지는 R2 엔드포인트와 S3_REGION=auto로 동일한 S3 구성 표면을 사용하며, Wrangler로 수명 주기 규칙을 적용할 수 있습니다. 원시 객체는 하루 후 만료되고 캐시 객체는 8일 후 만료되며, Redis 캐시 메타데이터는 7일 동안 재사용 가능합니다.
테스트: Go 게이트웨이 테스트는 Testify 목으로 핸들러 동작, 지문, 캐시 히트, 오래된 잠금 복구, 스토리지 접근을 검증합니다. Python 테스트는 캐시 소유권, 토크나이저 인식 인덱싱, 스트리밍 정리, 워커 라우팅, 아티팩트 재사용, 실패 복구를 검증합니다. 프론트엔드 CI는 TypeScript 타입 검사, ESLint, 프로덕션 Next.js 빌드를 실행합니다.
라이선스: MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.