프로그래밍/AI 기술

랭체인(LangChain) 맛 보기(기초)

재우니 2024. 11. 5. 12:18

 

 

 

랭체인(LangChain)은 대규모 언어 모델(LLM)을 활용해 쉽게 애플리케이션을 만들 수 있도록 도와주는 도구입니다. LLM을 사용하면 GPT-4나 다른 AI 모델을 이용해 자연어로 대화를 하거나 데이터를 분석할 수 있습니다. 랭체인은 이런 LLM을 애플리케이션과 연결하는 작업을 훨씬 더 쉽게 만들어 줍니다.

랭체인의 주요 기능을 쉽게 설명하면:

  1. 데이터 소스 통합:
    • LLM이 이해할 수 있도록 데이터를 가져오는 역할을 합니다. 예를 들어, PDF 파일, 웹 페이지, 데이터베이스 등에 저장된 정보를 LLM에 바로 전달할 수 있도록 합니다. 쉽게 말해, LLM이 필요한 정보를 적재적소에서 찾아올 수 있게 돕는 기능이죠.
  2. 단어 임베딩과 벡터 데이터베이스:
    • LLM은 단어와 문장을 이해할 때, 이를 숫자로 변환하는데 이를 단어 임베딩이라고 합니다. 랭체인은 데이터를 임베딩으로 변환한 뒤, 검색이 용이하도록 벡터 데이터베이스에 저장합니다. 이렇게 하면 LLM이 기존 데이터를 효과적으로 검색하고 유사성을 찾아낼 수 있게 됩니다.
  3. 여러 LLM과의 연결:
    • 랭체인은 OpenAI, AI21, Cohere 같은 여러 회사에서 제공하는 AI 모델을 지원하여, 필요에 따라 모델을 자유롭게 교체하거나 동시에 사용할 수 있습니다. 이 덕분에 한 가지 모델에만 의존하지 않아도 됩니다.
  4. 에이전트:
    • 에이전트는 일종의 AI 비서 역할을 합니다. 예를 들어, 사용자가 질문을 하면, AI가 어떤 순서로 일을 처리할지 결정하도록 돕습니다. 이런 방식으로 AI가 복잡한 작업을 다루고, 여러 작업을 연속적으로 수행하게 할 수 있습니다.
  5. 메모리 관리:
    • 기본적으로 LLM은 대화 내용을 기억하지 못합니다. 예를 들어, 이전 대화 내용을 기억해서 다음 대화에 활용할 수 있는 능력이 부족한데요. 랭체인은 이를 해결하기 위해 단기 및 장기 메모리 기능을 제공하여 대화의 흐름을 유지하도록 돕습니다. 쉽게 말해, LLM이 "기억력"을 갖추게 하는 기능이죠.
  6. 콜백과 체인:
    • 콜백은 특정 이벤트가 발생했을 때 실행되는 기능입니다. 이를 통해 AI가 실시간으로 데이터를 기록하거나 반응하게 할 수 있죠.
    • 체인은 여러 작업을 연결하는 것으로, 예를 들어 질문에 대한 답을 요약한 뒤 감정 분석을 수행하는 등의 복잡한 프로세스를 효율적으로 처리할 수 있도록 도와줍니다.

요약하자면:

랭체인은 LLM을 통해 더 똑똑하고 유연한 AI 애플리케이션을 만들 수 있게 도와주는 도구입니다. 이를 통해 개발자는 LLM을 쉽게 연결하고 관리할 수 있으며, 데이터를 효과적으로 가져오고, AI가 필요한 정보를 기억하도록 하여 AI 앱을 더 효율적으로 사용할 수 있게 만듭니다.


랭체인을 활용한 사용 사례와 예시를 살펴보면, 어떻게 AI 모델과 애플리케이션을 연결하고 다양한 기능을 수행할 수 있는지 알 수 있습니다. 여기 몇 가지 대표적인 예시를 정리해 보았습니다.

1. 고객 지원 챗봇

  • 목적: 고객의 질문에 신속하고 정확하게 답변하는 챗봇을 만드는 것
  • 방법:
    1. 데이터 소스 통합: 제품 설명서나 FAQ 같은 자료를 PDF나 웹에서 불러와서 고객의 질문에 답할 수 있는 정보로 준비합니다.
    2. 메모리 모듈 사용: 챗봇이 대화를 이어갈 때 고객의 이전 질문을 기억하도록 하여, 자연스럽고 일관된 대화가 가능합니다.
    3. 에이전트 모듈: 고객 질문을 분석해, ‘결제 문제’, ‘환불 절차’, ‘기술 지원’ 등 여러 주제별로 적절한 답변을 제공합니다.

2. 문서 분석 및 요약

  • 목적: 긴 문서나 기사, 보고서 등을 빠르게 요약하여 핵심 내용을 추출하는 것
  • 방법:
    1. 데이터 소스 통합: 웹에서 기사를 가져오거나, 데이터베이스에서 보고서를 불러옵니다.
    2. 체인 활용: 문서의 주요 내용을 요약한 뒤, 중요한 포인트를 강조하거나 특정 부분에 대한 감정 분석을 추가합니다.
    3. 단어 임베딩과 벡터 데이터베이스: 요약된 데이터를 벡터 데이터베이스에 저장해, 이후에 관련된 문서를 쉽게 검색할 수 있게 합니다.

3. 연구 논문 검색 및 요약 도우미

  • 목적: 연구자가 특정 주제에 관련된 논문을 쉽게 검색하고 요약된 정보를 얻도록 하는 것
  • 방법:
    1. 데이터 소스 통합: 온라인 학술 데이터베이스에서 논문 정보를 가져옵니다.
    2. 단어 임베딩: 논문의 주제나 요약을 벡터 형태로 저장해, 사용자가 유사한 주제의 논문을 검색할 때 유사도를 기반으로 결과를 추천합니다.
    3. 체인 기능: 사용자가 원하는 주제에 맞춰 논문의 주요 내용을 요약하고, 연구 주제에 따라 중요한 키워드들을 자동으로 추출합니다.

4. 의료 상담 지원 도구

  • 목적: 의료 상담 과정에서 의사들이 환자의 증상과 관련된 정보를 빠르게 검색하고 요약하는 데 도움을 줌
  • 방법:
    1. 에이전트: 환자의 증상이나 요청에 따라 다양한 의료 정보를 검색하고 관련 자료를 제공합니다.
    2. 메모리 기능: 이전 상담 내용을 기억해, 환자와의 일관된 상담 기록을 유지합니다.
    3. 콜백 기능: 환자와의 대화 내용이나 중요한 정보를 로깅해, 이후의 데이터 분석이나 상담 기록으로 활용합니다.

5. 이커머스 추천 시스템

  • 목적: 고객의 취향을 분석해 관련 제품을 추천하는 것
  • 방법:
    1. 단어 임베딩과 벡터 데이터베이스: 고객의 구매 이력이나 관심 상품을 벡터로 변환하여, 유사한 제품을 벡터 데이터베이스에서 빠르게 검색합니다.
    2. 체인과 메모리: 고객의 이전 쇼핑 기록을 기반으로, 실시간으로 관심 있는 제품을 분석해 맞춤 추천을 제공합니다.

이처럼 랭체인은 고객 지원, 데이터 분석, 연구, 의료, 이커머스 등 다양한 분야에서 활용할 수 있습니다. 데이터 연결, 문서 검색, 기억 기능 등 다채로운 기능을 통해 AI가 실용적으로 활용되며, 개발자는 여러 가지 기능을 쉽게 연결해 사용할 수 있습니다.


 

 

개발자 입장에서 랭체인을 시작할 수 있는 간단한 예시를 몇 가지 소개해 드릴게요. 이 예시들은 랭체인의 주요 기능을 이해하고 간단한 코드로 실습할 수 있도록 구성되었습니다.

 

1. 간단한 문서 요약기 만들기

  • 목표: 텍스트 문서의 주요 내용을 요약하는 애플리케이션을 만들기
  • 예시 코드:
    from langchain import TextSummarization
    
    # 요약할 문서 텍스트
    document_text = "OpenAI는 언어 모델을 통해 다양한 업무를 지원하는 AI 시스템을 제공하고 있습니다..."
    
    # 요약 모듈 초기화 및 요약 수행
    summarizer = TextSummarization()
    summary = summarizer.summarize(document_text)
    
    print("요약 결과:", summary)
  • 설명: TextSummarization 모듈을 사용하여 긴 문서를 요약할 수 있습니다. 이 코드는 단순히 문서를 입력하고 요약 결과를 출력합니다. 이렇게 단순한 예시를 통해 랭체인의 기본 기능을 이해할 수 있습니다.

2. 간단한 질문 답변 챗봇

  • 목표: 주어진 문서에서 사용자의 질문에 대해 답을 제공하는 챗봇 만들기
  • 예시 코드:
    from langchain import QnAChatbot
    
    # 기본 문서
    document_text = """
    랭체인은 대규모 언어 모델과 애플리케이션을 쉽게 통합할 수 있도록 도와줍니다.
    이를 통해 데이터베이스나 외부 데이터 소스에서 정보를 가져와 사용자가 질문할 때마다 유용한 답변을 제공할 수 있습니다.
    """
    
    # Q&A 챗봇 생성
    chatbot = QnAChatbot(document=document_text)
    
    # 질문에 답변
    question = "랭체인이 하는 역할이 뭐야?"
    answer = chatbot.answer(question)
    
    print("질문:", question)
    print("답변:", answer)
  •  
  • 설명: QnAChatbot 모듈을 사용해 특정 주제나 문서에서 질문에 답변하는 챗봇을 구성할 수 있습니다. 질문에 맞는 답변을 찾아주는 이 간단한 챗봇을 통해 Q&A 시스템을 구축할 수 있습니다.

 

3. 추천 시스템 만들기

  • 목표: 사용자의 선호도에 따라 비슷한 항목을 추천하는 시스템을 구현하기
  • 예시 코드:
    from langchain import RecommendationSystem
    
    # 사용자가 좋아하는 항목 목록
    user_preferences = ["데이터 분석", "인공지능", "머신러닝"]
    
    # 추천 시스템 초기화
    recommender = RecommendationSystem()
    
    # 추천 항목 생성
    recommendations = recommender.recommend(user_preferences)
    
    print("추천 결과:", recommendations)

     
  •  설명: RecommendationSystem 모듈을 사용해 사용자의 선호도에 따라 비슷한 주제나 항목을 추천할 수 있습니다. 추천 시스템의 기초 개념을 이해할 수 있으며, 이를 통해 개인화된 추천 기능을 쉽게 구현해볼 수 있습니다.

 

 

4. 에이전트를 사용해 대화 흐름 만들기

  • 목표: 에이전트를 사용해 사용자의 요청을 분석하고 필요한 정보를 제공하는 챗봇 구축
  • 예시 코드:
    from langchain import Agent
    
    # 에이전트 생성
    agent = Agent()
    
    # 사용자 입력을 기반으로 응답 생성
    user_input = "오늘 날씨 알려줘"
    response = agent.handle(user_input)
    
    print("사용자 질문:", user_input)
    print("에이전트 응답:", response)
  • 설명: Agent 모듈을 사용하면 사용자의 질문을 이해하고 적절한 답변을 제공하는 대화형 에이전트를 만들 수 있습니다. 사용자가 입력한 질문을 분석해 에이전트가 답변을 생성하는 과정을 실습할 수 있습니다.

 

이와 같은 간단한 예시들을 통해 랭체인의 다양한 기능을 경험해보고, 실습을 통해 LLM 기반의 애플리케이션을 구축하는 감각을 익힐 수 있습니다. 각 예시에서 제공되는 모듈을 사용해 더 다양한 기능을 추가하면서 점차 복잡한 애플리케이션으로 확장해 볼 수 있습니다.

 

 

아래는 랭체인 활용 예시에 대한 출처 제목과 링크입니다.

  1. 문서 기반 질의응답 시스템 구축
    https://teddylee777.github.io/langchain/rag-tutorial/
  2. 챗봇 개발
    https://github.com/teddylee777/langchain-kr
  3. 데이터 분석 및 요약
    https://teddylee777.github.io/langchain/langchain-tutorial-01/

위의 링크들을 통해 랭체인에 대한 다양한 예시와 튜토리얼을 확인하실 수 있습니다.

 

 

https://www.samsungsds.com/kr/insights/what-is-langchain.html

 

랭체인(LangChain)이란 무엇인가? | 인사이트리포트 | 삼성SDS

랭체인(LangChain)은 노출하여 대규모 언어 모델과 애플리케이션의 통합을 간소화하는 SDK입니다. 대규모 언어 모델의 부상과 함께 중요성이 커지고 있다. 대규모 언어 모델에 대한 최신 트렌드를

www.samsungsds.com

 

https://www.instagram.com/p/C0iNKXxSyAa