Spring AI의 메모리 구조는 ChatMemory 인터페이스를 중심으로 설계되며, 대화 기억 방식을 정의합니다. 🧠
기본 ChatMemory 구현체인 MessageWindowChatMemory는 선입선출(FIFO) 방식의 슬라이딩 윈도우를 사용하여 일정 개수의 메시지만 유지합니다. 🔄
ChatMemoryRepository는 ChatMemory를 저장하는 저장소 역할을 하며, JDBC, Cassandra, Neo4j, In-memory 등 다양한 공식 지원 구현체가 있습니다. 💾
BaseChatMemoryAdvisor는 메모리 어드바이저의 기본 인터페이스로, PromptChatMemoryAdvisor와 MessageChatMemoryAdvisor가 기본 제공됩니다. 💡
PromptChatMemoryAdvisor는 대화 기록을 시스템 프롬프트로 삽입하여 LLM에 전달하며, 이는 인스트럭션으로 작용해 응답에 왜곡을 일으킬 수 있습니다. 📝
MessageChatMemoryAdvisor는 대화 기록을 실제 유저/어시스턴트 메시지 형태로 프롬프트에 추가하여, 멀티턴 모델에 더 효과적이고 자연스러운 대화 흐름을 제공합니다. 💬
VectorStoreChatMemoryAdvisor는 Spring AI의 표준 ChatMemory 및 ChatMemoryRepository 구조와 독립적으로 작동하며, VectorStore를 직접 사용하여 장기 기억을 시스템 프롬프트로 삽입하는 독특한 방식을 사용합니다. 🚀
일반적인 메모리 구조는 ChatMemory가 ChatMemoryRepository를 사용하고, ChatMemoryAdvisor가 ChatMemory를 사용하는 계층적 관계를 가집니다. 🔗
VectorStoreChatMemoryAdvisor는 이 계층 구조에서 벗어나 VectorStore를 어드바이저에 직접 연결하는 방식으로 작동합니다. 🧩