LangChain 시작하기 완벽 가이드
최근 AI 주변에서 앵무새 + 체인 이모지가 자주 보이는 것을 본 적 있나요? 그것들은 LangChain의 시그니처 이모지입니다. LangChain은 GPT와 같은 대규모 언어 모델 (LLMs)에 기능을 추가하는 AI Agent 도구입니다. 또한 토큰 관리, 컨텍스트 관리, 프롬프트 템플릿과 같은 기능을 포함합니다. 이 시작하기 튜토리얼에서는 실제 사용 사례가 있는 두 가지 주요 LangChain 예제를 살펴봅니다. 첫째, GPT를 쿼리하는 방법입니다. 둘째, 여기에서 이용 가능한 Colab 노트북을 사용하여 문서를 쿼리하는 방법입니다. 이 LangChain 튜토리얼은 LangChain을 사용하여 GPT와 문서를 쿼리하는 과정을 안내합니다.
이 튜토리얼에서 다루는 내용:
- LangChain이란?
- LangChain 쿼리를 어떻게 실행할 수 있나요?
- GPT 쿼리
- 문서 쿼리
- LangChain 소개 요약
LangChain이란?
LangChain은 대규모 언어 모델을 활용하는 애플리케이션을 구축하기 위한 프레임워크입니다. 이를 통해 CVP Framework를 사용하여 빠르게 구축할 수 있습니다. 대규모 언어 모델을 활용하기 위한 두 가지 핵심 LangChain 기능은 1) 데이터 인식 능력과 2) 에이전트성입니다. 데이터 인식은 외부 데이터 소스를 LLM 애플리케이션에 통합하는 능력입니다. 에이전시란 다른 도구를 사용할 수 있는 능력입니다.
많은 LLM 도구와 마찬가지로, LangChain의 기본 LLM은 OpenAI의 GPT이며 이를 사용하려면 OpenAI의 API 키가 필요합니다. 또한 LangChain은 복잡한 언어 처리 체인을 구성하기 위한 LangChain Expression Language (LCEL)를 제공하여 프로토타이핑에서 프로덕션으로의 전환을 간소화합니다. 또한 LangChain은 Python과 JavaScript 모두에서 작동합니다. 이 튜토리얼에서는 Python 예제를 사용하여 작동 방식을 배우게 됩니다. pip install langchain을 실행하여 pip를 통해 Python 라이브러리를 설치할 수 있습니다.
LangChain은 어떻게 작동하나요?
LangChain의 질의응답 흐름은 개별 요구에 따라 사용자 지정 템플릿을 만들기 위해 쉽게 교체할 수 있는 빌딩 블록으로 구성됩니다. 이러한 블록에는 질문, 임베딩, 모델 학습에 사용되는 문서, 구성된 프롬프트, 응답이 포함됩니다. LangChain은 또한 언어 모델이 생성한 응답을 관리하고 정제하기 위해 출력 파서를 활용하여 구조화되고 관련성 있는 결과를 보장합니다. 따라서 회사가 특정 문서로 학습된 채팅 경험을 원한다면, LangChain은 그 목표를 달성하기 위해 다양한 구성 요소를 교체할 수 있습니다.
GPT 및 Milvus 벡터 데이터베이스와 함께 LangChain을 사용하는 방법은?
LangChain의 주요 사용 사례 중 하나는 텍스트 데이터를 쿼리하는 것입니다. LlamaIndex와 매우 비슷하게, 문서나 벡터 저장소를 쿼리하거나 GPT와의 상호작용을 원활하게 하는 데 사용할 수 있습니다. 이 튜토리얼에서는 LangChain을 사용하여 GPT와 상호작용하는 방법의 간단한 예와 벡터 저장소와 함께 LangChain을 사용해 의미적 의미를 위해 문서를 쿼리하는 방법을 다룹니다. Retrieval Augmented Generation (RAG)로 알려진 이 프로세스는 생성 과정에서 외부 데이터를 통합하여 언어 모델의 역량을 향상시킵니다.
GPT 쿼리
대부분의 사람들이 GPT에 익숙한 것은 ChatGPT와 채팅해 본 경험에서 비롯됩니다. ChatGPT는 GPT와 상호작용하기 위한 OpenAI의 대표 인터페이스입니다. 그러나 GPT와 프로그래밍 방식으로 상호작용하려면 LangChain과 같은 쿼리 인터페이스가 필요합니다. LangChain은 간단한 단일 질문 프롬프트부터 컨텍스트를 통한 퓨샷 러닝까지, GPT를 위한 다양한 쿼리 인터페이스를 제공합니다.
이 예제에서는 프롬프트 템플릿을 사용하여 질문들을 함께 체인으로 연결하는 데 LangChain을 사용하는 방법을 살펴보겠습니다. 먼저 설치해야 할 Python 라이브러리가 몇 가지 있습니다. # pip install langchain openai python-dotenv tiktoken으로 설치할 수 있습니다. 저는 .env 파일에서 환경 변수를 관리하기 때문에 python-dotenv를 사용하지만, OpenAI API 키를 로드하는 데 원하는 어떤 방법이든 사용할 수 있습니다.
OpenAI API 키가 준비되면 LangChain 도구를 로드해야 합니다. langchain에서 PromptTemplate과 LLMChain을 가져오고, langchain.llms에서 OpenAI를 가져와야 합니다. 이 예제에서는 OpenAI의 텍스트 모델인 text-davinci-003을 사용합니다. 다음으로 GPT에 질의할 템플릿을 만듭니다. 아래에서 만드는 템플릿은 GPT에게 주어진 질문에 하나씩 답하라고 지시합니다. 먼저 f-strings가 작동하는 방식과 유사하게, 대괄호 안의 입력 변수를 나타내는 문자열을 만듭니다.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain import PromptTemplate, LLMChain
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
multi_template = """Answer the following questions one at a time.
Questions:
{questions}
Answers:
"""
다음으로 PromptTemplate 객체를 사용하여 지정된 입력 변수가 포함된 문자열로부터 템플릿을 만듭니다. 프롬프트 템플릿이 준비되면, 프롬프트와 선택한 활용 대규모 언어 모델을 전달하여 LLM “체인”을 만들 수 있습니다. 이제 질문을 만들 차례입니다. 묻고 싶은 질문이 준비되면, 질문을 전달하여 LLM 체인을 run해 답변을 얻습니다.
long_prompt = PromptTemplate(template=multi_template, input_variables=["questions"])
llm_chain = LLMChain(
prompt=long_prompt,
llm=davinci
)
qs_str = (
"Which NFL team won the Super Bowl in the 2010 season?\n" +
"If I am 6 ft 4 inches, how tall am I in centimeters?\n" +
"Who was the 12th person on the moon?" +
"How many eyes does a blade of grass have?"
)
print(llm_chain.run(qs_str))
아래 이미지는 예제 질문에서 기대되는 결과를 보여줍니다.
예제 질문의 결과.
관련 문서 질의하기
GPT와 전반적인 활용 대규모 언어 모델에서 개선이 필요한 영역 중 하나는 이들이 훈련 시점에 이용 가능했던 데이터로만 훈련된다는 점입니다. 이는 시간이 지남에 따라 맥락과 정확성을 잃게 된다는 의미입니다. CVP 프레임워크와 매우 유사하게, LangChain은 벡터 데이터베이스를 통해 이 문제를 해결하는 방법을 제공합니다. 사용 가능한 벡터 데이터베이스는 많으며, 이 예제에서는 익숙하기 때문에 Milvus를 사용합니다.
LangChain은 문서 데이터를 처리하는 데 뛰어나며, 워크플로 자동화를 통해 스캔된 문서를 실행 가능한 데이터로 변환합니다.
LangChain이 LLM 애플리케이션에 최신 지식을 주입하는 능력과 시맨틱 검색을 수행하는 능력을 보여주기 위해, 문서를 질의하는 방법을 다룹니다. 이 예제에서는 국정연설의 녹취록을 사용합니다. 녹취록을 다운로드할 수 있으며 Colab 노트북은 여기에서 찾을 수 있습니다. 튜토리얼의 이 부분에 필요한 라이브러리를 얻으려면 pip install langchain openai milvus [pymilvus](https://zilliz.com/blog/get-started-with-pymilvus) python-dotenv tiktoken을 실행하세요.
사용자 질의를 기반으로 관련 문서를 동적으로 가져오는 기능은 생성된 응답의 정확도를 크게 향상시킵니다.
질문을 연결하는 예시와 마찬가지로, 먼저 OpenAI API 키를 로드하고 대규모 언어 모델을 활용합니다. 그런 다음 Milvus Lite를 사용해 벡터 데이터베이스를 실행합니다. 이를 통해 노트북에서 Milvus를 직접 실행할 수 있습니다.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
from milvus import default_server
default_server.start()
이제 문서 쿼리의 세부 사항으로 들어갈 준비가 되었습니다. 이번에는 LangChain에서 가져오는 import가 많습니다. Open AI Embeddings, character text splitter, Milvus integration, text loader, 그리고 retrieval Q/A chain이 필요합니다.
가장 먼저 하는 일은 loader를 설정하고 텍스트 파일을 로드하는 것입니다. 이 경우에는 이 노트북과 같은 폴더 아래 state_of_the_union.txt.에 저장해 두었습니다. 다음으로 텍스트를 분할하고 LangChain docs의 집합으로 저장합니다. 그런 다음 벡터 데이터베이스를 설정할 수 있습니다. 이 경우 TextLoader와 CharacterTextSplitter를 통해 방금 수집한 문서로부터 Milvus collection을 생성합니다. 또한 OpenAI embeddings를 텍스트 벡터 임베딩 집합으로 전달합니다.
벡터 데이터베이스가 로드되면 RetrievalQA 객체를 사용해 벡터 데이터베이스를 통해 문서를 쿼리할 수 있습니다. chain type stuff "을 사용하고, OpenAI를 LLM으로, Milvus 벡터 데이터베이스를 retriever로 전달합니다. 그런 다음 “What did the president say about Ketanji Brown Jackson?”과 같은 query를 만들고 query를run`할 수 있습니다. 마지막으로 깔끔하게 종료하기 위해 벡터 데이터베이스를 종료해야 합니다.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
from langchain.chains import RetrievalQA
loader = TextLoader('./state_of_the_union.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={"host": "127.0.0.1", "port": default_server.listen_port},
)
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=vector_db.as_retriever())
query = "What did the president say about Ketanji Brown Jackson?"
qa.run(query)
default_server.stop()
아래 이미지는 예상 응답이 어떻게 보일 수 있는지 보여줍니다. “The president said that Ketanji Brown Jackson is one of the nation's top legal minds, a former top litigator in private practice, a former federal public defender, …”와 같은 응답을 얻을 수 있습니다.
쿼리 결과
LangChain 대안
LangChain의 대안으로 고려할 수 있는 여러 채팅 기반 도구가 있으며, 사람들은 어떤 것이 가장 좋은지 자주 논의합니다. 이러한 대안 중 다수도 대화형 채팅 애플리케이션을 위해 설계된 특화된 채팅 모델을 활용합니다. 자주 언급되는 몇 가지는 다음과 같습니다.
- AgentGPT
- TensorFlow
- Auto-GPT
- BabyAGI
- Semantic UI
- LlamaIndex
LangChain 튜토리얼 요약
이 글에서는 LangChain 사용 방법의 기본 사항을 다루었습니다. LangChain은 두 가지 핵심 요소에 의존하는 LLM 애플리케이션 구축용 프레임워크라는 것을 배웠습니다. 첫 번째 요소는 텍스트 문서와 같은 외부 데이터를 사용하는 것입니다. LangChain이 외부 데이터를 통합할 수 있는 능력은 사용자별 정보를 포함함으로써 언어 모델의 효과를 높입니다. 두 번째 요소는 벡터 데이터베이스와 같은 다른 도구를 사용하는 것입니다.
두 가지 예제를 다루었습니다. 먼저, 고전적인 LangChain 예제 중 하나인 여러 질문을 함께 체이닝하는 방법을 살펴보았습니다. LangChain은 OpenAI와 Hugging Face를 포함한 다양한 모델 제공업체와 원활하게 작동하여 기능을 향상시킵니다. 그런 다음, Milvus와 같은 벡터 데이터베이스와 결합하여 문서를 쿼리함으로써 LangChain을 사용해 도메인 지식을 주입하는 실용적인 방법을 살펴보았습니다.
출력 파서는 언어 모델의 응답을 정제하고, 구조화되고 관련성 있는 결과를 보장하는 데 중요한 역할을 합니다.
계속 읽기

3 Easiest Ways to Use Claude Code on Your Mobile Phone
Run Claude Code from your phone with Remote Control, Happy Coder, or SSH + Tailscale. Comparison table, setup steps, and tools for typing, memory, and parallel tasks.

How to Improve Retrieval Quality for Japanese Text with Sudachi, Milvus/Zilliz, and AWS Bedrock
Learn how Sudachi normalization and Milvus/Zilliz hybrid search improve Japanese RAG accuracy with BM25 + vector fusion, AWS Bedrock embeddings, and practical code examples.

Our Journey to 35K+ GitHub Stars: The Real Story of Building Milvus from Scratch
Join us in celebrating Milvus, the vector database that hit 35.5K stars on GitHub. Discover our story and how we’re making AI solutions easier for developers.



