LangChain

악음·2023년 7월 21일
0

langChain

목록 보기
1/1

langChain란?

  • 프래임워크이다 => 즉 chatGPT를 쉽게 사용하기 위한 툴이
    • 다른 언어모델(아마 chatGTP말고 다른 AI)을 차용해서 사용가능하다
    • Be agentic : 언어모델이 환경(아마 사용자가 설정한 환경(env 라던지 파라미터라던지))상호작용하도록 허용한다.

langChain의 두가지 중요한 프로퍼티

  1. Be data-aware : 언어 모델과 상효작용하는데 필요한 구성요소에 모듈식 추상화를 제공 => 유저가 어떤 목표를 이루기위한 기능들 모음
  2. 특정 목표를 위한 구성요소를 조립한 코드들 을 제공해준다 이를 통해 응용하거나 혼합해서 상용 할 수 있을것

Components

Schema

  • TEXT : 언어와 상호작용 할수 있는 기본 인터페이스인 텍스트 랭체인의 만은 기능은 텍스트 중신
  • chattingMessage : AI 와 상호작용해야하는 채팅 인터페이스 채팅 매새지는 3가지 종류가 있다
  • example : 모델 or 체인에 대한 입력/출력 일수있다 모델 훈련과 평가에 사용할수있다
    • 모델에 대한 예시는 : 모델을 미세조정하는데 쓰일수있고
    • 체인에 대한 예제는 앤드 투 엔드 첸이을 평가하거나 전체 체인을 대체하도록 모델을 학습시킨다.
  • document : 구조화 되지 않은 데이터 조각 데이터의 내용 데이터의 속성을 설명하는 보조 정보

Models

  • language Model : 언어 모델은 텍스트를 입력으로 사용하고 텍스트 출력으로 반환(언어모델을 아무거나 쓸수있단는뜻인듯?)
  • chat model : 채팅 모델은 chatMessage 목록을 입력으로 사용하고 chatMessage를 반환함.
  • text embedding model : 텍스트 임베딩 모델은 텍스트를 입력으로 받아 해당 텍스트를 플로트 목록의 형태로 수치로 표현합니다.(텍스트 배열인가..(?))

Prompts

  • 프롬프트는 기본 모델에 전달되는 내용(이미지 오디오는 아직 미지원)
  • 문자열 조합을 기반으로 동적으로 생성하고 promptValue생성을 담당하는 개체를 prompTemplate라고 함 =>입력변수를 받아 prompValue를 반환함
  • example Seletors : 프롬프트에 예제를 포함하는것이가능하다. 동적으로 선택하는 경우 더 강력하다
  • output parser : 언어 모델 응답을 구조화하는 클래스

Indexes

  • LLM이 문서와 잘 상호 작용할 수 있도록 문서를 구조화하는 방법
  • 이러한 구조화된 문서를 사용하는 방법은 검색단계 => 사용자의 쿼리를 받고 가장 관련성 높은 문서를 반환함
    • 인덱스는 검색 이외의 다른 용도로도 사용할 수 있고
    • 검색은 색인 외에 다른 로직을 사용하여 관련 문서를 찾을 수 있습니다. 따라서 대부분의 체인이 사용하는 '리트리버' 인터페이스라는 개념이 있습니다.
  • indexes는 구조화되지 않은 데이터의 색인 및 검색에 대한것
  1. document loader : 문서로더
  2. TextSplitters : 큰 문서를 더 작은 단위로 분할하는 것
  3. Retriever : 언어 모델에서 쿼리를 할 수 있도록 데이터를 저장하는 방법
  4. Vectorstore : 가장 일반적인 인덱스 유형은 각 문서에 대해 숫자 임베딩(임베딩 모델 사용)을 생성하는 인덱스입니다. 벡터스토어는 문서와 관련 임베딩을 저장하고, 임베딩별로 관련 문서를 빠르게 조회할 수 있는 방법을 제공합니다.(아마 특정 문서를 빠르게 조회할때 지정하는 store인것같다)

Memory

대화 기록을 저장하고 검색하는 기능
입력에 따라 관련된 데이터를 가져오거나 입력/출력에 따라 상태를 업데이트 한다.
단기 메모리 : 대화 단락에서 데이터를 전달
장기 매모리 : 대화 사이에서 정보를 가져오고 업데이트함.

Chains

-- 직접 코드를 짜봐야 알것같다..

Agents

-- 직접 코드를 짜봐야 알것같다..

profile
RN/react.js개발자이며 배운것들을 제가 보기위해서 정리하기 때문에 비속어 오타가 있을수있습니다.

0개의 댓글