[LLM 컨셉] LangChain: AI 애플리케이션의 강력한 뼈대
**랭체인(LangChain)**은 LLM을 활용한 애플리케이션을 개발할 때 필요한 여러 구성 요소를 마치 레고 블록처럼 연결해 주는 프레임워크입니다. 모델 하나만 쓰는 것을 넘어, 외부 데이터와 도구를 결합한 복잡한 시스템을 구축할 때 표준처럼 사용됩니다.
1. 왜 랭체인이 필요한가?
LLM 단독으로는 할 수 없는 일들을 랭체인이 가능하게 합니다.
- 연결성(Chaining): 여러 단계의 작업(예: 요약 후 번역)을 하나의 파이프라인으로 묶어줍니다.
- 기억력(Memory): 모델 자체는 이전 대화를 기억 못 하지만, 랭체인이 대화 기록을 저장했다가 다시 넣어줍니다.
- 데이터 확장: 우리가 배운 벡터 DB와 LLM을 아주 쉽게 연동해 줍니다.
2. 랭체인의 6가지 핵심 모듈
랭체인은 다음의 주요 컴포넌트들로 이루어져 있습니다.
- Model I/O: OpenAI, Anthropic, Llama 등 다양한 모델을 동일한 인터페이스로 교체하며 쓸 수 있게 해줍니다.
- Prompts: 프롬프트 템플릿을 관리하여 사용자 입력에 따라 동적으로 프롬프트를 생성합니다.
- Data Connection: 문서를 불러오고(Loader), 쪼개고(Splitter), 벡터 DB에 저장하는 RAG의 전 과정을 담당합니다.
- Chains: 랭체인의 꽃입니다. 여러 컴포넌트를 결합하여 하나의 실행 단위(Chain)로 만듭니다.
- Memory: 대화의 맥락을 유지하기 위해 과거 메시지를 관리합니다.
- Agents: 모델이 스스로 어떤 도구(구글 검색, 파이썬 실행 등)를 사용할지 결정하게 합니다.
3. LCEL (LangChain Expression Language)
최근 랭체인의 가장 중요한 변화는 LCEL이라는 새로운 문법의 도입입니다. 파이프 기호(|)를 사용하여 가독성 높게 체인을 구성할 수 있습니다.
- 예시: chain = prompt | model | output_parser
- 사용자의 입력이 프롬프트에 들어가고, 그 결과가 모델로 전달된 뒤, 최종적으로 결과 처리기를 거쳐 출력되는 흐름을 직관적으로 보여줍니다.
4. 실전 예시: 간단한 RAG 체인 구성
랭체인을 사용하면 다음과 같은 흐름을 코드 몇 줄로 구현할 수 있습니다.
- 사용자의 질문을 받음.
- Retriever가 벡터 DB에서 관련 문서를 검색함.
- 검색된 문서와 질문을 Prompt에 합침.
- LLM이 답변을 생성함.
- 결과를 깔끔한 문자열로 반환함.
5. [선생님의 심화 보충] 추상화의 양면성
랭체인은 복잡한 과정을 '함수 하나'로 줄여주는 뛰어난 **추상화(Abstraction)**를 제공합니다. 하지만 그만큼 내부 구조가 복잡해질 때 디버깅이 어려울 수 있다는 단점도 있습니다. 따라서 랭체인을 공부할 때는 단순히 사용법을 외우기보다, **"이 데이터가 지금 어떤 컴포넌트를 거쳐 어디로 전달되고 있는가?"**라는 데이터의 흐름을 이해하는 것이 가장 중요합니다.
✍️ 공부를 마치며
랭체인은 개별적인 AI 기술들을 모아 하나의 '서비스'로 만드는 마법 같은 도구입니다. 이제 우리는 파이프라인을 구축할 줄 알게 되었습니다. 하지만 이 흐름이 '단방향'으로만 흐른다면 복잡한 문제를 풀기 어렵겠죠?
MMR
지금까지 코싸인 유사도 이제부터 MMR을 사용
이미 선택된 문서 안에서에 유사도 한번 더 거름 중복제거처럼
랭체인허브: 프롬프트 공유하는 사이트
'AI > LLM' 카테고리의 다른 글
| [Agent] 자율적인 AI 에이전트 (1) | 2025.08.07 |
|---|---|
| [LangGraph] 에이전트의 설계도 (0) | 2025.08.06 |
| [Semantic Search] 의미 기반 검색 (4) | 2025.08.04 |
| [Vector DB] 지식의 저장소 (3) | 2025.08.01 |
| [RAG 기초] 환각 현상의 구세주 (0) | 2025.07.31 |