Development Memories

LangChain의 기본 개념과 주요 모듈에 대한 정리

친절한올드보이 2023. 10. 5. 22:22
반응형

요즘 핫한 AI 관련 정보를 찾아보다가 LangChain이라는 단어가 많이 보여서 찾아보면서 정리했던 내용 입니다.

기초적인 사항이라 처음 접하시는 분들에게 추천합니다.

LangChain이란?

  1. OpenAI, Cohere, Boolm, Huggingface등 여러 대형 LLM(Large Language Model)을 이용한 개발을 효율적으로 하기 위한 프레임워크

  1. 공식 사이트
    1. https://docs.langchain.com/docs/
    2. (TypeScript버전) https://js.langchain.com
    3. (python버전) https://python.langchain.com
 

Introduction | 🦜️🔗 Langchain

Introduction LangChain is a framework for developing applications powered by language models. It enables applications that: Are context-aware: connect a language model to other sources of context (prompt instructions, few shot examples, content to ground i

js.langchain.com

 

🦜️🔗 LangChain | 🦜️🔗 LangChain

LangChain is a framework for developing applications powered by language models.

docs.langchain.com

 

🦜️🔗 Langchain

 

python.langchain.com


LangChain 모듈

 

1. Model I/O

  1. 다양한 LLM을 동일한 I/F에서 처리하기 위한 빌딩 블록을 제공
  2. LLMs(Large Language Models)
    1. 대량의 텍스트 데이터를 자연스러운 언어로 처리하는 모델
  3. Chat Models
    1. 내부적으로는 언어 모델을 사용하지만 외부적으로는 채팅 모델에 사용하기 편한 인터페이스를 제공
  4. Embedding Models
    1. 텍스트 데이터를 벡터(floats) 형태의 수치로 변경하는 모델


 

2. Prompt

  1. 프롬프트 관리, 최적화 및 직렬화 기능, 응답을 생성하기 위한 문장등의 모델에 전달되는 내용
  2. Prompt Templates
    1. 형식화되어 있는 지시문
    2. 템플릿에 임의의 변수가 정의 되어 형식화된 지시문에 따라 동적으로 프롬프트를 생성
  3. Example Selectors
    1. 프롬프트에서 상황에 맞는 정보를 예제중에 선택하게 제공
  4. Output Parser
    1. LLM의 응답을 구조화 할 수 있게 제공(일반적으로 JSON사용)


3. Retrieval (Data Connection)

  1. LLM가 외부 데이터 기반으로 답변을 가져올수 있도록 인터페이스 제공
    1. Document Loaders
      1. 여러 문서에서 데이터를 가져올수 있게 제공
    2. Document transformers
      1. 읽은 데이터 세트를 관리하기 쉬운 단위로 분할 하거나 언어모델의 문장 이해를 돕는 데이터로 가공하는 가능
      2. 큰 문서를 작게 chunk화 시킴
    3. Vector Stores
      1. 텍스트를 임베디드(벡터화) 시킨 데이터를 저장/관리/검색을 지원하는 저장소
    4. Retievers
      1. 데이터를 문서화 시켜 LLM와 연동 할수 있게 제공Retrieval (Data connection)


3. Memory

  1. LLM을 이용해 데이터를 저장하고 검색할수 있게 제공
  2. Chat Message
    1. 사용자와 AI간의 채팅 데이터를 메모리에 저장


 

4. Chain

  1. 체인을 연결하여 응답 처리를 연속적으로 실행할수 있도록 연결하는 기능
  2. 체인의 최소 단위는 프롬프트와 LLM 기반으로 구성
  3. LLM Chains
    1. 가장 일반적인 체인 유형(프롬프트 + LLM)
  4. Sequential Chain
    1. 앞 체인의 응답이 다음 체인의 질문이 되는 순차적인 체인 유형
  5. Router Chain
    1. 질문에 대해 주제에 맞는 체인별로 라우팅을 하는 체인 유형
    2. 복잡한 질문에 사용됨

 


 

 5. Agents

  1. Agent
    1. 프롬프트의 내용에 근거해서 어떠한 툴을 이용해서 어떤 LLM으로 어떤 액션을 취해야 하는지 판단해 주는 기능
  2. Tools
    1. 에이전트가 외부 리소스에 연결하기 위한 권한, 방법을 제공하기 위한 기능
  3. Toolkits
    1. 3~5개의 Tool들을 세트화 시킨 킷
  4. AgentExecutor
    1. 에이전트를 호출하고 실행시키기 위한 기능