跳到主要內容
Open In ColabOpen on GitHub

AirbyteLoader

Airbyte 是一個資料整合平台,適用於從 API、資料庫和檔案到資料倉儲和資料湖的 ELT 管道。它擁有最大的 ELT 連接器目錄,可連接到資料倉儲和資料庫。

本文介紹如何將 Airbyte 的任何來源載入到 LangChain 文件中

安裝

為了使用 AirbyteLoader,您需要安裝 langchain-airbyte 整合套件。

%pip install -qU langchain-airbyte

注意:目前,airbyte 函式庫不支援 Pydantic v2。請降級至 Pydantic v1 以使用此套件。

注意:此套件目前也需要 Python 3.10+。

載入文件

預設情況下,AirbyteLoader 將從串流載入任何結構化資料,並輸出 yaml 格式的文件。

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: bread2099+1@outlook.com
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

您也可以指定自訂提示範本以格式化文件

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)
API 參考文件:PromptTemplate
My name is Verdie and I am 1.73 meters tall.

延遲載入文件

AirbyteLoader 的強大功能之一是能夠從上游來源載入大型文件。當處理大型資料集時,預設的 .load() 行為可能會很慢且耗費大量記憶體。為了避免這種情況,您可以使用 .lazy_load() 方法以更節省記憶體的方式載入文件。

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

而且您可以迭代處理產生的文件

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() 以非同步方式延遲載入文件

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.

設定

AirbyteLoader 可以使用以下選項進行設定

  • source (str, 必要):要從中載入的 Airbyte 來源名稱。
  • stream (str, 必要):要從中載入的串流名稱(Airbyte 來源可以傳回多個串流)
  • config (dict, 必要):Airbyte 來源的設定
  • template (PromptTemplate, 選用):用於格式化文件的自訂提示範本
  • include_metadata (bool, 選用,預設為 True):是否在輸出文件中包含所有欄位作為元數據

大部分設定將在 config 中,您可以在 Airbyte 文件 中每個來源的「Config field reference」中找到特定的設定選項。


此頁面是否對您有幫助?