Airbyte는 API, 데이터베이스 및 파일에서 웨어하우스 및 레이크로 데이터를 전송하는 ELT 파이프라인을 위한 데이터 통합 플랫폼입니다. 데이터 웨어하우스 및 데이터베이스에 대한 가장 큰 ELT 커넥터 카탈로그를 보유하고 있습니다.
이 문서는 Airbyte의 모든 소스를 LangChain document로 로드하는 방법을 다룹니다.

Installation

AirbyteLoader를 사용하려면 langchain-airbyte 통합 패키지를 설치해야 합니다.
pip install -qU langchain-airbyte
참고: 현재 airbyte 라이브러리는 Pydantic v2를 지원하지 않습니다. 이 패키지를 사용하려면 Pydantic v1로 다운그레이드하세요. 참고: 이 패키지는 현재 Python 3.10 이상이 필요합니다.

Loading Documents

기본적으로 AirbyteLoader는 스트림에서 구조화된 데이터를 로드하고 yaml 형식의 document를 출력합니다.
from langchain_airbyte import AirbyteLoader

loader = AirbyteLoader(
    source="source-faker",
    stream="users",
    config={"count": 10},
)
docs = loader.load()
print(docs[0].page_content[:500])
\`\`\`yaml
academic_degree: PhD
address:
  city: Lauderdale Lakes
  country_code: FI
  postal_code: '75466'
  province: New Jersey
  state: Hawaii
  street_name: Stoneyford
  street_number: '1112'
age: 44
blood_type: "O\u2212"
created_at: '2004-04-02T13:05:27+00:00'
email: [email protected]
gender: Fluid
height: '1.62'
id: 1
language: Belarusian
name: Moses
nationality: Dutch
occupation: Track Worker
telephone: 1-467-194-2318
title: M.Sc.Tech.
updated_at: '2024-02-27T16:41:01+00:00'
weight: 6
document 형식을 지정하기 위해 사용자 정의 prompt template을 지정할 수도 있습니다:
from langchain_core.prompts import PromptTemplate

loader_templated = AirbyteLoader(
    source="source-faker",
    stream="users",
    config={"count": 10},
    template=PromptTemplate.from_template(
        "My name is {name} and I am {height} meters tall."
    ),
)
docs_templated = loader_templated.load()
print(docs_templated[0].page_content)
My name is Verdie and I am 1.73 meters tall.

Lazy Loading Documents

AirbyteLoader의 강력한 기능 중 하나는 업스트림 소스에서 대용량 document를 로드할 수 있는 능력입니다. 대규모 데이터셋으로 작업할 때 기본 .load() 동작은 느리고 메모리 집약적일 수 있습니다. 이를 방지하려면 .lazy_load() 메서드를 사용하여 보다 메모리 효율적인 방식으로 document를 로드할 수 있습니다.
import time

loader = AirbyteLoader(
    source="source-faker",
    stream="users",
    config={"count": 3},
    template=PromptTemplate.from_template(
        "My name is {name} and I am {height} meters tall."
    ),
)

start_time = time.time()
my_iterator = loader.lazy_load()
print(
    f"Just calling lazy load is quick! This took {time.time() - start_time:.4f} seconds"
)
Just calling lazy load is quick! This took 0.0001 seconds
그리고 document가 생성되는 대로 반복할 수 있습니다:
for doc in my_iterator:
    print(doc.page_content)
My name is Andera and I am 1.91 meters tall.
My name is Jody and I am 1.85 meters tall.
My name is Zonia and I am 1.53 meters tall.
.alazy_load()를 사용하여 비동기 방식으로 document를 lazy load할 수도 있습니다:
loader = AirbyteLoader(
    source="source-faker",
    stream="users",
    config={"count": 3},
    template=PromptTemplate.from_template(
        "My name is {name} and I am {height} meters tall."
    ),
)

my_async_iterator = loader.alazy_load()

async for doc in my_async_iterator:
    print(doc.page_content)
My name is Carmelina and I am 1.74 meters tall.
My name is Ali and I am 1.90 meters tall.
My name is Rochell and I am 1.83 meters tall.

Configuration

AirbyteLoader는 다음 옵션으로 구성할 수 있습니다:
  • source (str, 필수): 로드할 Airbyte 소스의 이름
  • stream (str, 필수): 로드할 스트림의 이름 (Airbyte 소스는 여러 스트림을 반환할 수 있음)
  • config (dict, 필수): Airbyte 소스에 대한 구성
  • template (PromptTemplate, 선택): document 형식을 지정하기 위한 사용자 정의 prompt template
  • include_metadata (bool, 선택, 기본값 True): 출력 document에 모든 필드를 metadata로 포함할지 여부
대부분의 구성은 config에 있으며, Airbyte 문서에서 각 소스에 대한 “Config field reference”에서 특정 구성 옵션을 찾을 수 있습니다.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I