00:00:00거의 모든 RAG 시스템은 똑같은 문제로 어려움을 겪습니다.
00:00:04텍스트 문서만 처리할 수 있다는 점이죠.
00:00:06그래서 이미지, 차트, 그래프 등을 입력하려고 하면,
00:00:10대부분의 RAG 시스템은 이를 처리하지 못합니다.
00:00:12어제 제가 보여드렸던 LightRAG도
00:00:13정확히 똑같은 문제를 가지고 있었습니다.
00:00:16하지만 오늘 그 해결책을 보여드리겠습니다.
00:00:19그 해결책은 바로 'RAG Anything'입니다.
00:00:20RAG Anything은 이 문서 문제를 해결해 줍니다.
00:00:23이미지를 처리할 수 있습니다.
00:00:24차트도 처리할 수 있고요.
00:00:25그래프도 처리 가능합니다.
00:00:25그리고 우리가 실제로 사용하는 문서들을
00:00:28제대로 다루는 RAG 시스템을 만들게 해줍니다.
00:00:31RAG Anything은 LightRAG를 만든 팀에서 제작했습니다.
00:00:34어제 우리가 이미 구축한 LightRAG 시스템에
00:00:36직접 연결됩니다.
00:00:37그래서 우리 스택에 도입하기가 정말 쉽습니다.
00:00:40오늘은 이것을 어떻게 설정하고
00:00:43내부적으로 어떻게 작동하는지 정확히 보여드릴 겁니다.
00:00:44현존하는 가장 강력한 RAG 시스템 중 하나를
00:00:46직접 사용해 보실 수 있도록 말이죠.
00:00:48오프닝에서 충분히 짐작하셨겠지만,
00:00:50여러분은 이미 어제의 LightRAG 영상을
00:00:52보셨을 것이라 가정하겠습니다.
00:00:54아직 안 보셨다면 위에 링크를 걸어둘 테니 확인해 보세요.
00:00:56오늘은 여러분이 이미 LightRAG 서버를
00:00:58설정해 두었다고 가정하고 진행할 것이기 때문입니다.
00:00:59여러분은 RAG가 어떻게 작동하는지, 그리고
00:01:02이 지식 그래프라는 개념을 이해하고 계실 겁니다.
00:01:03RAG Anything은 본질적으로
00:01:06LightRAG를 감싸고 있는 래퍼(Wrapper)입니다.
00:01:07우리는 여전히 동일한 LightRAG 웹 UI를 사용하며
00:01:10약간의 차이만 있을 뿐입니다.
00:01:11하지만 RAG Anything에 입력되는 모든 것들,
00:01:13즉, 이러한 비텍스트 문서들도
00:01:15결국 동일한 지식 그래프로 들어가게 됩니다.
00:01:17우리는 전과 같은 질문을 던질 것이고,
00:01:19어제 했던 것처럼 Claude Code를 통해
00:01:22동일한 API로 쿼리를 보낼 것입니다.
00:01:24오늘 우리가 추가하려는 기능은
00:01:26매우 중요합니다.
00:01:28순수하게 텍스트로만 구성된 RAG 시스템을 구축하는 것으론 부족합니다.
00:01:30우리가 사는 세상은 텍스트로만 이루어져 있지 않으니까요.
00:01:32기술적으로는 텍스트조차 아닌, 그냥 스캔된 형태의
00:01:34PDF 문서를 받아본 적이 얼마나 많으신가요?
00:01:36LightRAG는 그런 걸 처리 못 하지만, RAG Anything은 가능합니다.
00:01:39이제 오늘 조금 기술적인 내용을 다뤄보겠습니다.
00:01:40내부를 살펴보고 이 전체 시스템이
00:01:43정확히 어떻게 작동하는지 설명해 드리겠습니다.
00:01:44큰 틀에서 보면 무엇을 하는 것일까요?
00:01:46RAG Anything은 단지 텍스트가 아닌
00:01:49문서들을 살펴봅니다.
00:01:50기본적으로 LightRAG가 하는 일을
00:01:52비텍스트 문서들에 대해서 수행하는 것입니다.
00:01:55그렇게 자체적인 지식 그래프와
00:01:56자체 벡터 데이터베이스를 생성한 후에,
00:01:58이를 LightRAG의 것과 병합합니다.
00:02:00그렇기 때문에 모든 것이 하나의 깔끔하고
00:02:04정돈된 장소에 모여 질문할 수 있게 되는 것이죠.
00:02:06이제 RAG Anything의 유일한 단점은
00:02:08조금 더 무겁다는 점입니다.
00:02:09비텍스트 문서를 파싱하는 데 도움이 되는
00:02:12몇 가지 모델을 컴퓨터에 다운로드해야 합니다.
00:02:14그리고 실제로 비텍스트 문서를 수집할 때,
00:02:18LightRAG UI를 통해서는 직접 할 수 없습니다.
00:02:22스크립트를 사용해야 하죠.
00:02:23다행히도 여기서 Claude Code가 활약합니다.
00:02:25사용자 입장에서는 모든 설정을 마친 후,
00:02:28비텍스트 문서를 수집하기 위해 해야 할 일은
00:02:31Claude Code에게 "RAG Anything 스킬을 사용해서
00:02:33이 문서를 수집해 줘"라고 말하는 것뿐입니다. 정말 간단하죠.
00:02:36매우 쉽습니다.
00:02:37그리고 이전과 동일한 방식으로 질문하면 됩니다.
00:02:39그러니 전혀 나쁘지 않죠.
00:02:40다시 말하지만, 단지 그 과정만으로 이 모든 기능을 얻게 됩니다.
00:02:43이제 RAG Anything이 실제로 어떻게 작동하는지 알아보기 전에,
00:02:46제 Claude Code 마스터클래스를 잠시 홍보하겠습니다.
00:02:49몇 주 전에 막 출시되었는데요,
00:02:50초보에서 AI 개발자가 되기 위한 최고의 코스입니다.
00:02:53특히 기술적 배경이 없는 분들에게 좋습니다.
00:02:55저는 말 그대로 매주 내용을 업데이트합니다.
00:02:57내일도 새로운 업데이트가 예정되어 있습니다.
00:02:59그러니 Claude Code를 마스터하고 싶은데
00:03:01어디서부터 시작해야 할지 모르겠다면,
00:03:03바로 이 강의가 여러분을 위한 것입니다.
00:03:05댓글창에 링크가 있습니다.
00:03:07Chase AI Plus 내에 포함되어 있습니다.
00:03:09무료 Chase AI 커뮤니티도 운영하고 있습니다.
00:03:11이 모든 것이 너무 벅차게 느껴지거나
00:03:12이제 막 시작하는 단계라면 말이죠.
00:03:14그 링크는 설명란에 있습니다.
00:03:15거기서 오늘 제가 이야기할 프롬프트와
00:03:19스킬들도 찾아보실 수 있습니다.
00:03:20그러니 어떤 경우든 꼭 확인해 보세요.
00:03:22이제 RAG Anything에 대해,
00:03:23그리고 이것이 실제로 어떻게 작동하는지 이야기해 봅시다.
00:03:25솔직히 말씀드리면 꽤 간단하고 자명합니다.
00:03:28여러분의 시간을 낭비하지 않기 위해,
00:03:29이 이미지를 10초 정도 띄워둔 다음 다음으로 넘어가겠습니다.
00:03:32그리고 다음 단계로 넘어가겠습니다.
00:03:34좋습니다, 아주 잘 되네요.
00:03:39자, 계속 가보죠.
00:03:41농담입니다.
00:03:42사실 꽤 많은 일이 일어나고 있거든요.
00:03:44이 이미지는 실제보다 상황을 더 복잡하게 만듭니다.
00:03:46지난번에 우리가 'Light RAG'로 했던 작업을 이해하신다면,
00:03:50그 대화들을 기억하시죠? 그렇다면 문제없을 겁니다.
00:03:52RAG Anything도 비슷한 방식으로 작동하는데,
00:03:55몇 가지 추가 단계가 있을 뿐입니다.
00:03:56저는 이 과정을 한 번 짚고 넘어가고 싶습니다.
00:03:57이런 시스템이 어떻게 작동하는지 이해하는 것이
00:03:58중요하다고 생각하기 때문입니다.
00:04:00일반적으로 AI 분야에서는
00:04:01지나치게 실용적인 부분에만 매몰되기 쉽습니다.
00:04:04"체이스, 그냥 어떻게 설치하고
00:04:05어떻게 사용하는지만 알려줘."
00:04:06그런 분이라면 이 부분을 건너뛰셔도 좋습니다.
00:04:08하지만 더 성숙한 AI 개발자가 되고 싶고,
00:04:11제가 원숭이로도 대체할 수 있는 사람들과
00:04:13차별화되고 싶다면,
00:04:15그저 '수락'만 누르고 프롬프트와 스킬을
00:04:17복사해서 붙여넣기만 하는 사람 말이죠.
00:04:18그렇다면 아키텍처에 대한
00:04:21어느 정도의 이해를 갖추는 것이 중요합니다.
00:04:22이것이 바로 여러분을 다른 사람들과
00:04:23차별화해 줄 요소이기 때문입니다.
00:04:24단순히 이 RAG 시스템을 사용하는 법뿐만 아니라,
00:04:27더 높은 수준의 큰 프로젝트에서도 말이죠.
00:04:30이렇게 해야 자신만의 기술을 만들기 시작하고,
00:04:34실제로 이 분야에서 실력을 쌓을 수 있습니다.
00:04:35그럼 시작해 봅시다.
00:04:37RAG Anything에 대해 이야기해 보죠.
00:04:38먼저 문제점부터 짚어볼까요?
00:04:40문제는 스캔된 PDF 파일을 가지고 있는데,
00:04:44이게 실제 텍스트 형식이 아님에도 불구하고
00:04:45RAG 시스템에 넣어야 한다는 점입니다.
00:04:46Light RAG는 이런 파일을 처리하지 못하죠.
00:04:48그래서 RAG Anything이 등장한 겁니다.
00:04:51선글라스를 쓴 멋진 라마 로고가 있네요.
00:04:53가장 먼저 일어나는 일은
00:04:56이 문서를 RAG Anything에 입력하는 것입니다.
00:05:00그러면 시스템은 가장 먼저
00:05:02'MinerU'라는 프로그램을 사용합니다.
00:05:05이 프로그램은 컴퓨터 로컬 환경에서 완전히 무료로 실행되죠.
00:05:08그리고 이 문서를 구성 요소별로
00:05:11하나하나 분해하기 시작합니다.
00:05:12MinerU는 오픈 소스 프로젝트입니다.
00:05:14본질적으로는 다수의 소형 전문 모델을 포함하는
00:05:16문서 파서(Parser)라고 보시면 됩니다.
00:05:19이런 용어가 어렵게 느껴지신다면,
00:05:21그냥 오픈 소스라는 것만 아셔도 충분합니다.
00:05:22아래에 링크를 남겨두겠습니다.
00:05:23다시 말씀드리지만, 오늘 대부분의 작업은
00:05:25이 프로그램이 처리하게 될 것입니다.
00:05:26MinerU는 문서를 분석하며 이렇게 말합니다.
00:05:29"좋아, 이건 헤더(제목)군."
00:05:32그러고는 헤더 주위에 상자를 만듭니다.
00:05:33"이건 본문 텍스트야."
00:05:36"이건 차트네."
00:05:39"이건 막대그래프 이미지군."
00:05:41"그리고 이건 LaTeX로 작성된 방정식이야."
00:05:44문서를 훑어보고 나서
00:05:47각각의 특수한 부분으로 분리해낸 것이죠.
00:05:50MinerU 자체가 그 안의 내용을 이해하는 것은 아닙니다.
00:05:52MinerU가 텍스트를 읽는 것은 아니라는 뜻이죠.
00:05:53텍스트의 의미를 파악하지 못하고,
00:05:55차트가 무엇에 관한 것인지도 이해하지 못합니다.
00:05:56그저 차트, 텍스트, 이미지라는 것만 인식할 뿐입니다.
00:06:01그다음 단계에서 이 구성 요소들을
00:06:05MinerU에 속한 개별 전문 모델들로 보냅니다.
00:06:10이 모든 과정은 여러분에게 보이지 않습니다.
00:06:12내부적으로 자동 처리되는 일이니까요.
00:06:15사용되는 모델 중 하나는 'PaddleOCR'입니다.
00:06:20이 모델이 텍스트를 분석하게 됩니다.
00:06:21MinerU가 텍스트 블록을 여러분 컴퓨터에 있는 PaddleOCR로 보내면,
00:06:24거기서 텍스트를 추출해내는 방식이죠.
00:06:28이제 스캔된 이미지 형태의 텍스트가 아니라,
00:06:30"X 회사가 2023년 3분기에 강력한 실적을 보고했다"와 같은
00:06:34실제 읽을 수 있는 텍스트 데이터가 됩니다.
00:06:36이 부분의 텍스트도 마찬가지입니다.
00:06:40차트 또한 같은 과정을 거칩니다.
00:06:41차트 역시 텍스트로 변환되어,
00:06:43거대언어모델(LLM)이 처리할 수 있게 됩니다.
00:06:45LaTeX 방정식도 동일합니다.
00:06:47그걸 처리하는 전담 모델이 따로 있거든요.
00:06:48이제 더 이상 LaTeX 코드가 아닌 실제 텍스트가 됩니다.
00:06:52다만, 일반 이미지는 예외입니다.
00:06:54막대 차트이든 무엇이든 간에,
00:06:57텍스트로 변환할 수 없는 모든 것들이 해당됩니다.
00:07:00그럴 경우 시스템은 텍스트 변환 대신
00:07:01해당 부분을 스크린샷으로 찍습니다.
00:07:03이 점이 아주 중요합니다.
00:07:05이제 이것은 하나의 스크린샷이 되었습니다.
00:07:07이미지 파일, 즉 스크린샷인 거죠. 아주 좋습니다.
00:07:11지금까지 어떤 일이 일어났나요?
00:07:13텍스트 형식이 아닌 문서를 입력했습니다.
00:07:16문서는 각각의 구성 요소로 식별되었고,
00:07:18우리는 그 요소들을 가져와서
00:07:20두 가지 바구니로 나누어 담았습니다.
00:07:22텍스트 버킷과 이미지 버킷이 있습니다.
00:07:26이 점을 인식하는 것이 중요합니다.
00:07:28이미지 또는 텍스트라는 두 가지 경로가 있습니다.
00:07:31자, 이해되시나요?
00:07:32이제 무엇을 할 거냐면,
00:07:34이러한 내부 모델 사용은 끝났습니다.
00:07:36이제 '거물급'을 데려와야 합니다.
00:07:37이제 GPT 5.4 Mini 같은 것을 가져와야 하죠.
00:07:40참고로, 반드시 그래야 하는 건 아닙니다.
00:07:42원한다면 이 모든 과정을 로컬로 유지할 수도 있습니다.
00:07:44Ollama 같은 것을 사용할 수도 있죠.
00:07:45이제 텍스트 버킷을 가져와 GPT 5.4 Mini로 보냅니다.
00:07:50그리고 다음과 같은 프롬프트를 포함합니다.
00:07:52"이 텍스트를 두 가지 요소로 분류해줘."
00:07:55"그 텍스트를 가져와서
00:07:57엔티티(개체)와 관계(relationship)로 나눠줘."
00:08:01엔티티와 관계, 기억하시나요?
00:08:03우리의 지식 그래프 기억하시죠?
00:08:05엔티티와 엔티티, 그리고 그들 사이의 관계 말입니다.
00:08:09좋아요, 그리고 그것을
00:08:13벡터 데이터베이스용 임베딩으로 분류하기를 원합니다.
00:08:17임베딩, 즉 'embed'와
00:08:21엔티티 및 관계라고 부르겠습니다.
00:08:26자, 앞으로 어떤 일이 일어날지 생각해 볼까요?
00:08:29임베딩은 벡터 데이터베이스의
00:08:32임베딩이 될 것이고, 엔티티와 관계는
00:08:35지식 그래프가 될 것입니다.
00:08:37마치 LightRag에서 했던 것처럼요, 그렇죠?
00:08:39똑같습니다, 똑같아요. 다만 이제는
00:08:42텍스트 버킷에서 나온 것이라는 점만 다릅니다.
00:08:44하지만 아까 그 이미지들은 어떨까요?
00:08:47이 이미지들은 어떻게 처리할까요?
00:08:48마찬가지로 이것들도 GPT 5.4로 보내지지만,
00:08:52스크린샷 형태의 OCR로서 처리됩니다.
00:08:55우리는 GPT 5.4에게 "이 스크린샷을 보고
00:08:59두 가지로 분류해줘"라고 말합니다.
00:09:02임베딩과 엔티티 및 관계죠.
00:09:06자, 왜 이렇게 할까요?
00:09:07왜 그냥 똑같은 프롬프트에 전부 밀어 넣고
00:09:09전체를 OCR 처리하게 하지 않을까요?
00:09:12왜 전체를 하나의 스크린샷으로 취급하지 않는 걸까요?
00:09:14비싸고 느리기 때문입니다.
00:09:16'RAG-anything'이 선택한 방식은,
00:09:17제 생각에 꽤 영리한데,
00:09:19사용자의 컴퓨터 로컬 수준에서 메스로 도려내듯
00:09:21텍스트와 스크린샷으로
00:09:24각각 분리해내는 것입니다.
00:09:25따라서 이 두 경로를 거치게 되면,
00:09:27엄청난 비용과 시간을 절약하게 됩니다.
00:09:29상상해 보세요. ChatGPT에게
00:09:31스크린샷 만 장을 보여주고 텍스트를 다 뽑아낸 뒤
00:09:34그 텍스트에서 임베딩과
00:09:36엔티티 및 관계를 추출하라고 한다면,
00:09:37시간과 돈이 엄청나게 들 것입니다.
00:09:38이 방식이 더 똑똑하죠.
00:09:40이미지 쪽의 엔티티와 관계도
00:09:44완전히 동일합니다.
00:09:45그것 역시 벡터 데이터베이스로 들어가고
00:09:49지식 그래프로도 생성됩니다.
00:09:52그럼 이게 무엇을 의미할까요?
00:09:53문서 하나로부터
00:09:55네 종류의 결과물이 만들어진 셈입니다.
00:09:59두 개의 벡터 데이터베이스와
00:10:02두 개의 지식 그래프가
00:10:04하나의 비텍스트 문서에서 나온 것이죠.
00:10:08따라오고 계신가요?
00:10:09이제 우리는 무엇을 해야 할까요?
00:10:10대답은 뻔하죠.
00:10:11이것들을 합쳐야(merge) 합니다.
00:10:12그래서 이 네 가지 요소를 가져와서
00:10:15그냥 하나로 합쳐버립니다.
00:10:18서로 위에 겹쳐 놓는 것과 비슷합니다.
00:10:19기본적으로 엔티티를 기준으로 매칭시키죠.
00:10:22그러면 결국 마지막에는
00:10:27하나의 벡터 DB와 하나의 지식 그래프를 얻게 됩니다.
00:10:31위에서 LightRag로 했던 것과
00:10:32거의 정확히 같은 결과물입니다.
00:10:34간단하죠.
00:10:35만약 우리가 RAG-anything만 썼다면
00:10:38거기서 끝났을 것입니다.
00:10:40하지만 우리는 RAG-anything을
00:10:44LightRag 위에 얹으려고 한다는 걸 기억하세요.
00:10:46저는 LightRag의 모든 강력함과
00:10:48RAG-anything의 모든 기능을 원합니다.
00:10:50그럼 이제 어떤 일이 일어날까요?
00:10:52방금 보신 과정의 반복일 뿐입니다.
00:10:54그럼 내용을 좀 내려보겠습니다.
00:10:55이제 우리에겐 벡터 DB와 지식 그래프가 포함된
00:11:00RAG-anything 세트가 있고
00:11:05기존의 LightRag 세트가 있습니다.
00:11:06어떻게 할까요? 그냥 합치면 됩니다.
00:11:07둘을 병합하는 거죠.
00:11:09그러면 RAG-everything과
00:11:13LightRag가 결합되어,
00:11:15최종적으로 단 하나의 벡터 데이터베이스와
00:11:20단 하나의 지식 그래프를 갖게 됩니다.
00:11:21거기서부터는 예전의
00:11:24독립적인 LightRag 방식과 똑같습니다.
00:11:27어떤 질문이든 던지면,
00:11:31그 질문은 여기서 벡터로 변환됩니다.
00:11:33관련 있는 벡터들을 끌어오고,
00:11:35동시에 아래로 내려가서
00:11:37정확한 엔티티를 찾은 다음
00:11:39그 주변에 무엇이 있는지 살펴봅니다. 아시겠죠?
00:11:43조금 혼란스러웠을 수도 있겠네요.
00:11:44설명이 잘 전달되었기를 바랍니다.
00:11:46더 헷갈리게 해드리기 위해 요약해 보죠.
00:11:51텍스트가 아닌 문서를 추가하면 어떻게 될까요?
00:11:54그것은 RAG-anything으로 들어갑니다.
00:11:56RAG-anything은 추출 가능한 텍스트를 뽑아내고
00:11:58동시에 가능한 이미지들도 추출합니다.
00:12:00그리고 이 둘을 ChatGPT나
00:12:02원하는 어떤 AI 시스템으로든 보냅니다.
00:12:05그러면 임베딩과 엔티티,
00:12:07그리고 관계로 분류됩니다.
00:12:09이것들은 지식 그래프와 벡터 데이터베이스가 됩니다.
00:12:13우리는 그것들을 병합합니다.
00:12:15이제 RAG-anything을 위한 하나의 벡터 DB와
00:12:17하나의 지식 그래프가 생겼습니다.
00:12:19이미 LightRag를 실행 중이었거나
00:12:22그 위에 다른 문서를 추가했다면,
00:12:24기존에 존재하는 벡터 데이터베이스와
00:12:27기존의 지식 그래프가 있을 것입니다.
00:12:29이를 해결하기 위해 그냥 병합하면 됩니다.
00:12:32결국 사용자 입장에서는 아무런 변화도 못 느낄 겁니다.
00:12:35다시 말하지만, 사용자에게 이 모든 과정은 보이지 않습니다.
00:12:39여러분에게는 전혀 중요하지 않은 내용이죠.
00:12:41유일하게 신경 쓰일 만한 부분은
00:12:42GPT 5.4를 사용하는 과정입니다.
00:12:45비용이 좀 발생할 수 있기 때문이죠.
00:12:47하지만 교육적인 목적에서 보면,
00:12:50그것이 RAG-anything 시스템이
00:12:53LightRag 시스템과 통합되는 방식입니다.
00:12:55결국 핵심은,
00:12:57텍스트가 아닌 문서도 처리할 수 있는
00:12:58RAG 시스템을 갖게 된다는 뜻입니다.
00:13:00여기까지 잘 따라오고 계신다면,
00:13:03이제 이것을 실제로 어떻게 설치하고
00:13:07사용하는지에 대해 알아보겠습니다.
00:13:08그럼 이제 설치 방법과
00:13:09실제 사용법,
00:13:10그리고 몇 가지 주의사항에 대해 이야기해 보죠.
00:13:11저는 Claude Code에 입력할 원샷 프롬프트를 만들었습니다.
00:13:14이 프롬프트는 모든 것을 대신 설치해주고
00:13:17적절한 모델 업데이트 등 모든 과정을 처리해줍니다.
00:13:19여러분은 그저 이것을 실행할 때
00:13:20LightRag 디렉토리에 있는지만 확인하면 됩니다.
00:13:23이 작업은 크게 세 가지를 수행합니다.
00:13:25우선, 올바른 저장 경로가
00:13:27업데이트되었는지 확인합니다.
00:13:29이미 Docker LightRag 인스턴스가 실행 중이기 때문이죠.
00:13:32둘째, 모델을 업데이트해야 합니다.
00:13:33GitHub에 따르면,
00:13:34이 프로젝트는 원래 좀 오래전에 만들어졌습니다.
00:13:37그래서 모든 예제 스크립트들이
00:13:39GPT 4.0 mini 같은 것들을 사용하고 있죠.
00:13:41그래서 저는 5.4 nano로 설정해 두었습니다.
00:13:43물론 원하신다면 이 설정을 변경할 수 있습니다.
00:13:45하지만 저는 5.4 nano를 사용하도록 했고
00:13:48모든 작업에 OpenAI를 사용할 수 있도록
00:13:51text-embedding-3-large를 유지했습니다.
00:13:51간단하게 만들기 위함이니 취향껏 바꿔보세요.
00:13:54마지막으로, RAG-anything을
00:13:55LightRag의 래퍼(wrapper)로 사용하고 있기 때문에,
00:13:58GitHub 저장소에 제공된
00:14:02일부 예제 스크립트가 잘못되어 있습니다.
00:14:03예를 들어 '임베딩 이중 래핑 버그' 같은 것인데,
00:14:05이 역시 Claude Code에게 고치라고 말하면
00:14:08깔끔하게 해결해 줍니다.
00:14:09그러니 이 프롬프트를 그냥 사용하시면 됩니다.
00:14:12말씀드린 대로, 무료 School 커뮤니티 안에 있습니다.
00:14:14링크는 설명란에 적어두었습니다.
00:14:15RAG-anything을 검색하시면 바로 찾으실 수 있습니다.
00:14:18프롬프트를 실행하면
00:14:19모든 것을 다운로드하기 시작할 겁니다.
00:14:21용량이 조금 클 수 있다는 점 이해해 주세요.
00:14:22MinerU와 같은 모든 종속성(dependencies)을
00:14:23함께 다운로드해야 하기 때문입니다.
00:14:25이제 문서 수집(ingesting)에 대해 이야기해 보죠.
00:14:26이 과정이 다소 번거롭고 까다로울 수 있습니다.
00:14:28가장 이상적인 세상이라면, 이 시스템은
00:14:33매우 간소화되어 있어서
00:14:35무엇이든 그냥 던져 넣기만 하면
00:14:40단일 인터페이스를 통해 처리되어야겠죠.
00:14:41UI로 가서 업로드 버튼만 누르면
00:14:44되는 식으로 말입니다.
00:14:45하지만 지금은 RAG-anything과 LightRag를 그렇게 쓸 수 없습니다.
00:14:48텍스트 문서에 대해서는 여전히 가능합니다.
00:14:50이전 영상에서 보여드린 일반적인 워크플로우,
00:14:52즉 UI로 이동하거나
00:14:54LightRag 기술을 사용해 업로드하는 것은 여전히 유효합니다.
00:14:59하지만 RAG-anything으로는 그렇게 할 수 없습니다.
00:15:01근본적으로 다른 터널, 즉
00:15:04다른 경로를 따라가야 하거든요.
00:15:05RAG-anything이 사용하는 그 다른 경로는
00:15:07바로 파이썬 스크립트입니다.
00:15:09UI도 없고, 누를 수 있는 버튼도 없습니다.
00:15:11말 그대로 스크립트입니다.
00:15:12직접 실행해야 하는 코드죠.
00:15:14다행히 이 부분에서 Claude Code가 활약합니다.
00:15:16Claude Code가 등장하면서 매우 간단해집니다. 왜냐하면 우리는
00:15:19레포지토리 안에 있는 그 스크립트를 '스킬'로 바꿀 것이기 때문입니다.
00:15:23따라서 사용자 입장에서는 일단 스킬이 생성되고 나면,
00:15:25그저 Claude Code에게 이렇게 말하기만 하면 됩니다.
00:15:28"Claude Code, rag-anything 스킬을 사용해서 이 문서들을 다 업로드해 줘."
00:15:32텍스트가 아닌 이 모든 문서들 말이죠.
00:15:33그렇게 명령하면,
00:15:34MinerU 프로세스를 거치게 됩니다.
00:15:36시간이 좀 걸릴 겁니다. 왜냐하면 아까
00:15:39기술적인 섹션에서 설명해 드린 것처럼
00:15:41여러 작업들을 처리해야 하기 때문입니다.
00:15:43하지만 결국 LightRAG에 업로드될 것이고
00:15:45여러분의 문서 목록과
00:15:47지식 그래프(Knowledge Graph) 안에 나타날 겁니다.
00:15:49자, 그게 여러분이 알아야 할 유일하게 생소한 부분입니다.
00:15:51솔직히 다른 생소한 점은, 이 작업을 하고 나면
00:15:54도커(Docker) 컨테이너를 재시작해야 한다는 것인데,
00:15:58스킬의 일부로서 그 과정이 자동으로 이루어집니다.
00:16:00다시 말씀드리지만, 사용자의 관점에서는
00:16:03그저 스킬을 호출하기만 하면 된다는 차이점뿐입니다.
00:16:06이 'rag-anything 업로드 스킬' 또한
00:16:08무료 커뮤니티에 올라와 있습니다.
00:16:10그냥 다운로드해서 .claude 폴더에 넣기만 하면
00:16:13문제없이 잘 작동할 겁니다.
00:16:14참고로 MinerU가 시간이 좀 걸린다는 점은,
00:16:17rag-anything이 작동하는 방식 때문인데
00:16:19다운로드하면 기본적으로 CPU에서 실행됩니다.
00:16:22만약 GPU에서 실행하고 싶다면
00:16:24다른 버전의 PyTorch가 필요합니다.
00:16:27이 말이 너무 어렵게 느껴지신다면,
00:16:29그저 너무 느리다 싶을 때 Claude Code에게
00:16:32"이봐, PyTorch를 실행할 수 있을까?
00:16:34우리 GPU에서 MinerU를 실행할 수 있어?"라고 물어보세요.
00:16:36그러면 Claude가 방법을 안내해 주거나,
00:16:37사실상 알아서 전부 처리해 줄 겁니다.
00:16:39하지만 기본적으로는 CPU에서 돌아간다는 점만
00:16:41알고 계시면 됩니다.
00:16:42그럼 실제로 작동하는 예를 한번 보죠.
00:16:44우리가 수집했던 문서 중 하나가
00:16:48이 Novatech PDF였죠?
00:16:50SaaS 매출 분석 보고서입니다.
00:16:51완전히 가짜 데이터이긴 합니다만,
00:16:52핵심은 우리가 이런 종류의
00:16:55막대 그래프가 포함된 것을 수집했다는 점입니다.
00:16:57보통 이런 것은 이미지로 추출되어
00:16:59ChatGPT 등으로 보내져야 하죠.
00:17:01일반적인 LightRAG는 이걸 처리하지 못했을 겁니다.
00:17:03왜냐하면 단순한 이미지일 뿐이니까요.
00:17:05차트라서 내용을 분리해 내기가 어렵습니다.
00:17:07하지만 이걸 rag-anything으로 돌렸기 때문에,
00:17:10이제 Claude Code를 통해 이에 대해 질문할 수 있습니다.
00:17:13그래서 제가 Claude Code에게 물어봤습니다.
00:17:14"LightRAG 데이터베이스에서 Novatech Inc의
00:17:152025년 1월부터 9월까지의
00:17:18월간 매출 추이를 조회해 줄 수 있어?"
00:17:20보시다시피, 여기서는 스킬조차 사용하지 않았습니다.
00:17:22그냥 곧바로 API 요청을 보냈는데,
00:17:24쿼리를 날리는 데는 이것도 괜찮은 방법입니다.
00:17:26"Novatech Inc의 월간 매출 추이가 어땠어?"
00:17:29이런 식으로 질문이 들어갔죠.
00:17:30이제 전체 답변이 나왔습니다.
00:17:32원한다면 가공되지 않은 원시 응답을 확인할 수도 있습니다.
00:17:35결과가 어땠을까요?
00:17:36전체 월별 상세 내역이 돌아왔습니다.
00:17:391월 4.6, 2월 4.9,
00:17:433월 5.4 이런 식으로 계속 이어집니다.
00:17:46따라서 이 새로운 문서들에 대해 질문하는 것은
00:17:48이전과 똑같습니다.
00:17:49유일한 차이점은 업로드 방식입니다.
00:17:51제가 드린 그 스킬을 호출하기만 하면 되고,”
00:17:53Claude Code에게 무엇을 넣고 싶은지
00:17:55말해주기만 하면 됩니다.
00:17:56폴더 전체를 지정할 수도 있고,
00:17:58특정 다운로드 파일을 지정할 수도 있습니다.
00:18:00정말 쉽습니다.
00:18:01익숙해져야 할 유일하게 생소한 점은
00:18:04이 두 가지 업로드 경로가 있다는 것뿐입니다.
00:18:05하지만 실제 질문과 답변 과정은
00:18:07그냥 일상 언어로 진행됩니다.
00:18:09일상 언어죠. 스킬을 가지고 있어도 마찬가지입니다.
00:18:11지난 영상에서도 스킬을 드렸었지만,
00:18:13Claude Code는 이 시스템 전체의
00:18:14API 구조를 이해할 만큼 충분히 똑똑합니다.
00:18:17로컬 환경, 즉 여러분의 컴퓨터에 있으니까요.
00:18:19rag-anything에 대해서는 이게 전부입니다.
00:18:21이번 영상의 대부분이
00:18:22기술적인 측면에 집중되어 있었다는 건 알지만,
00:18:24보시다시피 일단 LightRAG 기반을 구축하고 나면
00:18:28그 위에 rag-anything을 추가하는 건 그리 어렵지 않습니다.
00:18:32특히 제가 드린 '원샷 프롬프트'를 사용한다면 더 그렇죠.
00:18:35쿼리를 날릴 때 세부적으로
00:18:37조정할 수 있는 것들이 좀 있긴 하지만,
00:18:39사실 Claude Code가
00:18:41LightRAG 내부에서 조절 가능한
00:18:43모든 가중치들을 관리하고 있습니다.
00:18:45그 부분에 대해서는,
00:18:45'검색(retrieval)' 섹션으로 가보면
00:18:47오른쪽에 있는 모든 파라미터들이 해당됩니다.
00:18:49다시 말하지만, Claude Code가 어떤 것이 최선인지 잘 알고 있습니다.
00:18:52전반적으로, rag-anything을 설정하는 것이
00:18:56얼마나 쉬운지 잘 설명되었기를 바랍니다.
00:18:58또한 여러분의 RAG 시스템에 이러한 수준의 기능을
00:19:02추가하는 것이 얼마나 간편한지도요.
00:19:03많은 다른 RAG 시스템에서는 아예 불가능하거나
00:19:05비용이 매우 많이 드는 일입니다.
00:19:06하지만 이건 상대적으로 저렴합니다.
00:19:08특히 우리가 구축한 MinerU 로컬 파싱 시스템을
00:19:11사용한다면 더욱 그렇습니다.
00:19:12그럼 언제나처럼, 어떻게 생각하시는지 알려주세요.
00:19:14Chase AI+를 확인해 보시는 것도 잊지 마세요.
00:19:16Claude Code 마스터클래스를 듣고 싶으시다면요.
00:19:18그럼 다음에 뵙겠습니다.