LangChain 실습 2 - LLM 캐시와 메모리
최신버전에서 deprecated된 클래스가 많기 때문에 고쳐줘야함.
1. LLM / ChatModel
LLM?
GPT와 같은 AI모델을 활용하여 Prompt에 대한 응답을 생성하는 컴포넌트
GPT, Hugging Face, Cohere등 다양한 ai모델들을 일관된 인터페이스로 사용할 있게 설계하였다
ChatModel ?
사용자와의 대화형 메세지를 기반으로 응답을 생성하는 챗봇 등에서 사용하는 컴포넌트.
기본적으로 LLM컴포넌트와 비슷하나 , 대화형 메세지 응답에 최적화된 컴포넌트이다.
— 생략 —
LLM설정방법들
1) GPT-40 설정 - 유료
2) LLAMA3 설정 - 오픈소스
3) Hugging Face 설정 - LOCAL 오픈소스
4) Google GEMINI 설정 - 5$ 무료
— 생략 —
2. Caching
동일한 질문이 자주 들어오는 경우 Cache를 활용하면 api호출 비용을 줄이고 응답속도를 향상 시킬 수 있다.
1) InMemoryCache
RAM을 활용하여 빠르게 데이터를 저장하고 검색할 수 있는 기능을 제공하는 컴포넌트
응답결과를 RAM에 저장하기 때문에 프로그램이 종료되면 캐시 데이터도 사라짐(영속성X)
2) SQLiteCache
SQLite DB를 활용하여 데이터를 저장 및 검색할 수 있는 기능을 제공하는 컴포넌트
InMemory방식보다 속도는 느리지만 데이터를 영구적으로 저장할 수 있다
SQLite Viewer
3) RedisCache
Redis서버를 활용하여 데이터를 저장 및 검색할 수 있는 기능을 제공하는 컴포넌트
SqlLite와 같이 데이터를 영구적으로 저장할 수 있으며, 데이터를 RAM에 저장하기 때문에 조회속도도 빠르다.
단, InMemoryCache에 비해 설정이 복잡하고 , 서버관리와 비용이 별도로 추가됨.
3. Memory
LangChain에는 사용자와의 대화이력을 관리하는 다양한 메모리가 있습니다. 각 메모리들의 특징과 활용방법에 대해 알아보도록 하겠습니다.
langchain0.3.1 버전부터 deprecated됨. langGraph persistence에 memory를 관리할것을 권장함.
1) ConversationBufferMemory
LangChain에서 대화 이력을 저장하기 위해 사용하는 메모리 클래스.
챗봇이 사용자와 나눈 대화내용을 기억시켜 응답에 필요한 적절한 문맥을 유지하도록 도와준다.
대화 내용을 버퍼형태로 저장하며, 버퍼의 크기에 제한이 없기 때문에 이전 대화내용을 모두 저장 시킬 수 있다. 단, 대화내용이 너무 많은 경우 성능이 저하될 수 있다.
2) ConversationBufferWindowMemory
최근 N개의 대화이력만 저장하는 메모리로 사용자와 길게 대화하더라도 최근 맥락만 유지할 수 있기 때문에 메모리에 너무 많은 데이터가 쌓이는 것을 방지할 수 있다.
오래된 대화내용을 자동으로 삭제하여 메모리를 최적화 한다.
3) ConversationTokenBufferMemory
메세지를 개수가 아닌 토큰 개수를 기준으로 일정량만을 저장하는 메모리. openAi와 같은 api기반에서 최대 토큰 제한을 유지시킬 때 유용하게 사용한다.
4) ConversationSummaryMemory / ConversationSummaryBufferMemory
전체 대화를 요약한 내용만 유지하는 방식의 메모리
핵심적인 맥락을 유지하면서 메모리를 최적화 할 수 있다.
요약시에는 LLM을 다시 이용해야 하므로 API 비용이 추가로 발생한다.
5) ConversationEntityMemory
대화속에서 사용자가 언급한 개념(Entity)을 추출하여 저장하여 관리하는 메모리
사용자가 자주 묻는 주제를 기억하여 맞춤형 답변을 제공할 수 있다.
6) ConversationKGMemory
대화내용을 KG(Knowledge Graph)로 변환하여 저장하는 메모리
개별적인 문장이 아닌 개념과 관계를 중심으로 정보를 저장(Graph-prompt)
대화에서 점점 축적되는 정보를 바탕으로 더 똑똑한 응답기 가능해진다.
사용자의 이전 질문과 관련된 개념을 이해하여 연관 질문을 추천한다.
7) VectorStoreRetrieverMemory
대화 기록을 벡터로 변환하여 저장하고 검색할 수 있는 메모리
단순한 최근 대화가 아니라 의미적으로 유사한 이전 대화도 검색할 수 있따.
기존의 단순한 히스토리 저장방식 보다 문맥의 이해도가 높다
사용자의 이전 질문과 비슷한 질문을 메모리에서 검색하여 답변을 개선한다.
Last updated