Enterprise AI Solution

지능형 문서 검색의
새로운 패러다임

RAG(Retrieval-Augmented Generation) 시스템으로 사내 문서와 외부 지식을 통합하여 정확하고 신뢰할 수 있는 AI 기반 답변을 제공합니다.

6
Docker 서비스
10+
지원 파일 형식
25+
REST API 엔드포인트
99.9%
시스템 안정성

핵심 기능

문서 기반 질의응답부터 실시간 모니터링까지, 엔터프라이즈 환경에 최적화된 기능을 제공합니다.

🔍

문서 기반 질의응답

TOPIK 어휘, MDN, 한국어 사전, 업무 문서 등 다중 소스를 통합하여 문맥에 맞는 정확한 답변을 제공합니다.

📄

다양한 문서 형식

PDF, DOCX, HWP, HWPX, Excel, 텍스트, 마크다운은 물론 Python, JavaScript 등 코드 파일까지 처리합니다. PaddleOCR로 스캔 PDF도 지원합니다.

🔒

오프라인 지원

로컬 LLM(Ollama) 및 오프라인 임베딩 모드로 네트워크 제한 환경에서도 안전하게 운영 가능합니다.

📊

실시간 모니터링

시스템 상태, 인제스트 진행률, 벡터 수를 실시간으로 확인하고 관리할 수 있습니다.

재순위화 (Reranking)

Cross-Encoder 기반 재순위화로 검색 결과의 관련성을 높여 더 정확한 컨텍스트를 제공합니다.

SSE 실시간 스트리밍

Server-Sent Events 기반 토큰 스트리밍으로 답변이 생성되는 즉시 화면에 표시하여 체감 응답 속도를 대폭 개선합니다.

🔄

증분 업데이트

파일 수정 시간과 해시를 비교하여 변경된 문서만 업데이트하고 삭제된 문서는 자동 제거합니다.

📷

PaddleOCR 한국어 OCR

PaddleOCR GPU 가속 OCR로 스캔 PDF 및 이미지에서 한국어 텍스트를 93~95% 정확도로 추출합니다.

시스템 아키텍처

3계층 구조로 설계되고 Docker 컨테이너 6개로 구성되어 확장 가능하고 안정적인 RAG 플랫폼

🖥️ 사용자 경험 계층
Tomcat UI (:8080) architecture.html app.js styles.css
⚙️ 애플리케이션 백엔드 계층
FastAPI (:8000) OCR API (:9000) rag_orchestrator.py ingest.py chunking.py
🏗️ 인프라 및 모델 계층
PostgreSQL (:5432) Redis (:6379) Ollama (:11434)
🖥️

Tomcat UI

정적 리소스 서빙 및 REST API 호출을 통한 사용자 인터페이스 제공

FastAPI + LlamaIndex

질의 처리, 인제스트 관리, 설정 API를 제공하는 고성능 백엔드

🗄️

PostgreSQL + pgvector

벡터, 키워드, 메타데이터를 통합 저장하고 하이브리드 검색을 수행하는 통합 DB

📮

Redis

비동기 인제스트 작업 상태 관리 및 캐시 처리

🤖

Ollama LLM

로컬 환경에서 실행되는 대규모 언어 모델 추론 엔진

📷

PaddleOCR (OCR API)

PaddleOCR 기반 한국어 OCR 마이크로서비스 (93~95% 정확도, GPU 가속)

기술 스택

검증된 오픈소스 기술과 최신 AI 프레임워크의 조합

🚀

FastAPI

Python 3.10 / CUDA 12.1

고성능 비동기 웹 프레임워크로 REST API 및 SSE 스트리밍 엔드포인트 제공

🦙

LlamaIndex

Core Framework

문서 인덱싱과 RAG 파이프라인 오케스트레이션 담당

🐘

PostgreSQL

pgvector/pgvector:pg16

벡터 + 전문 검색(tsvector) + 메타데이터를 통합 관리하는 하이브리드 검색 DB

🤖

Ollama

ollama:0.14.2 / qwen2.5:3b-instruct-q4_K_M

로컬 LLM 호스팅으로 프라이버시 보장 및 오프라인 지원

📐

SentenceTransformer

multilingual-e5-base (768dim)

다국어 지원 임베딩 모델로 한국어 문서 처리에 최적화

📮

Redis

Cache & Queue

비동기 작업 상태 관리 및 고속 캐시 처리

🐳

Docker Compose

V2 / 6개 서비스

API, OCR, UI, DB, Cache, LLM 6개 서비스를 통합 관리

📷

PaddleOCR

paddleocr 2.7.3 / CUDA 11.8

한국어 OCR 93~95% 정확도, GPU 가속 PDF/이미지 텍스트 추출

🌳

Tree-sitter

Code Parser

코드 파일의 구조적 파싱으로 함수/클래스 단위 추출

데이터 흐름

문서 수집부터 답변 생성까지의 전체 파이프라인

인제스트 파이프라인

📁
원본 파일
PDF, DOCX, HWP/HWPX, Excel
📝
텍스트 추출
PyMuPDF, PaddleOCR, PrvText
📋
MD 정규화
Markdown 중간 정규화
✂️
청킹
계층적, 유형별 최적화
🔢
임베딩
SentenceTransformer
🐘
PostgreSQL
Vector + Metadata

질의 파이프라인

사용자 질문
자연어 입력
🔍
하이브리드 검색
Vector + Keyword
🎯
재순위화
Cross-Encoder
🤖
LLM 추론
Ollama
💬
SSE 스트리밍 답변
실시간 토큰 + 인용

API 엔드포인트

FastAPI 기반의 체계적인 REST API 구조

메서드 경로 설명
POST /rag/query 질문 전송, 응답 및 출처 수신
POST /rag/query/stream SSE 실시간 토큰 스트리밍 질의 (meta → delta → final → done)
GET /rag/status 시스템 전체 헬스 상태 조회
POST /rag/ingest 선택한 소스로 인제스트 작업 시작
GET /rag/ingest 최근/활성 인제스트 작업 상태 조회
POST /rag/ingest/control/stop 실행 중인 인제스트 작업 안전 중지
POST /rag/ingest/chunk-count 소스별 저장된 청크 개수 조회
GET /rag/documents 업로드된 문서 목록 조회
POST /rag/documents 새 문서 저장 및 인제스트 트리거
GET /rag/system-prompt 현재 시스템 프롬프트 조회
POST /rag/system-prompt 시스템 프롬프트 변경
GET /rag/embed-config 임베딩 구성 조회
POST /rag/embed-config 임베딩 모드(온라인/오프라인) 전환
GET /rag/ollama-models Ollama 모델 목록 조회
GET /health API 준비 상태 확인
GET /gpu CUDA/GPU 사용 가능 여부 확인
GET /pgvector/heartbeat PostgreSQL + pgvector 헬스체크
GET /pgvector/stats PostgreSQL 문서 청크 통계 조회
GET /pgvector/vector-stream 벡터 수 실시간 SSE 스트림
GET /redis/health Redis 연결 상태 확인

지원 파일 형식

다양한 문서 및 코드 파일을 처리할 수 있습니다

📕

PDF

PyMuPDF로 텍스트를 추출하고, 스캔 PDF는 PaddleOCR로 한국어 텍스트를 인식합니다.

📘

DOCX / Excel

python-docx로 Word 문서, openpyxl로 Excel 파일의 텍스트를 추출합니다.

📗

HWP / HWPX

HWP는 PrvText 스트림 추출, HWPX는 XML 파싱으로 한글 문서를 처리합니다.

📄

TXT / Markdown

일반 텍스트 및 마크다운 파일을 Markdown 중간 정규화를 거쳐 처리합니다.

🐍

Python

tree-sitter로 함수/클래스 단위의 구조적 파싱을 수행합니다.

📜

JS / TS / Java / Go

다양한 프로그래밍 언어의 코드를 구조적으로 분석합니다.

RAG 시스템 도입을 검토하고 계신가요?

제안서를 통해 도입 절차, 기대 효과, 운영 방안을 자세히 확인해보세요.

제안서 보러가기