LLM 학습 내용 캡처의 필요성
LLM과의 작업 시, 특정 비즈니스 문제 해결을 위한 앱 개발 과정에서 루비, 레일즈, 시나트라, 사이드킥, 데이터베이스 선택 등 다양한 의사결정과 학습이 발생합니다. 그러나 이러한 학습 내용들은 대화가 종료되거나 새로운 채팅이 시작될 때 쉽게 손실됩니다. 이는 사용자가 유사한 작업을 반복할 때마다 동일한 컨텍스트를 처음부터 다시 구축해야 하는 비효율성을 초래합니다.
‘Wisdom for AI’ 개념 및 Ruby Gem 비유
발표자는 이러한 문제를 해결하기 위해 ‘Wisdom for AI’라는 개념을 제안합니다. 이는 루비의 오픈 소스 라이브러리인 ‘Gem’ 시스템에서 영감을 받았습니다. 루비 개발자들이 특정 문제 해결을 위해 기존 Gem을 활용하듯이, AI도 축적된 ‘학습 Gem’을 활용하여 필요한 컨텍스트를 얻을 수 있도록 하자는 아이디어입니다. 이는 단순한 복사/붙여넣기나 요약 저장 방식의 한계를 넘어, 공유 가능하고 모델에 구애받지 않는(model-agnostic) 학습 저장소의 필요성을 강조합니다.
Git 기반 학습 시스템 제안
제안된 시스템은 학습 내용을 Git 저장소에 커밋, 푸시, 인덱싱하는 방식을 채택합니다. 채팅 세션은 Git의 feature branch처럼 간주되며, 유용한 학습 내용은 커밋되어 저장됩니다. 이를 통해 사용자는 다른 브랜치를 병합하여 컨텍스트를 결합하고, Git 원격 저장소에서 학습 내용을 가져올 수 있습니다. LLM이 Git 저장소를 직접 검색하기 어렵다는 점을 고려하여, RAG(Retrieval Augmented Generation)를 통해 Git 저장소의 메타데이터와 언어 컨텍스트를 구축하여 LLM에 제공하는 방식을 사용합니다. 이는 PostgreSQL의 PG vector를 활용하여 Git 저장소를 RAG로 변환하는 방식으로 구현됩니다.
시스템 구성 및 데모
발표자는 다음과 같은 시스템을 구축하고 있습니다:
-
Rails 웹 앱: API 제공 및 사용자 관리, Git 원격 학습 관리.
-
Git 저장소: YAML 형식으로 저장된 학습 내용을 포함.
-
CLI Gem (‘wisdom’): 명령줄 인터페이스를 통해 OpenAI 또는 Claude와 채팅하고, 학습 내용을 저장소에 푸시하거나 가져옴.
데모에서는 wisdom Gem을 사용하여 LLM에 ‘Docker 컨테이너에서 파일을 편집하는 방법’을 물었을 때, nano 대신 vi를 선호한다는 학습 내용을 저장한 후, 다른 LLM(Claude)에 동일한 질문을 했을 때 저장된 학습 내용을 기반으로 vi 명령어를 제공하는 모습을 시연했습니다. 이는 반복적인 지시를 줄이고 LLM의 응답 정확도를 높여 사용자 경험을 개선할 수 있음을 보여줍니다.
LLM 활용에 대한 논의
질의응답 세션에서는 LLM의 기능과 한계를 구분하는 방법, 효과적인 프롬프트 작성의 중요성에 대한 논의가 이루어졌습니다. 특정 모델이 ‘선행 질문(leading questions)’에 더 취약할 수 있다는 점과 이에 대한 학습 내용을 구축할 가능성도 언급되었습니다. 또한, 새로운 앱 개발에는 LLM이 유용하지만, 레거시 코드 분석이나 복잡한 비즈니스 로직 구현에는 여전히 인간의 개입이 필수적임이 강조되었습니다.