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