자연어처리/Langchain

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

Suda_777 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 사용법에 대해 정리하겠습니다.

반응형