이번에는 메모리에 관한 모든 것을 소개합니다. 정확히 말하면 ‘랭체인’에서의 메모리에 관한 것이죠. 상호참조해결(Coreference Resolution), 랭체인에서 메모리를 다루는 전략, 메시지를 영구적으로 저장하기 위한 LangGraph, 효율적인 메시지 활용을 위한 처리와 요약 방법을 다룹니다. 우선 메모리에 무엇을 저장하는지, 이를 알아보려고 합니다. 우리는 랭체인으로 모든 미가공 메시지를 저장하거나, 다듬어진 일부 메시지를 저장하거나, 메시지의 요약본을 저장할 수 있습니다. 물론 저장하고 싶은 메모리에 대한 처리 과정을 추가할 수도 있습니다. 또, 이 기능을 애플리케이션에 더 적합한 로직으로 확장할 수도 있죠.
모든 LLM에는 토큰 한도가 미리 정해져 있죠, 아키텍처에 관계없이요. 보통 한 번의 상호작용에서 처리할 수 있는 토큰의 최대 개수가 있습니다. 현재 대부분 LLM은 토큰 한도를 약 4,000개(4K)로 제한하고 있습니다. LLM의 토큰 수가 계속 증가한다 해도 여전히 제한이 있다는 사실에는 변함이 없을 겁니다. 따라서 해결 방법을 찾아야 해요. 토큰 제한을 해결하는 전략이 몇 가지 있습니다. 모두 랭체인에서 지원하는 전략이죠. 스터핑(Stuffing), 맵-리듀스(Map-Reduce), 정제(Refine). LLM 요약 문제로 접근해 세 가지 전략을 알아보겠습니다. 이러한 전략으로 토큰 한도 문제에 접근하면, 문제를 해결하는 데 큰 도움이 될 겁니다.
랭체인. 도대체 무엇이, 얼마만큼 유용하길래 이렇게 인기가 많아졌을까요? 랭체인은 오픈 소스 프레임워크로, LLM 기반 애플리케이션을 구축하는 과정을 단순화시킵니다. 복잡한 LLM 기반 애플리케이션을 더 쉽게 만들 수 있는 도구와 추상화를 제공합니다. 즉, 머신러닝이 어떻게 작동하는지, 또는 AI 모델을 어떻게 훈련하는지에 대한 깊은 이해 없이도 LLM 기반 애플리케이션을 구축할 수 있게 도와줍니다. 그 덕분에 모델을 블랙 박스로 사용하고자 하는 개발자들에게 널리 채택되었습니다. 에이전트나 RAG 애플리케이션 같은 LLM 기반 앱을 개발할 때 가장 인기 있는 프레임워크로 등극한 것이죠.
이번 강의에서는 JavaScript의 몇 가지 유용한 구문을 살펴보려고 합니다. 가장 먼저 다룰 주제는 매개 변수입니다. 우선 등호를 활용해 기본 매개 변수를 쉽게 지정하는 방법을 살펴 보겠습니다. 함수 아래 길게 내용을 전개하는 기존 방식은 효율성이 떨어집니다. 간단하게 등호로 매개 변수를 지정할 수 있습니다. 순서만 잘 고려하면요. 다음은 나머지 매개 변수입니다. 함수를 활용하기 위해 받는 인수 객체는 배열 같지만, 사실 배열이 아닙니다. 배열 메서드를 편하게 쓰려면 점 세 개(…), 나머지 연산자를 기억해야 합니다. 이 기능들은 꽤 유용해 편하게 코드를 쓸 수 있도록 도움을 줄 겁니다.