직렬화(Serialization) 란
모델이나 객체를 저장 / 전송 가능한 형식으로 변환하는 과정
LangChain에서는 체인, 모델 등의 객체를 JSON 형식으로 변환하는 것을 의미
언제 사용하나
- LangChain 애플리케이션을 개발하고 배포하는 과정에서
- 모델을 저장하고 재사용할 때
- 다른 환경으로 모델을 배포할 때
- 모델을 공유할 때
- 버전 관리가 필요할 때
어떻게 사용하나


- is_lc_serializable() 클래스 메서드로 실행하여
LangChain 클래스가 직렬화 가능한지 확인할 수 있다.
왜 필요한가
프로그램 종료 시 문제

- 프로그램을 종료하면 메모리의 모든 것이 사라짐
다시 시작하면 처음부터 다시 만들어야 함
다른 환경으로 이동 시 문제

- 다른 컴퓨터나 서버로 옮길 수 없음
매번 새로 만들어야 함
시간과 자원 낭비

- 학습된 모델을 매번 다시 학습해야 함
컴퓨팅 리소스 낭비
직렬화의 종류
Python Pickle 직렬화

- Python 전용 바이너리 형식
빠른 처리 속도
모든 Python 객체 지원
JSON 직렬화

- 텍스트 기반 형식
언어 독립적
웹 통신에 적합
LangChain Chain 직렬화

- LangChain 전용
dumps: JSON 문자열 변환
dumpd: 딕셔너리 변환
직렬화 플로우

직렬화 방식 비교

주의사항
Pickle: 신뢰할 수 없는 파일 로드 주의
JSON: 데이터 타입 제한 확인
LangChain: API 키 등 민감 정보 관리
직렬화는
재사용을 위한 저장이다.
만든 모델이나 체인을 파일로 저장했다가
나중에 다시 꺼내서 쓸 수 있게 하는 것이다.