4️⃣Chains

LangChain: Chains

import os
from dotenv import load_dotenv  

load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")

Generic Chain

1. LLMChain

2. SimpleSequentialChain

3. SequentialChain

Index Chain

인덱스는 LLM이 문서와 가장 잘 상호작용할 수 있도록 문서를 구조화하는 방법을 말합니다. 이 모듈에는 문서 작업을 위한 유틸리티 함수, 다양한 유형의 인덱스, 그리고 이러한 인덱스를 체인에서 사용하는 예시가 포함되어 있습니다.

인덱스가 체인에서 사용되는 가장 일반적인 방법은 ‘검색’ 단계입니다. 이 단계는 사용자의 쿼리를 받아 가장 관련성이 높은 문서를 반환하는 것을 말합니다. 이렇게 구분하는 이유는 (1) 인덱스는 검색 외에 다른 용도로도 사용될 수 있고, (2) 검색은 인덱스 외에 다른 로직을 사용하여 관련 문서를 찾을 수 있기 때문입니다. 따라서 우리는 “검색” 인터페이스라는 개념을 가지고 있으며, 이것이 대부분의 체인이 사용하는 인터페이스입니다.

인덱스와 검색에 대해 이야기할 때는 대부분 텍스트 문서와 같은 비정형 데이터의 인덱싱과 검색에 대해 이야기합니다. 현재 LangChain에서 지원하는 주요 인덱스 및 검색 유형은 벡터 데이터베이스를 중심으로 하고 있으며, 따라서 많은 기능들이 해당 주제에 대해 자세히 다루고 있습니다.

  • 문서 로더(Document Loaders): 다양한 소스에서 문서 로드 작업을 담당하는 클래스입니다.

    • unstructuredarrow-up-right 패키지를 사용하여 텍스트, 파워포인트, 이미지, HTML, PDF 등 모든 유형의 파일을 텍스트 데이터로 변환할 수 있습니다.

  • 텍스트 분할기(Text Splitters): 텍스트를 더 작은 청크로 분할하는 작업을 담당하는 클래스입니다.

    • 언어 모델이 큰 텍스트를 잘 처리하기 위해서는 해당 텍스트를 더 작은 조각으로 나누어야 합니다.

    • 의미론적으로 관련된 텍스트 조각을 함께 유지해야 합니다.

    • 여기서 "의미론적으로 관련된"이 의미하는 바는 텍스트의 종류에 따라 다를 수 있기 때문에 이에 관한 분할/결합/생성 등이 이뤄져야 합니다.

  • 벡터 저장소(VectorStores): 입력 텍스트를 임베딩을 통해 벡터를 생성하고, 생성된 벡터를 저장/관리/검색할 수 있는 기능을 제공하는 저장소입니다.

    • 가장 일반적인 인덱스 타입은 각 문서에 대해 숫자 임베딩(임베딩 모델 사용)을 생성하는 타입입니다.

    • 임베딩 별로 관련 문서를 빠르게 조회할 수 있고 유사도 검색이 가능합니다.

  • 검색기(Retrievers): 언어 모델과 결합할 관련 문서를 가져오기 위한 인터페이스입니다.

    • 문자열을 받아 문서 목록을 반환하는 get_relevant_documents 메서드를 제공합니다.

4. RetrievalQA

5. RetrievalQAWithSourcesChain

6. SummarizeChain

Utility Chain

일반적으로 매우 좁은 목적으로 LLM에서 특정 답변을 추출하는 데 사용

7. OpenAIModerationChain

API와 상호 작용하도록 설계되었으며 OpenAPI 엔드포인트에서 쉽게 사용할 수 있도록 최적화

Last updated