[#2] 챗봇 설계하기
chatGPT는 학습한 데이터를 기반으로 질문에 가장 근접한 답변을 내놓지만, 이에 대한 진위를 매번 정확하게 확인하지 못하기 때문에 할루시네이션(Hallucination)
현상이 발생하기도 한다. 할루시네이션이란 훈련된 데이터나 현실에 근거하지 않은 출력을 생성하는 경우를 말한다. 여기에는 잘못된 주장, 존재하지 않는 사실 생성, 처리하는 정보의 맥락이나 의미를 오해하거나 잘못 표현하는 것이 포함되기도 한다. (출처 : 한국강사신문)
이러한 문제를 극복하고 답변의 정확을 제고하기 위해선 질문에 대한 답변을 제공하기 전에 인터넷이나 믿을만한 소스에서 검색하고 찾아낸 후에 그것을 기반으로 답변을 하면된다.
이 아이디어를 기반으로 한 구조가 RAG(Retrieval Augmented Generation)
이다.
실행 순서는 다음과 같다.
-
Prompt + Query: 서비스를 사용하는 사용자의 질문과 그 질문을 어떤식으로 받아들일지에 대해 개발자나 구성하는 사람이 미리 짜놓은 LLM(Large Language Model) 프롬프트
-
Query: 해당 유저가 검색
-
검색 결과로 나온 유관 정보 몇 가지가 추출
-
3번의 정보와 1번의 유저의 오리지널 질문을 같이 LLM(chat completion model)에 input으로써 넣게 되면 해당 질문과 추출된 context 정보를 토대로 최종적인 답변을 생성
검색 성능에 영향을 미치는 구간은 1번 ~ 5번이다. 하지만, 1번 ~ 3번에 focus를 실어야하는 이유는 4번과 5번에 우리가 개입할 수 있는 부분이 한정적이기 때문이다. 4번은 input이 정확하다면 최종 output도 정확하다. 또한, 답변의 형식을 결정하는 역할을 하는 게 크다. 5번은 LLM 모델의 성능에 영향을 받으므로, 우리는 전반부에 포커싱 함으로써 최종 답변의 퀄리티를 향상시킬 수 있다.