LangChain 앱에서 사용자 컨텍스트는 어디에 저장해야 할까?
where should user context live in a LangChain app?
핵심 요약
LangChain 앱 개발 시 사용자 프로필 및 컨텍스트를 효율적으로 관리하는 아키텍처 패턴에 대한 고민.
- 컨텍스트 저장 위치 — 프롬프트, 벡터 DB, 일반 DB 등 다양한 방식의 장단점 비교
- 상태 관리 고민 — 대화 메모리와 사용자 프로필 데이터를 분리하는 최적의 방법 모색
- 아키텍처 패턴 — 체인 실행 전 별도의 사용자 컨텍스트 API를 호출하는 방식에 대한 질문
에이전트 형태의 흐름을 만들고 있는데 사용자 프로필을 어디에 둬야 할지 결정하기 어렵네요.
프롬프트에 넣는 건 데모용으론 괜찮지만 금방 지저분해집니다. 벡터 스토어에 넣는 건 선호 사항이 문서가 아니니 좀 이상하고요. 일반 DB 테이블에 넣는 건 작동은 하지만 검색할 때 커스텀 접착제 코드가 필요해집니다.
채팅 메모리도 써봤는데 실제 선호 사항이랑 대화 찌꺼기가 섞여버리네요. 사용자 노트에 리트리버를 써보기도 했는데, 동의된 데이터치고는 너무 모호한 느낌입니다.
보통은 체인이 실행되기 전에 호출하는 별도의 사용자 컨텍스트 API를 사용하는 패턴인가요?
전부 하나의 덩어리로 만들지 않으면서 사용자 프로필, 메모리, RAG를 어떻게 처리하고 계신가요?

