# OpenRAG 심층 분석 (2026-03-13)
> 소스: github.com/langflow-ai/openrag (Apache 2.0, v0.3.0)

## 개요
Langflow + OpenSearch + Docling 통합 엔터프라이즈 RAG 플랫폼.
Docker로 올인원 실행 (5개 컨테이너).

## 핵심 아키텍처

### Hybrid Search (★ 핵심)
- **시맨틱 검색 70%** (dis_max KNN) + **키워드 검색 30%** (BM25 multi_match)
- Reranker 미사용 — 가중치 블렌딩으로 대체
- fuzziness=AUTO, text^2 + filename^1.5 가중치

### Multi-Model Multi-Embedding (★ 독특)
- 하나의 인덱스에 여러 임베딩 모델 벡터 동시 저장
- 필드명: `chunk_embedding_{모델명}`
- 모델 교체해도 기존 데이터 재인덱싱 불필요
- 검색 시 모든 모델 벡터 병렬 쿼리

### 문서 파싱 (Docling)
- 20+ 포맷: PDF, DOCX, PPTX, XLS, 이미지, HTML, MD, TXT
- OCR 지원
- **테이블 파싱**: 행/열 구조 → 탭 구분 텍스트 평탄화
- 페이지 기반 청킹 (같은 페이지 텍스트 합침)

### 임베딩 모델 지원
- OpenAI: text-embedding-3-small(1536), 3-large(3072), ada-002(1536)
- IBM WatsonX: granite/multilingual-e5-large 등
- Ollama: 자유 모델 (차원 자동 감지)
- tiktoken 기반 정확한 토큰 카운팅 (배치 8000토큰)

### 벡터DB (OpenSearch)
- disk_ann 엔진, L2 거리, ef_construction=100, m=16
- DLS(Document Level Security) — JWT 기반 사용자별 문서 격리
- 벡터검색 + 전문검색 + 필터링 + 집계 단일 엔진

### LLM Agent (Langflow)
- LiteLLM으로 멀티 프로바이더 (OpenAI, Anthropic, Ollama)
- MCP 도구 연동 (agentd 라이브러리)
- Nudges: 지식 기반 맥락적 제안 자동 생성

## webnovel-writer RAG과 비교
- webnovel: Qwen3-Embedding + Jina Reranker (2단계)
- OpenRAG: Multi-Model Embedding + Hybrid Search (Reranker 없음)
- OpenRAG의 Docling 테이블 파싱이 보험 문서에 유리

## 우리 시스템 적용 가능 인사이트

### 즉시 활용
1. **Hybrid Search 70/30 비율** — 보험 용어는 키워드 매칭 비중 더 높여야 할 수 있음
2. **Docling 테이블 파싱** — 보험 약관, 보장분석표 PDF 파싱에 최적
3. **Multi-Model Embedding** — 모델 교체 시 기존 데이터 보존 패턴

### 중기 활용
4. **집필 참고자료 검색** — 연금/세금 관련 PDF를 OpenRAG에 업로드하여 채팅 검색
5. **보장분석 시스템** — OpenSearch DLS로 고객별 문서 격리
6. **한국어 최적화** — OpenSearch nori 형태소 분석기 필요

### 주의사항
- Python 3.13 필수
- OpenSearch 메모리 소비 큼
- 한국어 특화 최적화 안 됨 (nori 별도 설정)
- 정밀도 중요하면 Reranker(Jina) 추가 필요
