Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 코딩테스트
- data platform
- Weaviate
- 스택/큐
- React
- javascript
- DP
- python
- VectoreStore
- LLM
- 프로그래머스
- 좌표이동
- set활용
- frontend
- modbus
- 완전탐색
- queue
- AI
- Stack
- javascirpt
- 파이썬
- retriever
- 인베딩
- Algorithm
- InfluxDB
- 개발브로그
- dfs
- typescript
- Two Pointer
- 알고리즘
Archives
- Today
- Total
DM Log
[AI 개념 및 이해 #4] LangChain: LLM 오케스트레이션 프레임워크 본문
LanChain 필요성
LLM은 강력하지만, 한계 존재
- 긴 문서 처리의 어려움
- 외부 데이터베이스 / 검색엔진과 연결 불가능
- 프롬프트 직접 설계 필요
- 복잡한 워크플로 (검색 → 요약 → 답변 등)을 구현하기 번거러움
👉 한계를 해결하고 LLM + 외부 데이터 + 다양한 기능을 연결하는 것이 LangChain
LangChain 핵심 아이디어
단순 LLM 호출을 넘어, 모듈화된 컴포넌트를 연결해 AI 애플리케이션을 빠르게 구축하도록 설계
[핵심 아이디어]
- Chain: LLM과 여러 모듈을 연결한 파이프라인
- Agent: 도구(tool)를 선택 실행 가능하도록 하는 지능형 에이전트
- Memory: 대화나 상태를 저장하여 문맥 유지
[주요 컴포넌트]
LangChain의 핵심 구성 요소
1. Document Loader
- PDF, TXT, 웹페이지, 데이터 베이스 등 다양한 데이터 소스 로딩
- 예: PyPDFLoader, TextLoader, UnstructureLoader
2. Text Splitter
- 긴 문서를 일정 길이로 잘라 벡터화에 적합하게 변환
- 대표: RecursiveCharacterTextSplitter (문맥 손실 최소화)
3. Embeddings
- 텍스트를 의미 벡터로 변환
- 예: OpenAIEmbeddings, HuggingFaceEmbeddings
4. VectorStore
- 임베딩을 저장 / 검색하는 DB와 연결
- Chroma, Pinecone, Weaviate 등 지원
5. Retriever
- 질문과 관련된 문서 조각을 VectorStore에서 가져오는 인터페이스
- RAG의 핵심 단계
6. Chain
- 여러 단계를 묶어 일련의 작업으로 구성
- 예: RetrievalQA Chain → (검색) → (LLM 답변)
7. Agent
- 단순 체인보다 유연
- 툴을 선택하여 실행 가능하도록 결정 로직 내장
- 예: 계산기, 검색 엔진, DB 진의 등을 자동 호출
간단한 LLMChain 예제
⚠️ 환경 변수에 설정하거나 코드 상단에 추가 필요
export OPENAI_API_KEY="your_api_key_here" # macOS/Linux setx OPENAI_API_KEY "your_api_key_here" # Windows PowerShell
또는import os os.environ["OPENAI_API_KEY"] = "your_api_key_here"
from langchain_openai import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# LLM 초기화
llm = ChatOpenAI(model="gpt-4o")
# 프롬프트 템플릿 정의
prompt = PromptTemplate(
input_variables=["topic"],
template="다음 주제에 대해 세 문장으로 설명해줘: {topic}"
)
# LLMChain 생성
chain = LLMChain(llm=llm, prompt=prompt)
# 실행
result = chain.run("벡터 데이터베이스")
print(result)
간단한 LLMChain 장점 및 한계
[LangChain 장점]
- LLM과 다양한 데이터 소스 / 툴을 표준화된 방식으로 연결
- 다양한 플러그인과 예제 존재
- 연구·프로토타입에서 프로덕션까지 사용 용이
[LangChain 한계]
- 러닝 커브가 있음 (컴포넌트 개념 이해 필요)
- 의존성 높으며, 빠르게 변화하는 생태계 대응 필요
- 단순 프로젝트에는 복잡하게 느껴질 수 있음
(부록) 용어 정리
- Chain: 여러 모듈을 연결한 파이프라인
- Agent: 도구 선택·실행이 가능한 지능형 구성 요소
- Memory: 대화 상태 유지 모듈
- Retriever: 관련 문서 검색 인터페이스
- VectorStore: 벡터를 저장/검색하는 데이터베이스
'개발공부 > AI' 카테고리의 다른 글
[AI 개념 및 이해 #5] RAG: 검색과 생성을 결합하는 기술 (0) | 2025.09.07 |
---|---|
[AI 개념 및 이해 #3] 벡터 DB(Vector Database) 개념: Chroma, Pinecone, Weaviate 비교 (0) | 2025.09.07 |
[AI 개념 및 이해 #2] 임베딩(Embedding) 이해: 텍스트-벡터 변환 기술 (0) | 2025.09.06 |
[AI 개념 및 이해 #1] LLM(Language Model) 이해: GPT의 동작 (0) | 2025.09.06 |