인공지능 개발자 수다(유튜브 바로가기) 자세히보기

자연어처리

[LangChain] 랭체인이란 무엇인가

Suya_03 2024. 4. 30. 01:47

목차

    반응형

    참고자료: LangChain docs (링크), 공식홈페이지

     

    LangChain은 자연어 처리(NLP)를 위한 툴과 서비스를 개발 및 통합하기 위한 프레임워크를 제공하는 오픈 소스 라이브러리입니다. 양한 NLP 모델과 툴을 쉽게 사용할 수 있도록 설계되었으며, 특히 대화형 AI, 번역, 요약 등과 같은 응용 프로그램을 구축할 때 유용합니다.

    1. 주요 기능

    • 모델 통합: 다양한 언어 모델을 하나의 통합된 인터페이스를 통해 손쉽게 접근하고 사용할 수 있습니다.
    • 대화 관리: 사용자와의 상호작용을 관리하고 최적의 대답을 생성하기 위한 로직을 포함합니다.
    • 모듈화: 필요에 따라 커스텀 모듈을 추가하거나 기존 모듈을 변경하여 특정 작업에 맞게 조정할 수 있습니다.
    • 툴 연동: 외부 데이터베이스, API 등 다양한 외부 자원과의 연동을 지원하여 보다 풍부한 기능을 구현할 수 있습니다.

    [중요 개념]

    RAG(Retrieval-Augmented Generation)

    • Retrieval: 정보 검색
    • Augmented Generation: 내용 생성

    정보 검색을 통해 관련 데이터를 찾아내고, 이를 바탕으로 텍스트 생성 모델을 통해 응답을 생성합니다.

    2. 장점

    • 다양한 언어 모델 지원
    • 대화 관리 기능
    • 유연성과 확장성: 언어모델과 외부 시스템과의 연동 지원

    >>>>> 빠른 개발속도

    3. 구성

    • Language Model Wrappers: 다양한 언어 모델(GPT, BERT 등)을 통합하여 사용할 수 있도록 하는 래퍼(wrapper)들입니다. 이를 통해 개발자는 다른 API를 사용하지 않고도 다양한 모델을 쉽게 사용하고 교체할 수 있습니다.
    • Chains: 대화 관리와 결정 로직을 처리하는 핵심 컴포넌트입니다. Chains는 사용자 입력을 받아서 처리하고, 적절한 대화 흐름을 유지하며 응답을 생성합니다. 여기에는 여러 하위 모듈이 포함될 수 있으며, 이를 통해 복잡한 대화 시나리오를 관리할 수 있습니다.
    • Components: 특정 기능을 수행하는 모듈입니다. 예를 들어, 정보 검색, 사용자 입력 해석, 응답 생성 등을 담당합니다. 이러한 컴포넌트들은 재사용 가능하며, 쉽게 추가하거나 교체할 수 있어 개발자가 필요에 따라 맞춤형 솔루션을 구성할 수 있습니다.
    • Connectors: 외부 시스템과의 연동을 관리하는 구성 요소입니다. 데이터베이스, API, 파일 시스템 등 다양한 외부 자원과의 통신을 가능하게 하며, 이를 통해 애플리케이션이 더 많은 정보를 활용하고 더 정확한 응답을 제공할 수 있도록 돕습니다.
    • Context Management: 사용자와의 대화에서 컨텍스트(상황에 따른 정보)를 관리하는 기능입니다. 이는 대화가 자연스럽게 이어지도록 하며, 사용자의 이전 입력이나 상황에 따라 최적의 응답을 생성할 수 있게 합니다.
    • Configuration and Deployment Tools: LangChain 애플리케이션을 구성하고 배포하는 데 사용되는 도구들입니다. 이를 통해 개발 환경 설정, 테스트, 배포 등이 용이해지며, 클라우드 환경이나 서버에서의 실행을 관리할 수 있습니다.

    4. 예시 코드

    설치는 아주 간단하다!

    • pip 설치
    pip install langchain

     

    • conda 설치
    conda install langchain -c conda-forge

     

    4.1. Language Model Wrappers

    먼저 Ollama를 설치하고 실행해야 합니다. (링크)

    Ollama 실행을 완료했으면 Llama2 모델을 사용해 봅시다.

    아주 간단하게 불러올 수 있어요!

    from langchain_community.llms import Ollama
    
    # 모델 레퍼 생성
    llm = Ollama(model="llama2")
    
    # 텍스트 생성
    llm.invoke("how can langsmith help with testing?")

    4.2. Chains

    이건 다음 페이지에서...

    4.3. Connectors

    데이터베이스를 연결하는건 봐줘야겠죠?

    아주 간단합니다....

    from langchain_community.utilities import SQLDatabase
    
    db = SQLDatabase.from_uri("sqlite:///Chinook.db")
    print(db.dialect)
    print(db.get_usable_table_names())
    db.run("SELECT * FROM Artist LIMIT 10;")

     

    음... 그런데 코드를 보고 나니, sqlalchemy를 사용하는게 훨씬 깔끔한 코드가 될 것 같네...

    실제 프로젝트에서 사용한다면, 코드가 엉망이 될지도;;

    5. 언제 사용하는가?

    랭체인은 언어 모델 기반의 애플리케이션을 개발

    6. 개발 방법

    • 웹 프레임워크와 통합
      • FastAPI, Django 등과 함께 사용
    • 클라우드 통합

    7. 추가 설명

    'LangSmith'는 LLM 애플리케이션의 성능을 모니터링하고 디버그하는 데 도움이 되는 대시보드

     

     

    다음 글에서는

    lanchain 사용법에 대해 정리하겠습니다.

    반응형