Memory
•
메모리는 LLM이 데이터를 저장하고 검색할 수 있게 도와준다.
•
메모리를 사용하면 단기, 장기 기억이 가능하며 연속적인 채팅이 가능하다.
•
Chain이나 Agent가 일종의 ‘기억’을 갖는 것처럼 만들어 준다고 할 수 있다.
•
다만 메모리라는 개념 자체가 기존 채팅 기록들을 prompt에 넣어 제공하도록 구성되어 있다.
1. Input (질문 입력)
•
설명: 사용자가 새로운 질문을 입력하면, 시스템은 해당 질문을 모델에 전달한다.
•
역할: 사용자의 질문을 시스템이 받아들여 처리할 준비를 한다.
2. Memory (메모리 읽기)
•
설명: 새로운 질문이 들어오면 시스템은 이전 대화 내용을 메모리에서 읽어와서 모델에 전달할 준비를 한다. 이때 과거 메시지(past_messages)가 메모리에서 불러와진다.
•
역할: 과거의 대화 내용을 기억하고, 이를 바탕으로 현재의 질문을 더 잘 이해할 수 있도록 돕는다.
3. Prompt 생성
•
설명: 모델에 입력될 프롬프트는 현재 질문과 과거 메시지를 결합하여 만들어진다.
◦
예시
▪
프롬프트가 "{past_messages} {question}" 형태로 생성된다.
▪
즉, 과거의 대화 기록과 현재의 질문을 함께 사용하여 모델이 더 일관성 있는 응답을 할 수 있도록 한다.
•
역할: 과거 대화와 현재 질문을 결합하여 맥락을 유지한 채로 모델이 응답을 생성할 수 있게 한다.
4. Model (모델 응답 생성)
•
설명: 프롬프트가 모델에 입력되면, 모델은 이를 바탕으로 적절한 응답을 생성한다.
•
역할: 모델은 입력된 대화 맥락을 바탕으로 사용자의 질문에 대한 답변을 생성하는 역할을 한다.
5. Output Parser (출력 파서)
•
설명
◦
모델이 생성한 응답을 적절하게 파싱하는 단계
◦
여기서는 정규표현식(예: regex: "Answer: (.*)")을 사용하여 모델이 생성한 출력에서 핵심 응답 부분을 추출한다.
•
역할: 모델이 생성한 긴 응답에서 중요한 정보를 추출하여 최종 답변을 구성한다.
6. Memory (메모리 쓰기)
•
설명
◦
모델이 생성한 새로운 응답은 메모리에 저장된다.
◦
이후 대화에서 이 응답이 다시 참조될 수 있다. 새로운 응답은 past_messages에 추가되어 다음 대화의 맥락으로 활용된다.
•
역할: 모델이 생성한 응답을 메모리에 저장하여, 향후 대화에서 참고할 수 있게 한다.
7. Output (최종 답변 출력)
•
설명: 파싱된 답변이 최종적으로 사용자에게 전달된다.
•
역할: 사용자의 질문에 대한 응답을 반환하는 최종 단계다.