빅웨이브에이아이가 사내 월간 세미나에서 정리한 LangChain 소개다. LLM 애플리케이션 개발 프레임워크의 구성 요소를 훑고, 로컬 환경 세팅부터 프롬프트 체이닝, 출력 파서, 그리고 문서를 벡터로 저장해 답변에 참고시키는 Retrieval 까지 코드로 따라간다.
핵심 포인트- LangChain 은 다양한 LLM 관련 기능을 체인으로 결합해 쉽게 쓰게 해주는 프레임워크다. 2022년 Harrison Chase 가 시작한 오픈소스이며 Python 과 JavaScript 로 제공된다.
- 두 축은 상황 인식과 추론이다. LLM 을 지침과 예시, 콘텐츠 같은 소스와 연결하고 그에 기반한 추론을 유도한다.
- 생태계는 셋으로 나뉜다. 개발용 라이브러리인 LangChain, 체인을 디버깅하고 테스트하며 모니터링하는 LangSmith, 체인을 REST API 로 배포하는 LangServe 다.
- 주요 모듈은 Chains, Agents, Retrieval, Model I/O, Memory, Callbacks 다. Agents 는 작업 주체가 LLM 을 활용해 무엇을 할지 고르고, Memory 는 과거 상호작용 기록을 관리한다.
- Retrieval 은 학습된 모델이 모르는 정보라도 문서로 주어지면 참고해 더 정확한 텍스트를 생성하게 하는 기능이다.
상세 정리- 환경 세팅은 pip 로 간단히 끝나며 Anaconda 가상 환경이나 Dev Container 사용을 권한다. OpenAI API 키가 필요하고 GPT-3.5 는 비용이 매우 저렴하다고 덧붙인다.
- 가장 단순한 사용은 ChatOpenAI 를 불러와 invoke 로 텍스트를 호출하는 것이다.
- 프롬프트는 ChatPromptTemplate 로 시스템 메시지와 사용자 입력을 양식화하고, 파이프 기호로 모델과 이어 체인을 만든다.
- 출력 전처리와 후처리도 체인에 붙는다. 문자열만 뽑아내는 파서를 프롬프트와 모델 뒤에 이어 붙이는 식이다.
- Retrieval 예제는 웹 문서를 불러오는 로더로 시작한다. 문서를 텍스트 분할기로 쪼개고 OpenAI 임베딩으로 벡터화한 뒤 FAISS 에 담는다.
- 그다음 주어진 context 만을 기반으로 답하라는 프롬프트를 만들고 문서 결합 체인을 구성한다.
- 문서를 직접 넣는 방식도 가능하다. LangChain 의 Document 형식으로 내용을 프롬프트에 바로 실을 수 있다.
- 마지막으로 벡터 저장소를 retriever 로 바꿔 문서 체인과 연결하면, 질문을 넣었을 때 관련 문서를 찾아 답변에 반영하는 체인이 완성된다.
- 저자는 Retrieval 적용 전과 후를 비교해 적용 후 확실히 더 적합한 텍스트가 나온다고 정리한다.
- LangChain Community 로 서드파티 프레임워크 통합이 제공되고, LCEL 이라는 표현 언어로 체인을 구성한다는 점도 언급한다.
- 개발과 생산화, 배포를 각각 LangChain 템플릿, LangSmith, LangServe 가 맡는 흐름으로 전체 그림을 제시한다.
왜 읽나LLM 애플리케이션을 처음 만들어보려는 개발자에게, LangChain 의 모듈 구성과 RAG 최소 예제를 코드 흐름 그대로 따라가게 해주는 입문 정리.