전체 그래프
RAG

Multi-modal RAG with Captioning

ai-mlrag

상위: Advanced RAG Techniques

기존 RAG가 처리하지 못했던 문서 내의 이미지, 테이블, 차트 등 시각적 정보를 검색 대상에 포함시키는 RAG 확장 기법

  • 작동방식
    1. 콘텐츠 분리 추출: PDF와 같은 문서에서 텍스트 데이터와 이미지 데이터를 각각 다른 스트림으로 분리하여 추출
    2. 이미지 캡셔닝: 추출된 각 이미지(테이블, 차트 포함)를 멀티모달 LLM(ex. Gemini)에 입력하여, 이미지의 내용을 설명하는 상세한 텍스트 '캡션'을 생성
    3. 통합 인덱싱: 문서에서 추출한 원본 텍스트와, 이미지로부터 생성된 캡션 텍스트를 모두 합쳐 하나의 데이터 풀로 만듬. 이 통합된 텍스트 데이터를 청킹하고 임베딩하여 단일 Vector Database인덱싱.
    4. 통합 검색 및 답변: 사용자가 질문을 하면, 이 통합 Vector Database를 대상으로 검색을 수행. 이를 통해 질문과 관련된 내용이 원본 텍스트에 있든, 이미지의 캡션에 있든 모두 찾아낼 수 있으며, 검색된 정보를 바탕으로 최종 답변을 생성.
  • 장점
    • 정보 손실 방지: 문서의 모든 정보(텍스트, 이미지, 표)를 활용하므로 정보 손실이 거의 없음
    • 이해도 증진: 표의 수치나 다이어그램의 구조처럼 시각적 데이터에 기반한 질문에 정확하게 답변 가능
    • 단일화된 검색: 모든 종류의 데이터를 텍스트라는 단일 형태로 변환하여 검색 파이프라인을 복잡하게 만들지 않고도 멀티모달 검색을 구현
  • 구현
    • 콘텐츠 분리: PyMuPDF 라이브러리를 사용하여 PDF 페이지를 순회하며 텍스트와 이미지를 추출하여 별도로 저장
    • 캡션 생성: 저장된 각 이미지 파일을 멀티모달 모델인 Gemini 1.5-flash로 전달. 이때 검색에 최적화된 간결한 요약을 생성하도록 프롬프트를 구성하여 이미지에 대한 텍스트 캡션을 얻음.
    • Vector Database 구축: 추출된 원본 텍스트와 생성된 이미지 캡션 텍스트를 Document 객체로 변환한 뒤, 이 둘을 합쳐 Vector Database에 함께 저장.