Dify RAG 대안 탐색 및 PDF 변환 작업기록
Dify RAG 대안 탐색 및 PDF 변환 작업기록
섹션 제목: “Dify RAG 대안 탐색 및 PDF 변환 작업기록”[!note] 수정이력 | 2026-05-04 17:35, 미미 (openclaw)
- PDF 변환 파이프라인 구축 (Office COM → A3 landscape)
- Dify 마크다운 업로드 성공 (NW구성내역서)
- Ollama 임베딩 모델 과부하 이슈 확인 → RAG 적합성 의문
- OpenDocuments 대안 발견 (XLSX 지원, 한국어)
- ERP 통합 검토 필요성 확인
1. 목표
섹션 제목: “1. 목표”엑셀 기반 설계/준공 내역서에서 “선로ID” 같은 핵심 코드를 자연어 질문으로 찾을 수 있는 검색 시스템 구축.
2. PDF 변환 (성공)
섹션 제목: “2. PDF 변환 (성공)”방법: Windows Office COM 자동화 (LibreOffice 실패)
섹션 제목: “방법: Windows Office COM 자동화 (LibreOffice 실패)”- LibreOffice는 엑셀 내장 객체(GIS 지도, 광연결도)를 제대로 렌더링 못함
- Windows + Microsoft Office COM (
ExportAsFixedFormat) 사용 - A3 landscape (Orientation=2, PaperSize=8) 설정
변환된 파일
섹션 제목: “변환된 파일”| 원본 | 시트 | 출력 PDF |
|---|---|---|
| 준공서류 | 준공도면(전/후) | 건천읍대곡리_준공도면전.pdf, 후.pdf |
| 설계내역서 | 설계도면(전/후) | 건천읍대곡리_설계도면전.pdf, 후.pdf |
| 작업계획서 | NW구성내역서(전/후) | 건천읍대곡리_작업계획_NW구성내역서전.pdf, 후.pdf |
| 작업계획서 | 도면(전/후) | 건천읍대곡리_작업계획도면전.pdf, 후.pdf |
⚠️ PDF는 이미지 기반이라 텍스트 추출 안 됨 (Dify 검색 불가)
3. Dify 마크다운 업로드 (성공)
섹션 제목: “3. Dify 마크다운 업로드 (성공)”데이터: 작업계획서 NW구성내역서
섹션 제목: “데이터: 작업계획서 NW구성내역서”- 전(前): 8행 x 11열 — 데이터 거의 없음
- 후(後): 176행 x 52열 — 실제 데이터 다수
마크다운 테이블 변환 (pandas)
섹션 제목: “마크다운 테이블 변환 (pandas)”| 함체 번호 | 순번 | 선로ID | 규격 | 연결 접속점 | 긍장(m) | 선로NW구분 | 선로명 | ... |업로드 결과
섹션 제목: “업로드 결과”- 2개 문서 Dify 업로드 성공
- 인덱싱: Ollama 임베딩 과부하로 전부 실패
4. 핵심 문제: Ollama 임베딩 모델 과부하
섹션 제목: “4. 핵심 문제: Ollama 임베딩 모델 과부하”- bge-m3-korean (1.2GB) 모델 로딩 시 500 에러
- Dify worker가 Ollama에 동시 요청 → 과부하
Max retries exceeded with url: /api/embed
시도한 해결책
섹션 제목: “시도한 해결책”- ✅
OLLAMA_KEEP_ALIVE=24h— 유지되지만 동시 요청 실패 - ✅ Worker 재시작 + Celery 큐 비우기 — 잠시 후 동일 증상
- ❌ bge-m3-korean → nomic-embed-text 전환 — Dify 설정상 번거로움
Ollama 단일 인스턴스로는 RAG 대량 인덱싱 부적합.
5. 대안 발견: OpenDocuments
섹션 제목: “5. 대안 발견: OpenDocuments”정보 (GeekNews, 2026-03)
섹션 제목: “정보 (GeekNews, 2026-03)”- Self-hosted RAG 플랫폼 (MIT 라이선스)
- XLSX 지원 (12종 파일 포맷)
- 한국어-영어 교차 검색
- BM25 + 벡터 하이브리드 검색
- Docker 배포 가능
장단점
섹션 제목: “장단점”| 항목 | Dify | OpenDocuments |
|---|---|---|
| XLSX | ⚠️ (텍스트 추출만) | ✅ (지원) |
| 한국어 검색 | ✅ | ✅ |
| Docker | ✅ | ✅ |
| 천 개 파일 관리 | ⚠️ | ? (미확인) |
| 정확한 코드 검색 | ❌ (자연어 기반) | ❌ (자연어 기반) |
6. 핵심 인사이트: “천 개 엑셀” 문제
섹션 제목: “6. 핵심 인사이트: “천 개 엑셀” 문제”RAG의 한계
섹션 제목: “RAG의 한계”- RAG는 자연어 유사도 검색 — “선로ID가 뭐야?” 가능
- RAG는 정확한 숫자/코드 검색에 약함 — “선로ID=123123” 불확실
- 천 개 파일 인덱싱/관리는 부담
더 적합한 접근법
섹션 제목: “더 적합한 접근법”A. ERP 통합 (권장)
섹션 제목: “A. ERP 통합 (권장)”- 공사관리ERP에 문서 관리 모듈 추가
- 엑셀 업로드 → DB 테이블 저장 (선로ID, 코어ID 등 정규화)
- SQL로 정확 검색:
WHERE 선로ID = '123123' - 참외가 개발 중인 ERP에 붙이면 가장 실용적
B. 구조화된 마크다운 + Dify
섹션 제목: “B. 구조화된 마크다운 + Dify”- NW구성내역서 같은 데이터 시트만 마크다운으로 변환
- RAG는 “어떤 항목들이 있어?” 같은 개괄 질문용
- 정확한 ID 조회는 ERP에서
C. OpenDocuments 테스트
섹션 제목: “C. OpenDocuments 테스트”- XLSX 직접 업로드 지원
- 한국어 교차 검색 가능
- Docker로 빠르게 테스트 → 적합하면 전환
7. 다음 행동
섹션 제목: “7. 다음 행동”- 참외에게: ERP에 문서/설계데이터 관리 모듈 추가 검토 요청
- OpenDocuments: Docker로 1시간 테스트 (XLSX 업로드 → “선로ID” 검색)
- Dify: 마크다운 기반 RAG는 보조용으로 유지 (개괄 질문)
- Dify Console Token:
eyJhbGciOiJIUzI1NiIs...(2026-05-05 만료) - Dataset ID:
5b2d038b-45a3-46be-9095-da851478e458 - API Key:
dataset-bf0aca3a2e6bf656fa555f9bfaca9580 - PDF 변환 스크립트:
/tmp/nw_docker.py,/tmp/nw_to_markdown.py