컴포넌트 아키텍처 (Component Architecture)
컴포넌트 아키텍처 (Component Architecture)
LangChain의 진짜 힘은 개별 컴포넌트가 아니라, 그 컴포넌트들이 서로 어떻게 맞물려 복잡한 AI 애플리케이션을 만들어내느냐에서 나와요. 이 페이지에서는 서로 다른 컴포넌트들 사이의 관계를 다이어그램으로 보여드릴게요. 각 조각이 어디에 놓여 있고, 어떤 흐름으로 연결되는지를 한눈에 볼 수 있죠.
핵심 컴포넌트 생태계 (Core component ecosystem)
아래 다이어그램은 LangChain의 주요 컴포넌트들이 어떻게 이어져 완성된 AI 애플리케이션을 만드는지 보여줍니다.
graph TD
%% Input processing
subgraph "📥 Input processing"
A[Text input] --> B[Document loaders]
B --> C[Text splitters]
C --> D[Documents]
end
%% Embedding & storage
subgraph "🔢 Embedding & storage"
D --> E[Embedding models]
E --> F[Vectors]
F --> G[(Vector stores)]
end
%% Retrieval
subgraph "🔍 Retrieval"
H[User Query] --> I[Embedding models]
I --> J[Query vector]
J --> K[Retrievers]
K --> G
G --> L[Relevant context]
end
%% Generation
subgraph "🤖 Generation"
M[Chat models] --> N[Tools]
N --> O[Tool results]
O --> M
L --> M
M --> P[AI response]
end
%% Orchestration
subgraph "🎯 Orchestration"
Q[Agents] --> M
Q --> N
Q --> K
Q --> R[Memory]
end
컴포넌트가 어떻게 연결되는지 (How components connect)
파이프라인을 한 단계씩 따라가 보면 전체 그림이 잡혀요.
- 입력 처리 (Input processing) – 원시 데이터를 구조화된 문서로 변환합니다.
- 임베딩 & 저장 (Embedding & storage) – 텍스트를 검색 가능한 벡터 표현으로 변환해요.
- 검색 (Retrieval) – 사용자 질의에 따라 관련 정보를 찾아냅니다.
- 생성 (Generation) – AI 모델을 사용해 응답을 만들며, 필요하면 도구도 함께 씁니다.
- 오케스트레이션 (Orchestration) – 에이전트와 메모리 시스템으로 전체를 조율하죠.
컴포넌트 분류 (Component categories)
| 분류 | 목적 | 핵심 컴포넌트 | 사용 사례 |
|---|---|---|---|
| 도구 (Tools) | 외부 기능 | APIs, 데이터베이스 등 | 웹 검색, 데이터 접근, 계산 |
| 에이전트 (Agents) | 오케스트레이션과 추론 | ReAct 에이전트, 도구 호출 에이전트 | 비결정적 워크플로, 의사 결정 |
| 메모리 (Memory) | 맥락 보존 | 메시지 기록, 커스텀 상태 | 대화, 상태 있는 상호작용 |
| 리트리버 (Retrievers) | 정보 접근 | 벡터 리트리버, 웹 리트리버 | RAG, 지식 베이스 검색 |
| 문서 처리 (Document processing) | 데이터 수집 | 로더, 스플리터, 트랜스포머 | PDF 처리, 웹 스크래핑 |
| 벡터 스토어 (Vector Stores) | 의미 검색 | Chroma, Pinecone, FAISS | 유사도 검색, 임베딩 저장 |
일반적인 패턴 (Common patterns)
RAG (Retrieval-Augmented generation)
RAG는 검색한 관련 문서를 바탕으로 챗 모델이 답을 만들게 하는 패턴이에요. 사용자 질문이 리트리버로 가서 관련 문서를 찾고, 그 문서와 질문을 함께 챗 모델에 넘겨 정보에 기반한 응답을 얻습니다.
graph LR
A[User question] --> B[Retriever]
B --> C[Relevant docs]
C --> D[Chat model]
A --> D
D --> E[Informed response]
classDef trigger fill:#F6FFDB,stroke:#6E8900,stroke-width:2px,color:#2E3900
classDef process fill:#E5F4FF,stroke:#006DDD,stroke-width:2px,color:#030710
classDef neutral fill:#F2FAFF,stroke:#40668D,stroke-width:2px,color:#2F4B68
class A trigger
class B,D process
class C,E neutral
도구를 쓰는 에이전트 (Agent with tools)
에이전트는 작업을 처리하다가 도구가 필요한 지점에서 멈춰 도구를 호출하고, 그 결과를 다시 받아 다음 결정을 내려요. 결과가 충분하면 최종 답을 내놓습니다.
graph LR
A[User request] --> B[Agent]
B --> C{Need tool?}
C -->|Yes| D[Call tool]
D --> E[Tool result]
E --> B
C -->|No| F[Final answer]