LangChain(๋ญ์ฒด์ธ)
๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLM)์ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ฒซ๊ฑธ์
Jul 12, 2025
๋ค์ด๊ฐ๋ฉฐ
์ต๊ทผ AI ๊ฐ๋ฐ์ด๋ LLM(Large Language Model)์ ํ์ฉํ ์๋น์ค ๊ฐ๋ฐ์ด ๊ธ์ํ ์ฆ๊ฐํ๋ฉด์ ํ๊ณผ์ ๋ ํ์ต์์ ๊ฐ์ธ์ ์ผ๋ก ๊ด์ฌ์ ๊ฐ๊ฒ๋ ๊ธฐ์ ์ค ํ๋๊ฐ ๋ฐ๋ก LangChain์ ๋๋ค ์ด๋ฒ ๊ธ์์๋ LangChain์ ๊ฐ๋ ๊ณผ ํ์ฉ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ์ AI ๊ฐ๋ฐ์ LangChain์ด ์ ์ฉํ์ง ๊ฐ๋ณ๊ฒ ์์๋ณด๋ ค ํฉ๋๋ค.
๋ญ์ฒด์ธ(LangChain)์ด๋?
LangChain์ ๋ค์ํ ์ธ์ด ๋ชจ๋ธ์ ์ฝ๊ฒ ์ฐ๊ฒฐํ์ฌ ์์ฐ์ด ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๊ฒ ๋์์ฃผ๋ ๋๊ตฌ์ ๋๋ค. ๊ฐ๋จํ ๋งํ๋ฉด, ์ฌ๋ฌ ๊ฐ์ง ๋๊ตฌ๋ API, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ์ธ์ด ๋ชจ๋ธ๊ณผ ์ฝ๊ฒ ๊ฒฐํฉํ์ฌ ๋์ฑ ๊ฐ๋ ฅํ๊ณ ์ ์ฉํ AI ์๋น์ค๋ฅผ ๋ง๋ค ์ ์๋๋ก ์ง์ํ๋ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
๋ญ์ฒด์ธ(LangChain)์ ์ฃผ์ ๊ตฌ์ฑ ์์

- LLM ์ถ์ํ (Abstraction) ์๋์ฐจ ์๋์ ๊ฑธ๋ฏ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ๋ ์ธ์ด ๋ชจ๋ธ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
- ํ๋กฌํํธ ํ ํ๋ฆฟ (Prompts) ๊ตฌ์กฐํ๋ ํ๋กฌํํธ ์์ฑ์ ๋์ ์ ํํ๋ ๋ช ๋ น ๊ตฌ์ฑ์ ์ฝ๊ฒ ํฉ๋๋ค.
- ์ฒด์ธ (Chains) ์ฌ๋ฌ LLM ํธ์ถ ์์ , ๊ฒ์, ๋ถ์ ๋จ๊ณ๋ฅผ ์ฐ๊ฒฐํด ๋ณต์กํ ์ํฌํ๋ก์ฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์ธ๋ฑ์ค (Indexes) ์ธ๋ถ ๋ฌธ์๋ฅผ ๋ก๋ฉ, ๋ถํ ํ๊ณ ๋ฒกํฐ DB์ ์ ์ฅํ์ฌ ํจ์จ์ ์ผ๋ก ๊ฒ์ํ๊ณ ์๋ต ํ์ง์ ๋์ ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ (Memory) ์ฌ์ฉ์ ๋ํ ๋งฅ๋ฝ์ ์ ์ฅํด ์ฑ๋ด์ ์ง์๋ ๊ธฐ์ต๋ ฅ์ ๋ถ์ฌํฉ๋๋ค.
- ์์ด์ ํธ (Agents) LLM์ด ์ค์ค๋ก ๋๊ตฌ(API, ๊ฒ์, DB ๋ฑ)๋ฅผ ์ ํํด ์์ ํ ์ ์๋ ๋ฅ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
๋ญ์ฒด์ธ(LangChain)์ ๋ฌด์์ ๋์์ค๊น์?
์ฐ๋ฆฌ๊ฐ ์์์ ๋ง๋๋ ๊ณผ์ ์ ์์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
์์ ๋๋ ์๋ฆฌ๋ฅผ ํ๋ ค๋ฉด ๋ค์ํ ์ฌ๋ฃ(๋ฐ์ดํฐ), ์๋ฆฌ ๋๊ตฌ(LLM), ์๋ฆฌ๋ฒ(ํ๋กฌํํธ)์ด ํ์ํ๊ฒ ์ฃ ?
๋ญ์ฒด์ธ์ ์ด ๋ชจ๋ ๊ฒ๋ค์ ์ ์ ๋ฆฌํ๊ณ ์ฐ๊ฒฐํด์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์๋ฆฌ(AI ์ ํ๋ฆฌ์ผ์ด์ )๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ค ์ ์๋๋ก ๋์์ฃผ๋ ํ๋ฅญํ ์ค๋งํธ ์ฃผ๋ฐฉ ๋์ฐ๋ฏธ ๋ผ๊ณ ํ ๊ฒ ๊ฐ์ต๋๋ค
์๋๋ ๋ญ์ฒด์ธ ๊ตฌ์กฐ์ ์ฃผ์ ๊ตฌ์ฑ ์์๋ค์ ์์์ ํจ๊ป ์ค๋ช ํฉ๋๋ค.
- ๋ค์ํ LLM ์ฐ๊ฒฐ: ๋ง์น ์ฌ๋ฌ ์ข ๋ฅ์ ์ค๋ธ(GPT-3.5, GPT-4, Llama ๋ฑ ๋ค์ํ LLM)์ ํ์์ ๋ฐ๋ผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ธ ์ ์๊ฒ ํด์ค๋๋ค.
- ๋ณต์กํ ์์ ์ฐ๊ฒฐ: ํ๋์ ์๋ฆฌ๊ฐ ์ฌ๋ฌ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง๋ฏ์ด, ๋ญ์ฒด์ธ์ ์ฌ๋ฌ AI ๋ชจ๋ธ์ด๋ ๋๊ตฌ(๊ฒ์ ์์ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ)๋ฅผ ์์๋๋ก ์ฐ๊ฒฐํด์ ๋ณต์กํ ์์ ์ ์ํํ๊ฒ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ง๋ฌธ์ ์ดํดํ๊ณ (LLM), ํ์ํ ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ณ (๊ฒ์ ์์ง), ๊ทธ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๋ต๋ณ์ ์์ฑํ๋(LLM) ์ผ๋ จ์ ๊ณผ์ ์ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
- ๊ธฐ์ต๋ ฅ ์ ๊ณต: LLM์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์ ์ ๋๋ ๋ํ๋ฅผ ๊ธฐ์ตํ์ง ๋ชปํฉ๋๋ค. ๋ญ์ฒด์ธ์ LLM์ด ์ด์ ๋ํ๋ฅผ ๊ธฐ์ตํ๊ณ ๋ฌธ๋งฅ์ ์ ์งํ ์ ์๋๋ก ๋์์ค๋๋ค. ๋ง์น ์๋ฆฌ ๋์ฐ๋ฏธ๊ฐ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ์ฌ๋ฃ๋ฅผ ๋ฃ์๋์ง ๊ธฐ์ตํ๊ณ ๋ค์ ๋จ๊ณ๋ฅผ ์๋ ค์ฃผ๋ ๊ฒ์ฒ๋ผ์.
- ๋ค์ํ ๋ฐ์ดํฐ ํ์ฉ: ์๋ฆฌ์ ๋ค์ํ ์ฌ๋ฃ๊ฐ ํ์ํ๋ฏ์ด, ๋ญ์ฒด์ธ์ ์น ํ์ด์ง, ๋ฌธ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ๋ค์ํ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ LLM์ด ์ดํดํ ์ ์๋ ํํ๋ก ๋ฐ๊ฟ์ ํ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
- ๋ ผ๋ฆฌ์ ์ธ ์ฌ๊ณ ํ๋ฆ ๋ง๋ค๊ธฐ: ๋ง์น ์๋ฆฌ์ฌ๊ฐ ์๋ฆฌ ์์๋ฅผ ๊ณํํ๋ฏ์ด, ๋ญ์ฒด์ธ์ LLM์ด ์ง๋ฌธ์ ๋ตํ๊ฑฐ๋ ์์ ์ ์ํํ ๋ ์ด๋ค ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํ ์ง ๋ ผ๋ฆฌ์ ์ธ ์ฌ๊ณ ํ๋ฆ์ ๋ง๋ค ์ ์๊ฒ ํด์ค๋๋ค. ์ด๊ฑธ โ์์ด์ ํธ(Agent)โ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค.
๋ญ์ฒด์ธ(LangChain) ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
๊ฐ๋จํ๊ฒ ๋ญ์ฒด์ธ์ ๋ํ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ python ์ฝ๋๋ก ์์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค
์ฐ์ ์์์ ๋ญ์ฒด์ธ์ ์ค์นํด์ค๋๋ค
pip install langchain openai
๊ฐ๋จํ ํ๋กฌํํธ ์ฌ์ฉ์์
from langchain.llms import OpenAI
llm = OpenAI(api_key="YOUR_API_KEY")
response = llm("LangChain์ด๋ ๋ฌด์์ธ๊ฐ์?")
print(response)
์ฒด์ธ(chain)์ ํ์ฉํ ์์
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
prompt_template = PromptTemplate(
input_variables=["product"],
template="{product}์ ๋ํ ๊ด๊ณ ์นดํผ๋ฅผ ์์ฑํด์ฃผ์ธ์."
)
chain = LLMChain(llm=llm, prompt=prompt_template)
result = chain.run("์ค๋งํธํฐ")
print(result)
LangChain์ ์์ฝ๋์์ ๋ค์๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํ๋กฌํํธ ๊ตฌ์ฑ๊ณผ ๊ด๋ฆฌ๊ฐ ๊ฐํธ
- ์ธ์ด ๋ชจ๋ธ ํธ์ถ์ ์ถ์ํ ๋ฐ ๊ฐํธํ ์คํ
- ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ ๋ฐ ์ ์ง๋ณด์์ฑ ์ฆ๊ฐ
- ์ด๋ฅผ ํตํด LangChain์ด ์์ ๋๋ณด๋ค ๋ ํจ์จ์ ์ด๊ณ ๊ตฌ์กฐ์ ์ผ๋ก AI ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
RAG(Retrieval-Augmented Generation) ๊ตฌํ
RAG๋ ์ฌ์ฉ์์ ์ง๋ฌธ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ์ฌ ๋ต๋ณ์ ์ ํ์ฑ์ ๋์ด๋ ๊ธฐ์ ์ ๋๋ค.
from langchain.llms import OpenAI
from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
loader = TextLoader('data.txt')
documents = loader.load()
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(documents, embeddings) asdlaskdjasdas
rag_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever()
)
result = rag_chain.run("LangChain์ ์ค๋ช
ํด์ฃผ์ธ์.")
print(result)
๋ญ์ฒด์ธ์ด RAG ๊ตฌํ์ ์ด๋ป๊ฒ ์ฌ์ฉ๋ ๊น์?
๋ญ์ฒด์ธ์ RAG์ ๊ฐ ๋จ๊ณ๋ฅผ ์ฝ๊ฒ ๊ตฌ์ถํ๊ณ ์ฐ๊ฒฐํ ์ ์๋๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ฒ๋ฆฌ:
- ๋ฌธ์ ๋ก๋(Document Loaders): PDF, ์น ํ์ด์ง, ํ ์คํธ ํ์ผ ๋ฑ ๋ค์ํ ํ์์ ๋ฌธ์๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
- ํ ์คํธ ๋ถํ ๊ธฐ(Text Splitters): ๋ถ๋ฌ์จ ๋ฌธ์๋ฅผ LLM์ด ์ฒ๋ฆฌํ๊ธฐ ์ ์ ํ ํฌ๊ธฐ๋ก ์๋ฆ ๋๋ค. ๋๋ฌด ๊ธธ๋ฉด LLM์ด ํ ๋ฒ์ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ต๊ณ , ๋๋ฌด ์งง์ผ๋ฉด ๋ฌธ๋งฅ์ด ๋์ด์ง ์ ์์ต๋๋ค.
- ์๋ฒ ๋ฉ(Embedding) ์์ฑ:
- ๋ถํ ๋ ํ ์คํธ ์กฐ๊ฐ๋ค์ ๋ฒกํฐ(์ซ์ ๋ฐฐ์ด) ํํ๋ก ๋ณํํฉ๋๋ค. ์ด ๋ฒกํฐ๋ ํ ์คํธ์ ์๋ฏธ๋ฅผ ๋ด๊ณ ์์ด์, ์๋ฏธ๊ฐ ๋น์ทํ ํ ์คํธ๋ ๋ฒกํฐ ๊ณต๊ฐ์์ ๊ฐ๊น๊ฒ ์์นํ๊ฒ ๋ฉ๋๋ค.
- ๋ฒกํฐ ์ ์ฅ์(Vector Store):
- ์์ฑ๋ ์๋ฒ ๋ฉ ๋ฒกํฐ๋ค์ ์ ์ฅํ๊ณ ๊ฒ์ํ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ง๋ฌธ์ ํ๋ฉด, ์ง๋ฌธ๋ ์๋ฒ ๋ฉ์ผ๋ก ๋ณํํ์ฌ ์ด ๋ฒกํฐ ์ ์ฅ์์์ ์ง๋ฌธ๊ณผ ๊ฐ์ฅ ์ ์ฌํ(์๋ฏธ์ ์ผ๋ก ๊ฐ๊น์ด) ํ ์คํธ ์กฐ๊ฐ๋ค์ ์ฐพ์๋ ๋๋ค.
- ๊ฒ์(Retrieval):
- ์ฌ์ฉ์์ ์ง๋ฌธ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๋ฒกํฐ ์ ์ฅ์์์ ํจ์จ์ ์ผ๋ก ๊ฒ์ํฉ๋๋ค. ๋ญ์ฒด์ธ์ ๋ค์ํ ๊ฒ์ ๋ฐฉ์์ ์ง์ํฉ๋๋ค.
- ์์ฑ(Generation):
- ๊ฒ์๋ ๊ด๋ จ ์ ๋ณด(์ฝํ ์คํธ)์ ์ฌ์ฉ์์ ์ง๋ฌธ์ LLM์ ํจ๊ป ์ ๋ฌํ์ฌ ๋ต๋ณ์ ์์ฑํฉ๋๋ค. ๋ญ์ฒด์ธ์ ์ด๋ ํ๋กฌํํธ ํ ํ๋ฆฟ ๋ฑ์ ์ฌ์ฉํ์ฌ LLM์ด ์ ๋ณด๋ฅผ ์ ํ์ฉํ์ฌ ๋ต๋ณ์ ๋ง๋ค๋๋ก ์ ๋ํฉ๋๋ค.
์ด๋จ๋ ์ฃผ๋ก ํ์ฉ๋ ๊น?
๋ญ์ฒด์ธ์ LLM์ ํ์ฉํ ๋ค์ํ AI ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ์ ์ฉํฉ๋๋ค. ๋ช ๊ฐ์ง ์์๋ฅผ ์๋์ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค
- ์ฑํ ๋ด: ์ฌ์ฉ์์ ์ง๋ฌธ์ ๋ตํ๊ณ , ์ด์ ๋ํ๋ฅผ ๊ธฐ์ตํ๋ฉฐ, ํ์์ ๋ฐ๋ผ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ฐพ์ ๋ต๋ณํ๋ ๋๋ํ ์ฑํ ๋ด์ ๋ง๋ค ๋ ์ฌ์ฉํฉ๋๋ค.
- ๋ฌธ์ ์์ฝ ๋ฐ ์ง๋ฌธ ๋ต๋ณ ์์คํ : ๊ธด ๋ฌธ์๋ฅผ ์ฝ๊ณ ํต์ฌ ๋ด์ฉ์ ์์ฝํด์ฃผ๊ฑฐ๋, ๋ฌธ์ ๋ด์ฉ์ ๋ํด ์ง๋ฌธํ๋ฉด ๋ต๋ณํด์ฃผ๋ ์์คํ ์ ๋ง๋ค ๋ ์ฌ์ฉํฉ๋๋ค. (์ด๋ RAG ๊ฐ๋ ์ด ์ค์ํ๊ฒ ์ฐ์ผ ์ ์์ต๋๋ค)
- ์ฝํ ์ธ ์์ฑ: ํน์ ์ฃผ์ ์ ๋ํ ๋ธ๋ก๊ทธ ๊ธ, ์ด๋ฉ์ผ, ๋ง์ผํ ๋ฌธ๊ตฌ ๋ฑ์ ์๋์ผ๋ก ์์ฑํ๋ ๋๊ตฌ๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ถ์ ๋ณด์กฐ ๋๊ตฌ: ๋ณต์กํ ๋ฐ์ดํฐ์ ๋ํด ์ง๋ฌธํ๋ฉด LLM์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ์ธ์ฌ์ดํธ๋ฅผ ์ ๊ณตํ๋ ๋๊ตฌ๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ์ธ ๋น์: ์ด๋ฉ์ผ ์์ฑ, ์ผ์ ๊ด๋ฆฌ, ์ ๋ณด ๊ฒ์ ๋ฑ ๋ค์ํ ์์ ์ ๋์์ฃผ๋ ๊ฐ์ธ ๋น์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ์ฌ์ฉํฉ๋๋ค.
๋ง์น๋ฉฐ
LangChain์ LLM์ ํ์ฉํ ์๋น์ค ๊ฐ๋ฐ์ ๋ณต์กํ ๊ณผ์ ์ ๋น๊ต์ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์ ๋๋ค ํนํ ๋ค์ํ ๊ตฌ์ฑ์์์ ๋ชจ๋ํ์ ์ ์ฐํ ํตํฉ ๊ธฐ๋ฅ์ ํตํด ๊ฐ๋ฐ์๊ฐ ๋น ๋ฅด๊ฒ ๋ชฉํํ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋๋ฌํ ์ ์๋๋ก ๋์์ค ์ ์์ง ์์๊น ์๊ฐํฉ๋๋ค.
AI ๊ด๋ จํ ๊ฐ๋ฐ์ด๋ ์๋น์ค๋ฅผ ์๊ฐํ๊ณ ์๋ค๋ฉด LangChain์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํด๋ณด๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
์์ ์ฝ๋๋ LangChain์ด ๊ธฐ๋ณธ์ ์ผ๋ก python์ํ๊ณ์ ๋งค์ฐ ์ ํตํฉ๋์ด ์์ด python์ ํ์ฉํ์ง๋ง node๋ javascript ์ง์์์๋ langchain.js๋ฅผ ํ์ฉํด ์ฌ๋ฌ๊ฐ์ง ๊ฐ๋ฐ์ ํ์ฉํ ์ ์์ต๋๋ค
๋๊น์ง ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.