대화 히스토리 QA — 멀티턴 RAG 챗봇 만들기

대화 히스토리 QA

단발 질문-답변만 하는 RAG는 실제 제품에서 아쉬워요. 사용자가 후속 질문을 하면 이전 대화 맥락을 알아야 자연스럽게 이어갈 수 있어요. qa_chat_history 튜토리얼은 RAG에 대화 히스토리를 얹는 방법을 보여줘요.

핵심 과제

사용자의 후속 질문('그럼 반품 기간은?')은 과거 대화 없이는 맥락이 불완전해요. 이를 위해 이전 질문·답변을 요약하거나 재구성해서 검색 쿼리로 만들어요.

from langchain.chains import create_history_aware_retriever

# 이전 대화를 반영해 재구성된 쿼리로 검색
history_aware_retriever = create_history_aware_retriever(llm, retriever, condense_question_prompt)

구조

  1. 대화 재구성: 히스토리를 참고해 혼자서도 이해 가능한 쿼리로 다듬기
  2. 검색: 재구성된 쿼리로 문서 검색
  3. 생성: 히스토리 + 검색 결과를 함께 컨텍스트로 담아 답변

좋아지는 점

후속 질문도 정확히 검색·답변되므로, 실제 사용자와 주고받는 멀티턴 제품에 RAG를 적용할 수 있어요.

더 알아보기