ref. https://www.skelterlabs.com/blog/multiturn-rag
멀티턴 대화가 중요한 이유는 무엇일까요?
멀티턴 대화의 중요성은 궁극적으로 사용자 경험과 고객 만족도를 향상시키는 데 있습니다. LLM이 사용자의 질문에 단순히 응답하는 것 뿐만 아니라, 되묻는 방식을 통해 사용자의 진짜 의도를 파악하죠. 이로 인해, LLM은 보다 정확하고 만족스러운 답변을 제공할 수 있으며, 사용자가 명확히 표현하지 못한 요구까지도 이해하며 사용자 만족도를 높입니다.
🔅 싱글턴 대화
싱글턴 대화란 말 그대로 한 번의 질문과 한 번의 답변으로 끝나는 대화 방식입니다. 사용자가 AI나 챗봇에게 질문을 하면, 챗봇은 그 질문에 대해 단 하나의 응답을 제공하고 대화가 종료됩니다. 이 방식은 질문이 단순하고 명확할 때, 예를 들어 "오늘 저녁 ‘토이스토리’ 영화 상영 시간 알려줘"와 같은 질문에 "저녁 8시 입니다."라고 답변하는 상황에 적합합니다.
🔅 멀티턴 대화
멀티턴 대화란 대화가 여러 차례에 걸쳐 진행되는 방식입니다. 사용자가 한번 발화하고 챗봇이 다시 되묻는 과정이 있다면? 모두 멀티턴이죠. 사용자의 첫 번째 질문에 대한 챗봇의 응답 이후, 사용자 또는 챗봇이 추가 질문을 하거나 더 많은 정보를 요청함으로써 대화가 계속됩니다. 이 과정에서 챗봇은 대화의 맥락을 이해하고, 사용자와 더 깊은 상호작용을 통해 보다 정확하고 상세한 정보를 제공할 수 있습니다.
예를 들어, 사용자가 "이번 주말에 상영하는 액션 영화 목록을 알려줘"라고 묻고 챗봇이 “이번 주말 상영하는 액션 영화는 ‘어벤져스’, ‘미션 임파서블’입니다. 어떤 영화의 상영 시간을 알려드릴까요?”라고 답변한 후, 사용자가 "‘어벤져스’ 상영 시간이 궁금해"라고 추가로 물어보는 상황이 멀티턴 대화에 해당합니다.
💡 멀티턴 대화에서의 RAG 활용
다음은 RAG를 활용하여 멀티턴 대화를 최적화 하는 방식입니다:
🔅 대화의 맥락 유지
멀티턴 대화에서 사용자와의 대화가 진행됨에 따라, RAG 모델은 이전 대화 턴(turn)에서 나온 정보를 기반으로 새로운 검색을 수행할 수 있습니다. 이를 통해 대화의 맥락을 유지하면서, 진행되는 대화에 맞는 정보를 검색하여 보다 관련성 높고 정확한 답변을 생성할 수 있습니다.
🔅 정보의 중복 처리 최소화
멀티턴 대화에서 같은 주제나 질문에 대해 반복적으로 정보를 검색할 필요가 있는 경우, RAG는 이전에 검색한 정보를 활용하여 중복된 검색을 줄일 수 있습니다. 이는 응답 시간을 단축시키고, 대화의 효율성을 높일 수 있습니다.
🔅 사용자 질문의 의도 파악
멀티턴 대화 과정에서 사용자의 질문이 복잡하거나 여러 의도를 포함하고 있을 때, RAG는 질문에서 핵심적인 정보와 의도를 파악하고 정제하는 데 도움을 줍니다. 이는 RAG가 더 정확한 문서를 검색하고, 사용자의 진짜 요구에 맞는 답변을 생성하는 데 기여할 수 있습니다.
이처럼 멀티턴 대화에서 RAG를 통해 대화의 맥락을 유지하고, 정보의 중복을 최소화하며, 사용자의 의도를 정확히 파악하는 과정은 대화의 질을 높이는 방법이 될 수 있습니다.
💡 멀티턴 RAG를 위한 끝없는 고민
이렇듯 멀티턴 대화에서 RAG는 대화의 경험을 풍부하게 하는데요. RAG를 멀티턴에 활용하기 까지 어떤 기술적인 고민들이 필요할까요?
이번 챕터에서는 멀티턴 RAG의 기반이 되는 기술적 요소들에 대해 알아보면서, 각 요소가 어떻게 멀티턴 대화의 질을 높이는지 탐구해보겠습니다:
🔅 벡터 임베딩 품질 향상
벡터 임베딩이란, 우리가 쓰는 글자나 단어들을 컴퓨터가 이해할 수 있는 숫자로 바꾸는 것을 말합니다.
이는 멀티턴 RAG 시스템에 있어 핵심적인 요소로, 사용자 질문이나 프롬프트와 가장 관련이 높은 정보를 정확하게 검색하는 데 중요합니다. 멀티턴 대화가 계속될수록 LLM이 대화의 맥락을 더 깊이 이해하게 되어, 대화가 더 매끄럽게 이어질 수 있게 도와줍니다.
🔅 문서 분류기(document classifier) 성능 강화
멀티턴 RAG 모델의 검색 성능 강화를 위해 문서 분류기의 성능 개선도 필요합니다. 문서 분류기는 쉽게 말해 RAG가 물어온 문서가 적합한지의 여부를 판가름해주는 기능입니다.
검색 결과 중에서 가장 적절하고 관련성 높은 정보를 선별하거나, 사용자의 질문 유형을 정확하게 판단하죠. 문서 분류기가 더 정확하게 작동함으로써, 모델은 멀티턴 대화의 맥락을 더 잘 이해하고, 각 턴에서 요구되는 정보를 더 적절하게 제공할 수 있습니다.
🔅 Clear context(대화 맥락 초기화) 및 Chain-of-thought 프롬프팅
'Clear Context(대화 맥락 초기화)'는 대화의 이전 맥락을 새로운 시작점으로 리셋하며, 이는 챗봇이 이전 주제나 맥락에서 벗어나 새롭고 관련된 정보를 기반으로 대화를 진행할 수 있도록 합니다. 이후 'Chain-of-thought' 프롬프팅을 통해 정보를 차례대로 ‘생각’하며, 대화에 필요한 답변을 찾아가는 과정을 돕습니다.
이 두가지 과정은 멀티턴 대화에서 RAG의 사용을 극대화하는 데 중요한 역할을 합니다. Clear Context를 통한 맥락 초기화로 새로운 대화의 방향을 명확히 하고, Chain-of-thought 프롬프팅을 통해 챗봇이 이 새로운 방향에 따라 정보를 단계적으로 처리하고 연관된 답변을 생성하도록 합니다.
🔅 인텐트 분류
인텐트 분류 기술이 멀티턴 RAG에 반드시 필요하다고 묻는다면, 그건 아닙니다. 하지만 멀티턴 RAG의 성능을 향상시키고 싶다면, 필요할 수 있습니다.
우선, 인텐트 분류는 사람이 하는 말의 의도, 즉 어떤 목적을 가지고 있는지를 파악하고 분류하는 기술입니다. 예를 들어, "오늘 개봉한 영화 예매 하려고 하는데요"와 "라라랜드 영화 보고싶다…"라는 서로 다른 문장이 같은 의도인 '예매 요청'에 속한다고 컴퓨터에게 알려주는 과정이죠. 컴퓨터는 이 모든 문장을 '예매 요청'이라는 인텐트로 인식하고, 그에 맞는 대응을 합니다.
RAG는 대화의 첫 턴에서 필요한 문서를 검색하여 가져오고, 이후 대화가 진행될 때 이 초기에 가져온 문서를 바탕으로 응답을 생성합니다. 이 과정에서 문서의 유동성이 없다는 것, 즉 한 번 검색하여 가져온 문서가 고정되어 대화가 전개된다는 점이 멀티턴 RAG의 특징입니다.
고정된 문서에서 대화를 전개하는 방식이 RAG의 장점이면서 동시에 단점이 될 수 있습니다. 장점으로는 일관된 맥락에서 정보를 제공하여 대화의 일관성을 유지할 수 있다는 점이 있습니다. 하지만, 대화가 진행되면서 사용자의 요구나 질문의 방향이 변할 경우, 이미 선택된 고정된 문서가 더 이상 적절하지 않을 수 있어 유연성이 떨어질 수 있다는 단점이 있습니다.
이때 인텐트 분류 기술이 중요해지는데, 이 기술을 통해 사용자의 발화에서 의도를 정확히 파악함으로써, 실제 사용자가 원하는 정보나 대화의 방향에 맞게 RAG가 더 적절하게 반응할 수 있도록 도와줍니다.
즉, 인텐트 분류는 RAG가 고정된 문서를 바탕으로 대화를 전개할 때, 그 대화가 여전히 사용자의 의도와 일치하는 방향으로 진행될 수 있게 만드는 중요한 역할을 합니다.
0 댓글