목차

Database · ARTICLE · 2026

RAG-Anything 한국어 소개글 (PyTorchKR, 2026)

9bow (박정환) · discuss.pytorch.kr ↗ · ↳ 7 links

요약

이 페이지는 PyTorch Korea User Group 운영자 9bow(박정환)가 2026-05-05에 게시한 RAG-Anything 소개글을 다룬다. 글은 홍콩대학교 데이터 인텔리전스 랩(HKUDS)이 공개한 멀티모달 RAG 프레임워크를 한국어 독자에게 처음 소개하는 자료이며, 도전 과제부터 설치 명령까지를 한 편에 담는다.

RAG-Anything 자체의 방법 설계와 정밀한 수치는 이 wiki의 원 논문 페이지가 담당한다. 이 페이지가 기록하는 것은 한국어 커뮤니티가 이 도구를 어떤 순서로, 무엇을 강조하며 소개했는가다. 소개 순서와 강조점은 그 자체로 자료 가치가 있다. 어떤 항목이 국내 독자에게 먼저 전달되었고 어떤 항목이 빠졌는지를 보여주기 때문이다.

글에는 두 가지 성격이 겹쳐 있다. 하나는 원 논문 요약이고 다른 하나는 오픈소스 도입 안내다. 후자는 pip install raganything 한 줄과 실행 가능한 파이썬 예제 두 개로 이루어져 있어, 논문 페이지에는 없는 이 글만의 부가 가치다.

글 말미에는 본문이 GPT 모델로 정리되었으며 원문과 다르게 정리된 부분이 있을 수 있다는 안내가 붙어 있다. 따라서 이 글은 2차 자료로 취급하고, 인용이 필요한 수치는 원 논문 페이지에서 다시 확인한다.

배경

글은 RAG의 정의에서 출발한다. RAG는 LLM이 외부 지식을 활용해 정확한 답변을 생성하는 기법이다. 이 정의만으로는 기존 방식의 문제가 드러나지 않기 때문에, 글은 곧바로 한계를 덧붙인다.

기존 RAG 시스템은 텍스트 중심으로 설계되어 있어 실제 문서에 자주 등장하는 다이어그램, 표, 수식, 차트 같은 비텍스트 요소를 효과적으로 처리하지 못한다. 즉 논문이나 재무 보고서처럼 그림과 표가 본문만큼 중요한 문서에서는 검색 대상 자체가 절반만 인덱싱되는 셈이다.

글은 이 문제를 해결하려는 시도로 RAG-Anything을 소개한다. RAG-Anything은 LightRAG(EMNLP 2025)를 기반으로 구축된 올인원 멀티모달 RAG 시스템이며, 텍스트, 이미지, 표, 수식을 단일 인터페이스로 처리하고 PDF, Office 문서, 이미지를 포함한 다양한 형식을 지원한다.

핵심 개념

멀티모달 RAG는 텍스트뿐 아니라 이미지, 표, 수식을 함께 검색 대상으로 삼는 RAG를 말한다. 글이 다루는 네 가지 모달리티는 텍스트, 이미지, 표, 수식이다.

지식 그래프는 문서에서 뽑은 entity를 노드로, entity 사이의 관계를 엣지로 표현한 구조다. 글은 RAG-Anything이 이 그래프를 하나가 아니라 두 개 만든다는 점을 핵심으로 제시한다.

reranking은 1차 검색이 모은 후보의 순서를 다시 매기는 단계다. 글의 ablation 표에 w/o Reranker 변형이 등장하며, 이 단계를 뺐을 때의 성능 변화를 보여준다.

VLM은 vision-language model의 약어로, 이미지와 텍스트를 함께 입력받는 모델이다. 파이프라인 마지막 단계에서 검색된 텍스트와 시각 자료를 함께 받아 최종 응답을 만드는 역할을 맡는다.

글의 구성

글은 메타데이터 블록을 빼면 열세 개 절로 이루어져 있고, 문제 제기에서 시작해 참고 자료 링크로 끝나는 순서를 따른다. 아래 표는 그 절들을 흐름에 따라 아홉 묶음으로 정리한 것이다.

순서 절 다루는 내용
1 소개 RAG의 정의와 텍스트 중심 설계의 한계
2 RAG-Anything 개요 LightRAG 기반이라는 계보와 지원 모달리티, 설치 방법
3 핵심 기술적 도전 과제 통합 표현, 구조 인지 분해, 크로스-모달 검색
4 핵심 기여 이중 그래프, hybrid search, 모달리티 인지 질의, 긴 문서 강건성
5 멀티모달 파이프라인 구성 파싱부터 응답 합성까지 5단계
6 실험 결과와 ablation DocBench, MMLongBench, 문서 길이별 비교, 구성 요소 제거 실험
7 케이스 스터디 다중 패널 그림과 금융 표
8 설치 및 사용법 설치 명령과 파이썬 예제 두 개
9 비교, 한계, 라이선스, 참고 자료 기능 매트릭스, 두 가지 한계, MIT 라이선스, 원 논문과 저장소 링크

구성에서 드러나는 특징은 도전 과제를 먼저 세우고 기여를 그 답으로 배치한 점이다. "핵심 기술적 도전 과제" 절과 "핵심 기여" 절이 이어져 있어, 각 기여가 어떤 문제를 겨냥하는지 독자가 대응시킬 수 있다.

방법

세 가지 도전 과제

글은 멀티모달 RAG가 풀어야 할 문제를 세 가지로 나눈다.

도전 과제 글의 서술
통합 멀티모달 표현 서로 다른 정보 유형을 매끄럽게 통합하면서도 각 모달리티의 고유한 특성과 모달리티 간 관계를 보존해야 한다
구조 인지 분해 복잡한 레이아웃을 지능적으로 파싱하면서 공간적, 계층적 관계를 유지하는 레이아웃 인지 파싱이 필요하다
크로스-모달 검색 서로 다른 모달리티 사이를 탐색하고 그 상호 연결을 추론할 수 있는 정교한 메커니즘을 요구한다

세 항목은 각각 표현, 입력 처리, 검색이라는 서로 다른 층을 겨냥한다. 표현 문제는 인덱싱 단계에서, 분해 문제는 파싱 단계에서, 검색 문제는 질의 단계에서 나타난다.

네 가지 핵심 기여

글이 꼽은 기여는 네 가지이며, 앞 절의 도전 과제와 다음과 같이 대응한다.

기여 글의 서술 대응하는 도전 과제
이중 그래프 구축 크로스-모달 지식 그래프와 텍스트 기반 지식 그래프를 별도로 구축한 뒤 entity 정렬로 융합한다 통합 멀티모달 표현
크로스-모달 hybrid search 그래프의 구조적 탐색과 임베딩 공간의 의미 유사도 매칭을 결합해 multi-hop 추론과 의미 검색을 동시에 수행한다 크로스-모달 검색
모달리티 인지 질의 처리 질의에 포함된 "figure", "table", "equation" 같은 단서를 분석해 모달리티 선호를 추론한다 크로스-모달 검색
긴 문서 강건성 문서가 길어질수록 베이스라인 대비 성능 격차가 증가한다 구조 인지 분해

이중 그래프 구축이 통합 표현 문제에 답하는 방식은 통합을 미루는 것이다. 두 그래프를 하나로 합쳐 만드는 대신 각각 만든 뒤 entity 이름으로 정렬해 잇는다. 따라서 각 모달리티의 고유한 특성은 자기 그래프 안에 남고, 모달리티 간 관계는 정렬된 entity를 통해 확보된다.

모달리티 인지 질의 처리는 검색을 시작하기 전에 질의를 읽는 단계다. 사용자가 "이 논문의 표를 보여줘"라고 물으면 "table"이라는 단어가 표 쪽 후보를 우선하라는 신호가 된다.

5단계 파이프라인

글은 문서 한 편이 답변이 되기까지 거치는 경로를 다섯 단계로 나눈다.

단계 이름 하는 일
1 멀티모달 파싱 엔진 PDF, DOCX, PPTX 등 다양한 형식을 입력받아 텍스트, 이미지, 수식, 표를 모두 처리한다
2 크로스-모달 지식 그래프 구축 각 콘텐츠 단위에서 검색용 설명과 그래프 구축용 entity 요약을 생성하며 문맥을 고려한다
3 그래프 융합 및 인덱스 생성 멀티모달 그래프와 텍스트 기반 지식 그래프를 entity 이름으로 정렬하여 통합한다
4 크로스-모달 hybrid search 구조적 탐색과 의미 유사도 매칭을 병행하여 후보를 검색하고 순서를 다시 매긴다
5 멀티모달 응답 합성 최종 텍스트 컨텍스트와 시각 자료를 VLM에 입력하여 응답을 생성한다

2단계에서 콘텐츠 단위마다 두 종류의 산출물이 나온다는 점이 이 파이프라인의 특징이다. 하나는 검색에 쓰이는 설명이고 다른 하나는 그래프를 만들기 위한 entity 요약이다. 즉 같은 이미지가 검색 대상으로도, 그래프 노드의 재료로도 쓰인다.

글은 2단계에서 문맥을 고려한다고만 적고 문맥의 범위나 생성 모델은 밝히지 않는다. 파서 구현체의 이름도 나오지 않는다.

사용법

설치와 기본 예제

설치는 한 줄이다.

pip install raganything

기본 예제는 초기화, 인덱싱, 질의를 하나의 비동기 함수 안에서 보여준다.

import asyncio
from raganything import RAGAnything

async def main():
    rag = RAGAnything(
        llm_model_func=your_llm_func,
        vision_model_func=your_vision_func
    )
    await rag.process_document_complete(
        file_path="research_paper.pdf",
        output_dir="./rag_output"
    )
    result = await rag.query(
        "논문의 주요 실험 결과와 관련 그림을 설명해줘",
        mode="hybrid"
    )
    print(result)

asyncio.run(main())

예제에 담긴 질의는 "논문의 주요 실험 결과와 관련 그림을 설명해줘"다. 텍스트 결과와 그림을 한 번에 요구하는 질의를 고른 것이므로, 앞 절의 모달리티 인지 질의 처리를 그대로 보여주는 예시에 해당한다.

코드에 등장하는 인자

글의 두 예제에 나오는 인자는 여섯 개다.

인자 등장 위치 예제가 넘기는 값
llm_model_func RAGAnything 초기화 사용자 LLM 함수, LightRAG 통합 예제에서는 OpenAI 호환 모델
vision_model_func RAGAnything 초기화 사용자 비전 모델 함수
working_dir LightRAG 통합 예제의 초기화 ./lightrag_cache
file_path process_document_complete research_paper.pdf
output_dir process_document_complete ./rag_output
mode query "hybrid"

인자 구성에서 확인되는 사실은 LLM과 비전 모델을 각각 따로 넘긴다는 점이다. 텍스트 처리와 시각 처리에 서로 다른 모델을 쓸 수 있는 구조다. 글은 mode에 "hybrid" 하나만 예시로 들고 다른 값이 무엇인지는 적지 않는다.

LightRAG 통합

LightRAG와 함께 쓰는 예제는 working_dir를 ./lightrag_cache로 지정한다.

from raganything import RAGAnything
from lightrag import LightRAG

rag = RAGAnything(
    working_dir="./lightrag_cache",
    llm_model_func=openai_compatible_model,
    vision_model_func=vision_model
)

기본 예제와 비교하면 달라지는 것은 working_dir 인자 하나와 lightrag 임포트다. 글은 이 디렉터리에 무엇이 저장되고 어떻게 재사용되는지는 설명하지 않는다.

결과

DocBench

DocBench는 229개 문서, 평균 66페이지 규모의 벤치마크다. 글은 RAG-Anything의 값만 싣고 비교 대상의 값은 싣지 않는다.

방법 학술 금융 정부 법률 뉴스 텍스트 멀티미디어 통상 전체
RAG-Anything 61.4 67.0 61.5 60.2 66.3 85.0 76.3 46.0 63.4%

도메인별 편차가 크다. 가장 높은 텍스트 85.0%와 가장 낮은 통상 46.0% 사이에 39.0%p 차이가 있다. 텍스트 도메인이 높은 것은 기존 RAG가 잘하던 영역이 그대로 유지된다는 뜻이고, 멀티미디어 76.3%가 두 번째로 높은 것은 비텍스트 처리를 겨냥한 설계와 방향이 맞는 결과다.

MMLongBench

MMLongBench는 135개 문서, 7가지 유형으로 구성된다.

방법 자료 튜토리얼 학술 가이드 브로셔 행정 금융 전체
RAG-Anything 46.6 43.5 38.7 43.9 34.0 45.7 43.6 42.8%

전체 42.8%는 DocBench 전체 63.4%보다 20.6%p 낮다. 두 벤치마크의 난이도가 다르다는 것을 보여주는 값이지만, 글은 두 수치를 나란히 놓기만 하고 차이의 이유는 설명하지 않는다.

문서 길이별 비교

글이 다른 방법의 수치를 함께 제시하는 곳은 이 표와 ablation 표뿐이다.

문서 길이 RAG-Anything MMGraphRAG 차이
101에서 200페이지 68.2% 54.6% 13.6%p
200페이지 이상 68.8% 55.0% 13.8%p

글은 100페이지를 초과하는 문서에서 격차가 13점 이상이라고 요약한다. 두 구간 모두 RAG-Anything은 68%대를 유지하는 반면 MMGraphRAG는 55% 안팎에 머문다. 문서가 200페이지를 넘어도 RAG-Anything의 값이 떨어지지 않는다는 점이 글이 강조하는 긴 문서 강건성의 근거다.

ablation

구성 요소를 빼고 측정한 결과다. Chunk-only는 그래프를 제거한 변형이고 w/o Reranker는 reranker를 제거한 변형이다.

방법 학술 금융 정부 법률 뉴스 텍스트 멀티미디어 통상 전체
Chunk-only 55.8 61.5 60.1 60.7 64.0 81.6 66.2 43.5 60.0%
w/o Reranker 60.9 63.5 58.8 60.2 68.6 81.7 74.7 45.4 62.4%
RAG-Anything 61.4 67.0 61.5 60.2 66.3 85.0 76.3 46.0 63.4%

글의 해석은 그래프 기반 구조 표현이 멀티모달 추론에 결정적이며, 성능의 주된 원천이 reranker가 아니라 그래프 기반 검색이라는 것이다.

ablation의 도메인별 증감

위 표에서 각 변형과 전체 시스템의 차이를 도메인별로 계산하면 다음과 같다. 값은 전체 시스템에서 해당 변형을 뺀 차이이며 단위는 %p다.

도메인 그래프 제거 대비 reranker 제거 대비
학술 +5.6 +0.5
금융 +5.5 +3.5
정부 +1.4 +2.7
법률 -0.5 0.0
뉴스 +2.3 -2.3
텍스트 +3.4 +3.3
멀티미디어 +10.1 +1.6
통상 +2.5 +0.6
전체 +3.4 +1.0

그래프 제거의 영향이 가장 큰 도메인은 멀티미디어로 10.1%p 차이가 난다. 이미지와 표가 많은 문서에서 그래프 구조가 실제로 기여한다는 뜻이므로, 글의 해석과 방향이 맞는다.

다만 모든 도메인에서 성립하지는 않는다. 법률에서는 그래프를 제거한 변형이 오히려 0.5%p 높고, 뉴스에서는 reranker를 제거한 변형이 2.3%p 높다. 전체 평균이 개선을 보여도 도메인 단위에서는 역전이 두 곳 있다.

케이스 스터디

글은 두 가지 사례로 그래프 구조가 무엇을 해결하는지 보인다.

사례 그래프의 노드 그래프의 엣지 얻는 효과
다중 패널 그림 해석 패널, 축 라벨, 범례, 캡션 의미 관계 t-SNE 시각화처럼 여러 서브패널을 가진 그림에서 시각 레이아웃 그래프를 구축한다
금융 표 탐색 행 헤더, 열 헤더(연도), 데이터 셀, 단위 명시적으로 모델링한 관계 유사한 용어가 반복되는 재무 표에서도 정확히 정보를 추출한다

두 사례의 공통점은 그림이나 표를 하나의 덩어리로 다루지 않고 내부 구성 요소로 쪼갠 뒤 관계를 붙인다는 점이다. 재무 표에서 같은 항목명이 여러 연도 열에 반복될 때, 열 헤더가 별도 노드로 있으면 어느 연도의 값인지를 구분할 수 있다.

글이 만든 비교 매트릭스

글은 세 종류의 시스템을 기능별로 비교한 표를 직접 만들어 싣는다.

기능 RAG-Anything 기존 텍스트 RAG GraphRAG
텍스트 처리 지원 지원 지원
이미지 분석 지원 미지원 미지원
표 파싱 지원 부분적 부분적
수식 인식 지원 미지원 미지원
크로스-모달 추론 지원 미지원 미지원
통합 인터페이스 지원 지원 지원

이 표에서 기존 텍스트 RAG와 GraphRAG의 값은 여섯 항목이 모두 같다. 글의 분류 기준이 모달리티 지원 범위 하나뿐이어서, 그래프 구조를 쓰는지 여부는 표에 반영되지 않는다. 따라서 이 매트릭스는 RAG-Anything과 나머지를 가르는 용도이며, 기존 텍스트 RAG와 GraphRAG의 차이를 보는 데에는 쓸 수 없다.

한계

글이 옮긴 시스템 한계

한계 내용
텍스트 중심 검색 편향 시각 정보가 명시적으로 요구되는 질의에서도 텍스트 소스를 선호한다
경직된 공간 처리 셀 병합, 비표준 칼럼 경계 등 표준 레이아웃을 벗어난 문서 처리에 제한이 있다

두 한계는 앞에서 본 결과와 이어진다. 텍스트 중심 검색 편향은 멀티미디어 도메인이 텍스트 도메인보다 8.7%p 낮다는 DocBench 결과와 같은 방향을 가리키고, 경직된 공간 처리는 금융 표 케이스 스터디가 다루는 정형 표와 대비되는 조건이다.

자료 자체의 한계

이 글은 2차 자료다. 본문 말미에 GPT 모델로 정리되었고 원문과 다르게 정리된 부분이 있을 수 있다는 안내가 붙어 있으므로, 수치를 인용할 때는 원 논문 페이지에서 다시 확인한다.

내용 면에서 빠진 항목도 여럿이다.

빠진 항목 확인 경로
DocBench와 MMLongBench의 베이스라인 수치 원 논문 페이지
실험에 사용한 backbone 모델 원 논문 페이지
인덱싱 비용 원 논문 페이지
파서 구현체의 이름과 동작 원 논문 페이지, OSS 저장소 페이지
mode 인자가 받는 값의 목록 OSS 저장소 페이지

글 안의 수치 불일치

같은 글 안의 두 표가 서로 어긋나는 지점이 한 곳 있다. DocBench 표는 뉴스 도메인의 66.3%를 강조 표기해 가장 높은 값처럼 제시하지만, 같은 글의 ablation 표는 같은 도메인에서 w/o Reranker 변형이 68.6%를 기록했다고 적는다. 전체 시스템이 뉴스에서 자기 변형보다 2.3%p 낮은 셈이므로, 두 표를 함께 읽으면 66.3%가 최고값이라는 표기가 성립하지 않는다.

문서 길이별 비교 표의 출처도 불명확하다. 101에서 200페이지 구간의 68.2%는 DocBench 전체 63.4%와도, MMLongBench 전체 42.8%와도 직접 연결되지 않는다. 글은 이 구간 수치가 어느 벤치마크의 부분집합인지 밝히지 않는다.

핵심 용어

용어 뜻
이중 그래프 구축 크로스-모달 지식 그래프와 텍스트 기반 지식 그래프를 따로 만든 뒤 entity 정렬로 합치는 전략
entity 정렬 두 지식 그래프를 entity 이름 기준으로 맞춰 하나의 인덱스로 통합하는 절차
크로스-모달 hybrid search 그래프의 구조적 탐색과 임베딩 공간의 의미 유사도 매칭을 함께 수행하는 검색 방식
모달리티 인지 질의 처리 질의에 들어 있는 "figure", "table", "equation" 같은 단서로 모달리티 선호를 추론하는 처리
DocBench 229개 문서, 평균 66페이지 규모의 벤치마크
MMLongBench 135개 문서, 7가지 유형으로 구성된 벤치마크

관련 페이지