본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 18. 00:09

Docling을 활용한 멀티모달 RAG (Multimodal RAG)

요약

Docling을 활용하여 텍스트, 표, 이미지가 포함된 복잡한 PDF를 구조화된 마크다운으로 변환하고, 이를 기반으로 멀티모달 RAG 파이프라인을 구축하는 프로젝트입니다. Qdrant 벡터 DB와 Ollama(Llama 3.2)를 사용하여 로컬 환경에서 문서 이해 및 질의응답이 가능합니다.

핵심 포인트

  • Docling을 통한 PDF의 구조화된 마크다운 추출
  • Qdrant 벡터 데이터베이스를 활용한 빠른 유사도 검색
  • 이미지를 요약본으로 교체하여 멀티모달 데이터 처리
  • Ollama와 Llama 3.2를 이용한 로컬 LLM 기반 질의응답
  • Streamlit을 활용한 직관적인 사용자 인터페이스 제공

텍스트, 표, 이미지 및 수식이 포함된 PDF를 검색 증강 생성 (Retrieval-Augmented Generation, RAG) 파이프라인을 통해 질의할 수 있게 해주는 Docling 기반의 멀티모달 RAG입니다. 이 프로젝트는 구조화된 PDF 파싱을 위해 Docling을 활용하며, 임베딩된 문서 청크 (chunks)에 대한 빠른 벡터 검색을 위해 Qdrant를 사용합니다. 데모는 다음과 같습니다:

Medium 기사 링크: Docling-Powered RAG: Querying Over Complex PDFs

이 프로젝트는 다음과 같은 기능을 제공하는 멀티모달 RAG 기반의 Streamlit 기반 애플리케이션입니다:

  • PDF 문서 업로드
  • Docling을 사용하여 구조화된 마크다운 (markdown) 추출 - 임베딩된 이미지를 요약본으로 교체
  • 콘텐츠를 고정된 길이의 청크 (chunks)로 분할
  • nomic-embed-text-v1.5를 사용하여 임베딩 (embeddings) 생성
  • 임베딩을 Qdrant 벡터 데이터베이스에 저장 및 인덱싱
  • 로컬 LLM으로 Ollama + Llama 3.2 사용
  • RAG 파이프라인을 통한 채팅 기반 질의 활성화

이 모든 과정은 깔끔한 UI와 지속적인 채팅 기록과 함께 **로컬 (locally)**에서 실행됩니다.

docs/
| ├── attention.pdf # 질의를 위한 테스트 pdf
src/
...
  • PDF 업로드: 사용자가 사이드바에서 PDF를 업로드합니다.

  • Docling: PDF가 마크다운 (레이아웃 + 표 + 이미지 데이터 포함)으로 변환됩니다.

  • 이미지 요약: 명확성을 위해 Base64 이미지는 미리 작성된 요약본으로 교체됩니다 (더 나은 결과를 위해 OpenAI GPT-4o를 사용하여 획득).

  • 청킹 (Chunking) + 임베딩 (Embedding): 1024-토큰 중첩 청크 (overlapping chunks)로 토큰화됩니다. nomic-embed-text-v1.5를 사용하여 임베딩됩니다.

  • 인덱싱 (Indexing): 임베딩이 Qdrant 벡터 DB에 저장됩니다.

  • 질의 (Querying): 사용자의 질의가 임베딩됩니다. **내적 유사도 (dot-product similarity)**를 사용하여 가장 관련성이 높은 상위 청크를 검색합니다. 이 청크들은 최종 답변 생성을 위해 **Ollama (Llama 3.2)**로 전달됩니다.

  • 의존성 설치: pip install -r requirements.txt

  • Qdrant 로컬 실행: docker run -p 6333:6333 qdrant/qdrant

  • Llama 3.2와 함께 Ollama 시작: ollama pull llama3

  • 앱 실행: streamlit run app.py

이 프로젝트의 UI는 공식 Streamlit Conversational App Tutorial을 기반으로 하며, DoclingQdrant를 사용한 멀티모달 문서 이해 (multimodal document understanding) 기능으로 강화되었습니다.

, 그리고 LlamaIndex

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0