본문 바로가기
LLM

[LLM] ChatGPT는 이제 모든 대화를 기억할 수 있다. 메모리 최신업데이트에 대한 탐구 (+Context Length, RAG)

by Tiabet 2025. 4. 14.

ChatGPT를 사용하다가 메모리가 업데이트된다는 알림을 다들 받아봤을 것이다.

메모리가 업데이트되었다는 알람.

업데이트된 메모리를 설정칸에서 확인해보면 아래와 같이 뜬다.

 

사용 내역에 기반한 메모리

이렇게 ChatGPT를 사용하다 보면 사용자에 대한 정보를 GPT가 Memory 라는 기억저장소에 기억하게 된다.

 

이 방식의 원리와 목적은 너무나도 당연해보인다.

 

목적 ▶ 사용자의 ChatGPT 사용 경험성을 높이기 위해. 기본적인 정보를 사용자가 계속 제공할 필요가 없음.
원리 ▶ 매 입력, 혹은 새로운 채팅마다 '메모리'에 저장된 정보를 프롬프트로 GPT에게 계속 입력

 

내 추측으론 ChatGPT, 그리고 다른 LLM들의 놀라울 정도로 길어진 Context Length가 이 방식을 가능하게 했다. (ChatGPT 초창기엔 이런 메모리 기억 기능이 없었다.)

 

그런데 내가 이 포스팅을 작성하는 것은 바로 얼마 전 업데이트된 것 같은 내용 때문이다.

 

https://help.openai.com/en/articles/10303002-how-does-memory-use-past-conversations

▲공식 포스팅

https://www.theverge.com/news/646968/openai-chatgpt-long-term-memory-upgrade

 

ChatGPT will now remember your old conversations

Total Recall (Chatbot Edition)

www.theverge.com

▲관련 기사

 

샘 울트만의 공식 포스팅

 

ChatGPT의 알림으로도 뜬 내용인데, ChatGPT가 이제 사용자의 아주 예전 대화까지 기억, 즉 ChatGPT와 나눈 모든 대화를 기억하고 반영해서 답변을 생성해준다는 것이다.

 

이건 Sam Altman의 포스팅처럼 정말 놀라운 일이다.

 

왜냐하면 LLM의 장기 기억능력, 나아가 장기까지 갈 필요도 없이 단기 기억능력은 단순히 Context Length에만 의존한다는 기존 상식을 파괴해버리는 일이기 때문이다. 

 

Context Length

오픈소스 모델 Llama의 모델 별 Context Length

 

Context Length라 함은 결국 Input과 Output 길이의 합인데, 최소한 ChatGPT(내가 이거만 사용해서 Claude, Perplexity 등 다른 서비스는 어떻게 동작하는지까지는 장담할 수가 없다)는 한 대화에서 Context Length가 남으면, 그 대화의 Input + Output을 새 채팅에 더해서 다시 한 번 입력받는다. (프롬프트 엔지니어링으로 작동한다)

 

그러니까 이런 것이다.

출처 : https://www.lse.ac.uk/DSI/AI/AI-Research/Context-Length

모든 LLM 모델은 Context Length라는 것이 정해져있으며, 모델이 이전 대화를 기억하는 것처럼 보이게 하기 위해 Context Length가 허용하는 최대의 범위까지 이전 대화를 계속해서 모델에 집어넣는 것이다.

 

그래서 실제론 LLM이 기억력을 갖고 있는 것처럼 보여도, 아주 긴 Context Length 때문에 가능했던 것이지 추론 상태로 서비스되는 이상 LLM은 사용자 개인화되지 않는다는 것이다. 그렇다면 누군가는 이렇게 질문할 수 있다. "아니, 내가 한참 전에 말한 내용도 잘만 기억하던데요?" 그건 Context Length가 128,000토큰이 넘어가기 때문이다. 요즘 오픈소스 LLM들도 Context Length로 128,000 토큰을 넘기는 경우가 많은데, 숫자로만 보면 감이 잘 안오지만 이는 실로 어마어마한 양이다.

128,000 토큰은 어림잡아 계산하면 A4용지 128페이지가 넘어가는 무시무시한 분량이기 때문이다. 
https://codingscape.com/blog/llms-with-largest-context-windows

 

LLMs with largest context windows

LLMs with the largest context windows vary from 128k tokens to 100m tokens. These LLMs can analyze whole codebases and video libraries.

codingscape.com

위 글을 참고하면 Magic.dev LTM-2-Mini 모델은 Context Length가 무려 1억 토큰에 달하며, 많은 모델들이 200,000 토큰을 넘는 경우를 보이고 있음을 알 수 있다. 이정도로 긴 Context Length를 소유했으니, 모델의 기억력이 꽤 좋아보이는 것이 당연하다.

 

Context Length에 대한 설명은 충분히 한 것 같고, 이제 다시 본론으로 들어가서 쓰고 싶었던 말을 써보면,

 

새로운 업데이트, 이제 Context Length나 메모리 제한 없이 모든 대화 기억함

OpneAI의 새롭게 업데이트된 기능에 대해 읽어보면 말그대로 거의 모든 대화를 기억하고 참조해서 답변할 수 있다고 말한다. 이는 상식을 정말 뛰어넘는 일이다. 자, 그러면 Context Length의 제한 없이 어떻게 이게 가능했을까. 내가 생각하는 가능한 경우는 단 하나, RAG다.

 

OpenAI는 그동안 따로 RAG를 ChatGPT에 사용하고 있다는 말을 하지 않았다. 물론 웹 검색이나 업로드한 파일 분석 같은 건 할 수 있지만, 그건 엄밀히 따지면 RAG가 아니다. RAG는 데이터베이스가 구축되어 있고 그 데이터베이스에서 사용자의 Query에 좋은 답변을 해주기 위한 정보를 찾아내는 작업이기 때문이다. 또한 기존의 메모리 기능은 위해서도 말했듯이 그냥 프롬프트 엔지니어링 수준으로 메모리 정보가 항상 프롬프트의 입력으로 들어가고 있었을 확률이 높다고 생각한다.

 

하지만 모든 대화를 기억한다고 말하는 건 보통 일이 아니다. 그리고 이를 가능하게 하는 건 오직 RAG 밖에 없을 것이고, 이제 내가 그렇게 생각하는 이유를 쭉 나열해보도록 하겠다.

 

1. 이미 Langchain에 유사한 기능이 있다.

https://python.langchain.com/api_reference/langchain/memory.html

 

memory — 🦜🔗 LangChain documentation

memory Memory maintains Chain state, incorporating context from past runs. Class hierarchy for Memory: BaseMemory --> BaseChatMemory --> Memory # Examples: ZepMemory, MotorheadMemory Main helpers: Chat Message History stores the chat message history in dif

python.langchain.com

많이 쓰는 RAG 프레임워크 Langchain에는 이미 Memory 라는 기능이 내재되어 있는데, 여기엔 사용자와의 대화를 벡터 저장소에 저장하여 필요할 때 Retreive해오는 기능이 있다. 따라서 이번에 OpenAI가 선보이는 기능은 원래도 가능한 것이었다.

 

2. OpenAI는 최근 데이터베이스 회사 Rockset을 인수했다.

https://www.cognica.io/blog/posts/2024-07-11-rockset-acquisition

 

OpenAI는 왜 Rockset을 인수했을까? | Blog | Cognica

AI 개발을 위한 가장 빠른 길. "OpenAI는 왜 Rockset을 인수했을까?"에 대한 컨텐츠를 읽어보세요.

www.cognica.io

이 글을 읽어보면 알 수 있지만, 이미 OpenAI는 작년 여름 데이터베이스 기업이었던 Rockset을 인수한 바 있다. 이 목표는 너무나도 명확해보인다. RAG를 하기 위해선 데이터베이스가 필수고, 이를 위해 데이터베이스 회사를 인수한 것이라고 선언한 셈.

 

3. 업데이트 소개글에서 너무나도 RAG가 느껴진다.

이하는 내가 글 서두에 링크한 공식 포스팅에서 발췌한 문장들이다.

 

ChatGPT will be able to reference all past conversations you have had with it — not just your saved memories
If you would like to have a conversation where ChatGPT doesn’t use or create memories, you can use a
Temporary Chat.
You can always delete specific saved memories in Settings and delete or archive past conversations from your conversation history to prevent improved memory from referencing them.
You can disable both the standard memory feature (“Reference saved memories”) and the improved memory feature (“Reference chat history”) in Settings

 

기억할지 말지 껐다 킬수도 있고(데이터베이스 비활성화/활성화), 그 중 특정 기억은 삭제시킬 수도 있고(데이터베이스 내에서 삭제), saved memory완 분명 별개의 기능이라고 말하고 있으며(데이터베이스와 프롬프트엔지니어링의 차이), 아예 데이터베이스가 비활성화된 버전은 Temproary Chat 기능까지 지원한다고 말하고 있다. (Reference라는 용어를 사용하고 있는 것도 아주 RAG 스럽다.)

 

이 소개글을 읽고 아 RAG 도입한 것이구나, 하고 백 퍼센트 확신을 얻었다.

 

RAG는 LLM을 정말 유용하게 만들어주는 기술이지만, 그 적용 방식의 디테일이 워낙 섬세하고 까다로운 부분이 많아서 아직 세계적인 기업 수준에서도 서비스화를 제대로 시킨 기업이 거의 드문 것으로 알고 있다. OpenAI가 어떻게 보면 또 제일 먼저 이전 대화 모두 기억이라는 화두를 들고 나온 것일지, 아니면 그냥 큰 반향 없이 넘어갈 지 지켜봐야겠다.