Blog logo콜로리 블로그
개발 > 데이터
1년 전

AI를 더 스마트하게 만드는 방법 RAG

Post thumbnailImage

RAG의 개념과 등장 배경

Chat GPT 혹은 Gemini(a.k.a Bard) 와 같은 AI를 써본적이 있다면 한번쯤은 이런 경험 혹은 생각을 해봤을 수 있다.


  • AI가 잘 모르면서 아는척 한다.
  • 특정 도메인 지식에 대해 묻거나 활용하고 싶은데 AI한테 매번 관련 정보를 알려주어야 한다.


AI들은 범용적인 정보들을 기반으로 학습 되었기 때문에 학습되지 않은 정보를 물어보면 모르거나 엉뚱한 대답을 하는 것이다.



똑똑해져라..


이를 위해 RAG(Retrieval Augmented Generation, 검색 증강 생성)라는 기술이 탄생했고 이를 요약하면,

AI에게 질문하거나 무언가를 요청할 때 관련된 정보를 AI한테 알려주어 결과물에 대한 퀄리티를 높이는 작업을 의미한다.






RAG 활용 예시

백문이불여일견, 이해를 돕기 위해 예시를 준비했다.



상황

친구들이 사회에 진출하며 각자 먹고살기 바쁘다는 이유로 자주 모이기가 힘들어졌다.

그래서 계모임을 만들어 조금이라도 더 자주보자는 의미로 계모임을 만들었다.


매월 만원씩 모임 통장에 이체해서 회비를 관리하고,

총무도 매년 돌아가면서 맡고 모임을 주도하는 것과 같이 계모임 운영을 위한 기본 규칙들을 만들고 친구들끼리 합의했다.


그런데 계모임이 운영하다보니 친구들이 자꾸 새로운 멤버들을 합류시킨다. 너무 절겁나보다.

모임이 활발해져서 좋은데 인원도 많아지고 규칙도 추가되다보니

구성원들이 규칙을 헷갈려하거나 새로 합류한 사람에게도 매번 룰을 알려주어야하는 문제가 생겼다.


물론 규칙을 노션에 문서로 잘 정리해서 만들어 공유도 해놔서 규칙을 잘 읽으면 된다.

문제는 규칙이 너~~무 많아졌다는거다.

실제로 그런 계모임이 있을까 싶지만 규칙이 무슨 10만개가 넘어서 다 읽을 수가 없어졌다.



그래서 Chat GPT와 같은 LLM을 활용한 AI의 도움을 받으면 좋겠다고 생각했다.

그런데 AI는 우리 계모임의 규칙을 모른다. 왜냐면 AI 모델을 만들때 우리 계모임 정보는 없었을 테니까..


자 여기서 RAG라는 천사가 나타났다.



신규로 동아리에 가입한 A씨는 계모임에서 만든 AI 봇한테 회비가 얼마인지 물어본다.

A씨는 입력창에 "회비가 얼마야?" 라고만 물어봤지만 AI 봇은 내부에서 회비관련 정보를 찾아서 AI한테 전달해주는 것이다.

AI는 질문에 답변하기 위해 필요한 정보가 같이 넘어왔으니 답변하기가 참 쉽다.

계모임 운영이 편해졌다 ^_^

(이해를 돕기 위한 제 머릿속에서 탄생한 예시입니다)



마지막 예시 내용 중 AI에게 물어보고 답변 받는 과정에서

'AI 봇은 내부에서 회비관련 정보를 찾아서 AI한테 전달' 이라는 부분이 바로 RAG인 것이다.




RAG 작동 원리

RAG 의 작동 원리를 알기 위해선 벡터와 임베딩을 알고가면 좋다.


  • 벡터(Vector): 숫자 형태의 배열로 이루어진 단위로 기계학습(ML)에서 모델의 결과값 혹은 가중치를 표현하는 값.
  • 임베딩(Embedding): 사람의 언어를 기계가 이해할 수 있도록 벡터로 변환하는 것.




자 그럼 위의 계모임 예시로 RAG의 주요 과정을 설명해보겠다.


1. 인덱싱

  • 계모임 규칙에 대한 정보를 DB에 저장한다
  • 그냥 저장하는 것이 아니라 임베딩하여 규칙 정보와 변환된 벡터값을 같이 저장한다.
  • 임베딩은 Chat GPT와 같은 모델의 라이브러리를 이용하면 입력된 사람의 언어(혹은 정보)를 벡터값으로 변환해준다.



2. RAG

  • 사용자가 AI에게 질문한 내용을 임베딩하여 벡터값을 구한다.
  • 질문된 내용의 벡터값을 기준으로 위에서 인덱싱된 정보가 있는 데이터베이스에 벡터값이 가장 근사치에 있는 데이터를 가져온다.
  • AI에게 사용자가 했던 질문과 함께 조회한 인덱싱된 정보를 함께 넘겨주어 답변을 얻고 사용자에게 응답한다.



임베딩, 벡터, 인덱싱과 같이 생소한 개념들이 나와서 어렵게 느껴질 수 있다.

사람의 언어를 기계어로 변환하는 기술(임베딩)을 이용해서 미리 DB(Vector Database)에 저장해놓고, 벡터값이 비슷한것을 찾아 AI한테 알려주는 것이 전부이기에 용어에 겁먹지 말고 AI에게 정보를 넘겨주는 원리구나 이해하고 넘어가도 좋다.


#RAG#AI#Hallucination#LLM