LangChain 및 LlamaIndex 기초
복잡한 LLM 애플리케이션을 쉽게 구축할 수 있도록 지원하는 강력한 프레임워크인 LangChain과 LlamaIndex를 시작해 봅니다.
LangChain 및 LlamaIndex 기초은(는) CoddyKit의 무료 Prompt Engineering & LLM Optimization for Developers 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Prompt Engineering & LLM Optimization for Developers 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Prompt Engineering & LLM Optimization for Developers 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
Why Use LLM Frameworks?
Working directly with Large Language Model (LLM) APIs can be like building with raw LEGO bricks. It's powerful, but complex for bigger projects.
Frameworks like LangChain and LlamaIndex provide pre-built tools and structures. They simplify common tasks, making it much easier to build sophisticated LLM applications.
LangChain: Orchestrating LLMs
LangChain is a framework designed to help you build applications with LLMs by "chaining" together different components.
- It provides abstractions for working with various LLMs.
- It enables complex workflows involving multiple steps.
- Think of it as the glue for your LLM-powered application logic.
Core LangChain Components
LangChain organizes functionality into key modules:
- LLMs: Wrappers for different LLM providers (e.g., OpenAI, Anthropic).
- Prompts: Templates to easily construct dynamic prompts.
- Chains: Sequences of calls to LLMs or other utilities.
- Agents: LLMs that decide which tools to use and in what order.
- Memory: For persistent state in conversational applications.
Your First LangChain Idea
Let's see how a simple prompt and a mock LLM can work together. This example shows how LangChain conceptualizes connecting a prompt template to an LLM, even with a simulated model.
from langchain_core.prompts import PromptTemplate
from langchain_core.language_models import BaseChatModel
from langchain_core.messages import BaseMessage, HumanMessage, AIMessage
# A simple mock LLM for demonstration
class MockChatModel(BaseChatModel):
def _generate(self, messages, stop=None, run_manager=None):
last_message_content = messages[-1].content
response = f"Mock response for: '{last_message_content}'"
return AIMessage(content=response)
@property
def _llm_type(self) -> str:
return "mock_chat_model"
def main():
# 1. Define a Prompt Template
template = "Tell me a fun fact about {topic}."
prompt = PromptTemplate(template=template, input_variables=["topic"])
# 2. Instantiate our Mock LLM
llm = MockChatModel()
# 3. Format the prompt with input
formatted_prompt = prompt.format(topic="penguins")
print("--- Formatted Prompt ---")
print(formatted_prompt)
# 4. Invoke the LLM (simulated)
# In a real LangChain app, you'd use a chain, but this shows the core interaction.
response_message = llm.invoke([HumanMessage(content=formatted_prompt)])
print("\n--- Mock LLM Response ---")
print(response_message.content)
if __name__ == "__main__":
main()LlamaIndex: Data & LLMs
LlamaIndex is a data framework designed to connect your custom data sources to LLMs. Its primary goal is to make it easy to build applications that can query and understand your own private or domain-specific data.
- Focuses on data ingestion, indexing, and retrieval.
- Powers Retrieval Augmented Generation (RAG) applications.
- Helps LLMs answer questions beyond their training data.
Core LlamaIndex Concepts
LlamaIndex streamlines the RAG pipeline with these components:
- Documents: Raw data inputs (e.g., text files, PDFs, database records).
- Nodes: Chunks of text derived from Documents, often with associated metadata.
- Indexes: Data structures (like vector stores) that organize Nodes for efficient retrieval.
- Query Engines: Interfaces for querying an index, often combining retrieval and LLM synthesis.
Querying Custom Data (Simulated)
Here's a simplified look at how LlamaIndex connects data to a query. We simulate ingesting a document and then querying it, demonstrating the core retrieval idea.
class Document:
def __init__(self, text, doc_id=None):
self.text = text
self.doc_id = doc_id if doc_id else f"doc_{hash(text)}"
class MockVectorStore:
def __init__(self):
self.store = {}
self.documents = []
def add(self, docs):
for doc in docs:
self.store[doc.doc_id] = doc.text
self.documents.append(doc)
def query(self, query_text):
for doc in self.documents:
if query_text.lower() in doc.text.lower():
return [doc.text]
return []
class MockQueryEngine:
def __init__(self, vector_store):
self.vector_store = vector_store
def query(self, query_text):
retrieved_texts = self.vector_store.query(query_text)
if retrieved_texts:
return f"Based on available info, for '{query_text}': {retrieved_texts[0]}"
return f"Could not find specific information for '{query_text}'."
def main():
# 1. Simulate Documents
documents = [
Document("The quick brown fox jumps over the lazy dog."),
Document("Cats love to nap in sunny spots."),
Document("Python is a popular programming language.")
]
# 2. Simulate building a Vector Store and Index
mock_store = MockVectorStore()
mock_store.add(documents)
# 3. Create a Query Engine
query_engine = MockQueryEngine(mock_store)
# 4. Query the data
response1 = query_engine.query("What is Python?")
print("--- Query 1 Response ---")
print(response1)
response2 = query_engine.query("What about foxes?")
print("\n--- Query 2 Response ---")
print(response2)
response3 = query_engine.query("What is the capital of France?")
print("\n--- Query 3 Response ---")
print(response3)
if __name__ == "__main__":
main()LangChain vs. LlamaIndex
While both frameworks help with LLMs, their primary focus differs:
- LangChain: Best for orchestrating complex LLM workflows, building agents, conversational bots, and integrating various tools.
- LlamaIndex: Ideal for data-intensive LLM applications, especially when you need to connect LLMs to your private or domain-specific data for RAG.
Often, you'll find them complementing each other in real-world applications.
Synergy: LangChain + LlamaIndex
It's common to use LangChain and LlamaIndex together for powerful applications:
- Use LlamaIndex to ingest, index, and retrieve relevant information from your data sources.
- Pass the retrieved context to LangChain, which then uses its "chains" or "agents" to process this context with an LLM, refine answers, or interact with other tools.
This combines LlamaIndex's data prowess with LangChain's orchestration capabilities.
Framework Roles
Consider the core strengths of LangChain and LlamaIndex. Which of the following statements accurately describe their primary roles or common use cases?
Lesson Recap
In this lesson, we explored LangChain and LlamaIndex, two powerful frameworks for building LLM applications.
- LangChain helps orchestrate complex LLM workflows, chains, and agents.
- LlamaIndex specializes in connecting LLMs to your custom data for efficient retrieval and RAG.
- These frameworks often work together, with LlamaIndex providing data context to LangChain's reasoning.
Understanding their distinct roles will help you choose the right tool for your next LLM project!
자주 묻는 질문
“LangChain 및 LlamaIndex 기초” 강의는 무료인가요?
네 — “LangChain 및 LlamaIndex 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Prompt Engineering & LLM Optimization for Developers 강의 전체를 잠금 해제할 수 있습니다. Prompt Engineering & LLM Optimization for Developers 강의에는 총 4개의 강의가 포함되어 있습니다.
“LangChain 및 LlamaIndex 기초”에서 뭘 배우나요?
복잡한 LLM 애플리케이션을 쉽게 구축할 수 있도록 지원하는 강력한 프레임워크인 LangChain과 LlamaIndex를 시작해 봅니다. 브라우저에서 직접 실행하는 실습 코드로 Prompt Engineering & LLM Optimization for Developers을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Prompt Engineering & LLM Optimization for Developers을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Prompt Engineering & LLM Optimization for Developers은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“LangChain 및 LlamaIndex 기초” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Prompt Engineering & LLM Optimization for Developers 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Prompt Engineering & LLM Optimization for Developers 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- LLM API 상호작용(OpenAI, Anthropic)
- LangChain 및 LlamaIndex 기초
- 프롬프트 관리 및 버전 관리
- 검색 증강 생성(RAG) 기초