Home LangChain이란 무엇일까?
Post
Cancel

LangChain이란 무엇일까?

글을 작성하게 된 계기


AI 관련 기사를 읽으면서 Agent, LangChain, LLM 등 많은 용어들을 들었지만, 직무와 다르다고 별다른 관심을 가지지 않았는데요. 최근 너무 서버 개발, 도메인 등에 치우쳐 있다는 생각이 든 후, 조금은 관심을 가져야 겠다고 마음을 바꾸었습니다. 그 중, 최근 관심을 가지게 된 LangChain에 대해 간단히 정리해보고 싶어 글을 작성하게 되었습니다.





1. AI란?


AI(Artificial Intelligence)는 인간이 하던 인지적 작업, 판단, 추론, 문제 해결, 학습을 컴퓨터가 수행하도록 만드는 기술 전반을 의미합니다. 여기서 중요한 점은 AI가 하나의 기술이 아니라, 여러 접근 방식의 총칭이라는 것입니다. 초기 AI는 사람이 미리 정의한 규칙을 그대로 실행하는 규칙 기반 시스템(if–then) 이 주류였습니다.

AI(Artificial intelligence) is the capability of computational systems to perform tasks typically associated with human intelligence, such as learning, reasoning, problem-solving, perception, and decision-making.



이는 명확한 규칙이 있는 문제 에서는 강력하지만, 현실처럼 복잡하고 예외가 많은 문제에서는 급격한 한계를 드러냅니다. 현실 세계의 문제는 규칙이 고정되어 있지 않고, 입력과 출력 사이의 관계를 사람이 명확한 조건문으로 정의하기 어려운 경우가 대부분이기 때문입니다. 즉, 무엇이 규칙인지조차 명확하지 않다는 점 들이 현실에 많으며, 이를 잘 해결하지는 못 한다는 것이죠.

이 한계를 넘기 위해 등장한 것이 머신러닝(Machine Learning)입니다. 머신러닝은 사람이 규칙을 직접 설계하는 대신, 대량의 데이터를 통해 입력과 출력 사이의 관계를 통계적으로 추정합니다. 규칙을 작성하는 것이 아니라, 데이터 속에 반복적으로 나타나는 패턴을 학습 함으로써 문제를 해결하는 방식입니다.

Machine learning is a field of study in artificial intelligence concerned with the development and study of statistical algorithms that can learn from data and generalise to unseen data, and thus perform tasks without explicit instructions.



이는 텍스트, 이미지, 음성처럼 규칙으로 정의하기 어려운 비정형 데이터를 다루는 데 특히 강점을 가집니다. 단어의 의미, 이미지의 형태, 음성의 억양과 같은 요소는 명확한 규칙으로 표현하기 어렵지만, 데이터에는 분명한 패턴으로 존재하기 때문입니다. 이로 인해 머신러닝, 특히 딥러닝은 오늘날 인공지능 기술의 중심이 되었으며, 우리가 일상적으로 접하는 챗봇, 음성 인식, 이미지 생성 서비스 대부분은 이러한 딥러닝 기반 모델 위에서 동작합니다.

오늘날 AI 서비스 라고 부르는 것의 실체는 대부분 딥러닝 모델과 이를 둘러싼 소프트웨어 시스템이라고 볼 수 있죠. 🤔





2. LLM은 AI 중 어디에 속할까?


LLM(Large Language Model)은 AI라는 큰 범주 안에서, 자연어 처리(NLP) 에 특화된 딥러닝 모델입니다. LLM의 핵심 원리는 의외로 단순합니다. 방대한 텍스트 데이터를 학습해, 어떤 문맥에서 다음에 올 단어(토큰)가 무엇일지 확률적으로 예측합니다. 하지만 이 단순한 예측을 수십억 개의 파라미터와 막대한 데이터로 확장하면서, 문장 이해·요약·질의응답·번역·코드 생성까지 가능해졌습니다.

A large language model (LLM) is a language model trained with self-supervised machine learning on a vast amount of text, designed for natural language processing tasks, especially language generation.



여기서 반드시 짚고 넘어가야 할 포인트가 있습니다. LLM은 지식을 저장하거나 검색하는 존재가 아니다 라는 점입니다. LLM은 인터넷을 뒤져 사실을 찾아오는 것이 아니라, 학습 과정에서 형성된 언어 패턴을 기반으로 그럴듯한 문장을 생성합니다. 이 때문에 최신 정보에 약하고, 맥락상 말이 되지만 사실과 다른 답을 만들어내는 할루시네이션(Hallucination) 문제가 발생합니다.

In the field of artificial intelligence, a hallucination or artificial hallucination is a response generated by AI that contains false or misleading information presented as fact.



ChatGPT는 LLM을 대화형 인터페이스로 감싼 대표적인 서비스입니다. 사용자는 프롬프트를 통해 질문이나 지시를 하고, 시스템은 이전 대화 맥락을 고려해 응답합니다. 이로 인해 ChatGPT는 단순한 텍스트 생성기를 넘어, 마치 대화 상대처럼 느껴집니다. 하지만 ChatGPT는 AI 그 자체도 아니고, 모든 문제를 해결하는 시스템도 아닙니다. 구조적으로 최신 정보 접근에는 제약이 있고, 대화 길이가 길어질수록 문맥 유지에 한계가 있으며, 정확성 또한 보장되지 않습니다.

즉, ChatGPT는 LLM의 능력을 체험하기 좋은 인터페이스이지, 그대로 실무 시스템에 가져다 쓰기에는 부족합니다.



이 한계를 보완하기 위해 등장한 것이 n-shot, in-context learning 같은 프롬프트 기법, 파인튜닝, 그리고 외부 데이터와의 연동입니다. 그리고 이 모든 것을 체계적으로 다루기 위한 프레임워크가 필요해졌습니다.

  • n-shot
  • in-context learning
  • 파인튜닝
  • 외부 데이터 연동





3. LangChain은 왜 등장했을가?


LLM을 실제 애플리케이션에 적용해 보면, 단순히 프롬프트를 한 번 전달하고 응답을 받는 방식만으로는 해결할 수 없는 경우가 많습니다. 현실의 문제는 보통 여러 단계로 나뉘어 있고, 이전 단계의 결과를 다음 단계에서 다시 활용해야 하며, 검색 시스템이나 데이터베이스, 외부 API와의 연동도 자연스럽게 요구됩니다.

즉, LLM을 한 번 호출하는 도구 로만 사용하는 데에는 분명한 한계가 존재합니다.



LangChain은 이러한 한계를 보완하기 위해 등장한 프레임워크입니다. LangChain은 LLM을 단순히 감싸는 라이브러리가 아니라, LLM을 중심에 두고 애플리케이션의 흐름 전체를 구성할 수 있도록 돕는 역할을 합니다. 프롬프트와 모델 호출을 개별적인 이벤트로 다루는 대신, 이를 하나의 연속된 흐름(체인) 으로 연결하고, 그 과정에서 필요한 상태를 관리하며, 외부 시스템과의 상호작용을 구조적으로 결합할 수 있게 합니다. 이러한 구조 덕분에 LLM은 더 이상 독립적인 응답 생성기에 머무르지 않고, 실제 서비스의 업무 흐름 안에서 의미 있는 구성 요소로 동작할 수 있게 됩니다.

LangChain is a software framework that helps facilitate the integration of large language models (LLMs) into applications.



이 관점에서 LangChain은 AI 기술이 아니라, AI를 쓰기 위한 소프트웨어 아키텍처 도구 에 가깝습니다. 여담으로 LangChain이 Python 진영에서 사실상 표준 역할을 한다면, Spring AI는 Java/Spring 생태계에서 동일한 문제를 해결하는 프레임워크입니다. Spring의 DI, 모듈성, POJO 중심 설계 철학을 AI 도메인에 적용해, 기존 스프링 애플리케이션에 LLM·RAG·Tool 연동을 자연스럽게 통합할 수 있게 합니다.

개념적으로 LangChain과 Spring AI는 동일한 세계관을 공유하며, 차이는 언어와 생태계에 있습니다.





4. LLM의 한계를와 보완점


LLM은 강력한 언어 모델이지만, 구조적으로 몇 가지 명확한 한계를 가지고 있습니다. 대표적으로는 사실과 다른 내용을 그럴듯하게 생성하는 할루시네이션 문제와, 학습 이후의 최신 정보나 내부 데이터에 직접 접근할 수 없다는 제약이 있습니다. 이 한계는 모델 성능의 문제가 아니라, LLM이 고정된 파라미터 기반 모델이라는 구조적 특성에서 비롯됩니다. 이 한계를 극복하기 위해, 최근의 LLM 기반 시스템은 모델 하나로 모든 문제를 해결하려 하지 않고, 시스템 차원의 보완 패턴을 도입하기 시작했습니다. 그 대표적인 접근이 RAG와 Agent입니다.



4-1. RAG는 왜 필요할까?

RAG(Retrieval Augmented Generation)는 LLM의 구조적 한계를 가장 현실적으로 보완하는 접근입니다. 질문이 들어오면 곧바로 LLM에 던지는 것이 아니라, 먼저 외부 데이터 소스에서 관련 정보를 검색합니다. 그리고 그 검색 결과를 LLM의 입력으로 함께 제공해, 모델이 근거를 읽고 요약·생성하도록 만듭니다.

Retrieval-augmented generation is a technique that enables large language models to retrieve and incorporate new information from external data sources.



이 방식의 핵심 가치는 두 가지입니다. 첫째, 할루시네이션을 크게 줄일 수 있다는 점입니다. 모델이 스스로 지어내는 대신, 실제 문서를 근거로 응답을 생성하기 때문입니다. 둘째, 외부 데이터와 최신 문맥을 활용할 수 있다는 점입니다. 이를 통해 LLM은 학습 시점에 고정되지 않은 지식을 다룰 수 있게 됩니다. 이러한 이유로 RAG는 단순한 기법을 넘어, 오늘날 LLM 기반 서비스에서 거의 표준에 가까운 아키텍처 패턴으로 자리 잡았습니다. LangChain은 문서 로딩, 임베딩, 벡터 검색, LLM 결합까지 이 흐름을 구성하는 부품들을 표준화해 제공합니다.

  • 실제 문서를 근거로 응답을 생성
  • 외부 데이터와 최신 문맥을 활용



4-2. Agent는 무엇을 바꾸는가

RAG가 LLM의 지식 한계를 보완한다면, Agent는 LLM의 역할 자체를 확장합니다. Agent는 LLM을 단순히 질문에 답하는 존재가 아니라, 목표를 달성하기 위해 행동하는 존재로 바꿉니다. Agent 구조에서는 LLM이 스스로 판단하여 어떤 도구를 사용할지 결정하고, 실행 결과를 해석한 뒤 다음 행동을 선택하는 반복 루프를 수행합니다. 이 과정에서 LLM은 추론과 의사결정을 담당하고, Tool은 실제 세계와 상호작용하는 손과 발의 역할을 합니다. 이 구조가 도입되면 LLM은 단순한 텍스트 생성기를 넘어, 검색·계산·DB 조회·파일 처리 같은 실제 작업을 자동화하는 시스템의 핵심 구성 요소가 됩니다.

즉, Agent는 LLM을 하나의 기능이 아니라 행동 주체로 다루게 만드는 관점의 전환입니다.



4-3. Agent를 구성하는 핵심 요소

Agent가 성립하기 위해서는 몇 가지 필수 구성 요소가 필요합니다.

  • Tools: Agent가 외부 세계와 상호작용하기 위한 행동 수단입니다. 검색 API, 계산기, 데이터베이스 쿼리, 내부 서비스 호출 등이 여기에 포함됩니다. LLM은 Tool을 직접 실행하지 않고, 어떤 Tool을 언제 사용해야 하는지 결정합니다.
  • Messages: LLM과 주고받는 표준화된 메시지 형식입니다. 단순한 텍스트를 넘어서, 역할(system, user, assistant)과 메타데이터를 포함함으로써 대화의 맥락과 의도를 명확하게 유지할 수 있습니다.
  • Memory: 이전 대화나 중간 상태를 저장해, Agent가 연속적인 흐름을 유지하도록 돕습니다. 단기 메모리는 최근 문맥 유지에, 장기 메모리는 사용자나 세션 단위의 기억에 활용됩니다. 이를 통해 LLM은 일회성 응답기가 아니라 상태를 가진 시스템 컴포넌트가 됩니다.



4-4. Structured Output과 Streaming의 중요성

LLM을 실제 시스템에 연결하려면, 응답의 형식과 전달 방식 역시 중요해집니다. Structured Output은 LLM의 응답을 자유 텍스트가 아니라 JSON 등 명확한 스키마 로 제한합니다. 이는 응답을 안정적으로 파싱하고, 후속 시스템과 연계할 때 필수적입니다. 실무에서는 이 기능이 없으면 LLM의 출력을 신뢰하기 어렵습니다. Streaming은 응답을 완성되기 전에 점진적으로 전달함으로써 사용자 체감 속도를 크게 개선합니다.

특히 응답이 긴 경우, 사용자는 결과를 기다리는 대신 즉시 반응을 확인할 수 있는데, 사용자 경험 측면에서 중요한 요소입니다.





5. 정리


LangChain은 LLM을 단순한 텍스트 생성기가 아니라, 외부 지식(RAG)과 행동(Agent)을 결합해 실제 문제를 해결하는 시스템 구성 요소로 만들기 위한 프레임워크입니다. 이를 통해 LLM을 근거를 가지고 판단하고 도구를 사용하며 안정적으로 동작하는 애플리케이션으로 확장할 수 있습니다. 그리고 학습합시다. 🚀


This post is licensed under CC BY 4.0 by the author.

비동기 작업 처리 시, 어떤 ThreadPool 정책을 사용할까?

range 검색과 filesort