Essence of RAG

Ash-Hun·2024년 6월 23일
0

RAG

목록 보기
3/3
post-thumbnail

오늘은 RAG라는 기술의 본질과 스타트업의 AI Researcher로써 바라봐야하는 시각에 대해 이야기해보겠습니다.

LLM의 빠른발전에도 여전히 RAG가 주목받는 이유?

우리는 너무나도 빠른 기술의 발전 속에 살아가고 있죠. 1주만 지나도 논문이 수십개씩 쏟아져나오고 하루가 멀다하고 빅테크들의 놀라운 기술발표가 이어지고 있습니다. 그런데.. 이런생각 해보신적 없으신가요? GPT-4o의 성능처럼 놀라운 모델이 공개되고 좋은 연구성과가 많이 발표되고 있음에도 현업에서는 아직도 그정도의 퍼포먼스를 발휘하지 못할까요? 저는 그 이유가 바로 기술의 발전과 적용 사이의 속도차이라고 생각합니다! 제 짧은 식견으로는 현재의 빅테크들이 산업체계를 주도하고 발전시켜나가는데 큰 이바지를 하고있지만 각 산업군, 도메인, 현업 곳곳에 해당 기술들이 스며들기에는 아직 많은 시행착오가 필요하다고 생각이 됩니다. 그렇기 때문에 현재 LLM 분야의 발전속도에 비해 등장한지 꽤 오래된 RAG라고 하는 기술이 여전히 주목을 받고 있는 것이죠.
한편으로는 바라보는 관점의 차이도 분명 존재하는 것 같습니다. 특정한 산업군에 LLM과 생성형 AI가 적용되는데에는 많은 우려가 동반됩니다. 가장 큰 것이 기존의 프로세스를 대체했을 때 현재 이상의 profit을 보장할 수 있는가? 만약 이것이 보장되지 않는다면 롤백했을 때의 리스크가 크지는 않는가? 해당 기술을 활용하여 기존 프로세스를 대체시켜야할 이유와 목적이 분명한가? 등등이 존재합니다. 이러한 관점에서 지긋이 바라보면 현재 많은 기업에서 생성형 AI를 활용한 사업과 연구계획을 가져가는 것이 어쩌면.. 버블이 아닐까...? 라는 생각도 종종 하곤합니다.
그렇지만 너무 깊은 생각인것도 맞죠. 이것을 고민하고 잘 적용하는 것은 회사의 중책을 맡으신 분들이 할 역할인것이고 저와 같은 AI Researcher 혹은 AI Engineer들은 이를 정확히 인지하여 어떠한 방향으로 기술을 활용할 수 있을지, 최신 기술을 적용할 수 있는지에 대한 연구/개발 방향을 잡으면 되는것 같습니다.
RAG는 이제까지 말한 모든 시각을 통틀어서 현재 가장 적절한 위치에 있는 기술 같습니다. 연구되어 온전히 적용되기까지 아직도 발전할 potential이 가득하고 응용될 가능성이 굉장히 크게 남아있습니다. 각 기업의 실무자들도 발빠르게 이를 인지했기때문에 주의깊게 보는게 아닐까요?ㅎㅎ

RAG의 본질은 무엇일까?

그렇다면 RAG의 본질은 무엇일까요? 많은 Researcher나 Engineer분들께 여쭤보고싶습니다만, 그럴여력은 되지 못하고..ㅎㅎ (혹시 이 포스트를 보고 본인이 생각하는 RAG의 본질이 무엇인지 댓글에 적어주시면 너무 감사할 것 같습니다 🥹) 제 생각을 풀어보도록 하겠습니다. 제가 생각하는 RAG의 본질은 아래와 같이 정리해볼 수 있을 것 같습니다.

사용자가 준 요청에 대해 LLM이 내뱉는 답변에 신뢰성 한 스푼을 첨가하자

물론 개인적인 생각입니다만, 제가 바라보는 RAG는 "사용자가 준 요청에 대해 LLM이 내뱉는 답변에 신뢰성 한 스푼을 첨가하자"인것 같습니다. 저는 저 한문장에 되게 흥미로운 요소가 가득하다고 생각이 듭니다. 기술적으로 접근해보면 RAG는 결국 User Question을 가지고 Knowledge Base에서 관련된 Context를 찾아내 이를 활용하여 답변을 Generating하는 방법론인데요, 핵심된 요소가 User Question, Knowledge Base, Context, Generating으로 볼 수 있습니다. 이 4가지 요소와 위의 문장을 관련지어 한번 생각해봅시다.
제가 생각하는 RAG는 위와 같기 때문에 결국 궁극적인 목적은 답변에 신뢰성을 주고싶은 것 입니다. 첫번째 요소인 User Question을 주체로 바라보면 사용자가 준 요청에 해당하는 요소가 될 것이고 이 질문을 이용해서 신뢰성을 만드려면 질문에 정확하게 부합하는 근거를 찾아야 합니다. 이때, 해당 근거를 Knowledge Base에서 찾게 되는 것이고 그 종류는 굉장히 다양하게 확장될 수 있겠죠! 또한, 사람간의 소통이 아니기 때문에 컴퓨터는 있는 그대로의 표현 또는 의미론적 비교를 하게 되는 등 근거를 찾기 위해서 User Question을 최대한 잘 이해해야 합니다. 그렇게 잘 이해한 User Question을 바탕으로 Knowledge Base에 접근해 Context(=근거)를 잘 가져오고 나면 답변을 생성하는데 사용해야겠지요. 답변을 생성하는 방법이 Generating에 해당할 것이구요. 즉, 모든 요소가 굉장히 유기적으로 연결되어 있습니다. 이것을 보기 쉽게 정리해봅시다!

  • User Question이 발생함.
  • User Question을 잘 이해해야 함.
  • 잘 이해한 User Question을 바탕으로 Knowledge Base에 접근함.
  • 접근한 Knowledge Base에서 Context를 가져옴.
  • User Question과 Context를 가지고 답변을 Generating 함.

기존에 RAG에 관심이 있으셨던 분들은 어디서 많이 본 단계아닌가요? 바로 이것이 "Advanced RAG"입니다!!

결국 Advanced RAG와 겹쳐서 바라보면 거의 매칭이 되는데요,

  • User Question이 발생함.
  • User Question을 잘 이해해야 함. (= Query Translation)
  • 잘 이해한 User Question을 바탕으로 Knowledge Base에 접근함.
    (= Routing, Query Construction)
  • 접근한 Knowledge Base에서 Context를 가져옴.
    (= Indexing, Retrieval)
  • User Question과 Context를 가지고 답변을 Generating 함.
    (= Generate)

위와 같이 바라볼 수 있겠네요. 생각나는대로 끄적여봤지만 결국 제가 하고픈 얘기는 이겁니다. 제가 생각하는 RAG는 사용자 요청에 대한 답변을 LLM이 생성하는데 이때 신뢰성을 주기 위한 방법론이고, 신뢰성을 주기 위한 다양한 방법이 존재합니다. 사용자의 요청에 더 정확한 근거를 찾기 위해 사용자 요청의 형태를 분석하는 방법, 사용자의 요청에 따라 더 적합한 prompt를 선택하는 방법, 사용자의 요청에 따라 다양한 knowledge base에 접근하기 위한 방법, 사용자의 요청에 최대한 정확한 근거를 가져오는 방법, 가져온 근거를 답변생성에 더 용이하게 하기 위해 우선순위를 매기거나 필터링하는 등 조작하는 방법, 최종적으로 사용자 요청과 해당 근거를 가지고 답변을 생성하는 방법까지 이것들이 각각 'Advanced RAG'에 녹아들어있고 많은 RAG를 하시는 연구자분들이, 바라봐야할 방향성이라고 생각합니다. (사실 이미 적용하고 연구하고 있죠ㅎㅎ) 더 나아가서는 각각의 단계를 모듈화하여 개별단계로 취급한 뒤 마치 블록조립을 하듯 사용할 수 있는 단계까지 나아가는것을 "Modular RAG"라고 하는데 저 역시 이 단계에 오길 바라며 열심히 정진하려고 합니다.

긴글 읽어주셔서 감사드리며, 개인의 의견이 상당수 포함되어 있으니 당연히 다른 의견이 존재할 거라고 생각합니다. 관련된 이야기는 언제나 환영이구요, 다양한 인사이트 공유했으면 좋겠습니다 😆


P.S. 본 블로그에서의 RAG에 관한 Post는 Advanced RAG를 순차적으로 다루어보려고 합니다. 물론 제 입맛대로 관점대로 말이죠 :)

profile
Deep Burst 🔥🔥🔥

0개의 댓글