Recipes
RAG ナレッジベース
batch distill を使ってドキュメントサイトからベクトルストアを構築する
任意のドキュメントサイトを検索可能な RAG ナレッジベースに変換します。URL をバッチで送信し、完了までポーリング(または Webhook を使用)してから、生成された Markdown をベクトルストアにインデックス化します。
フロー
- 取り込む URL を発見する(sitemap、クロール、またはキュレーション済みリスト)
- 単一の
/batch/distillジョブで送信する - 完了を待つ(ポーリングまたは Webhook)
- 各結果の
markdownを埋め込みベクトルにしてベクトルストアに格納する
実装
import httpx, time
API = "https://openapi.thunderbit.com/openapi/v1"
H = {"Authorization": "Bearer YOUR_API_KEY"}
urls = [f"https://docs.example.com/page-{i}" for i in range(50)]
job = httpx.post(f"{API}/batch/distill",
headers=H,
json={"urls": urls, "include": ["metadata"]}).json()
batch_id = job["data"]["id"]
while True:
status = httpx.get(f"{API}/batch/distill/{batch_id}", headers=H).json()["data"]
if status["status"] in ("COMPLETED", "FAILED", "CANCELLED"):
break
time.sleep(10)
for r in status["results"]:
if r["status"] == "SUCCEEDED":
embed_and_store(r["url"], r["markdown"])ヒント
include: ["metadata"]を使用すると、各結果に title / description が付与され、チャンクヘッダーに利用できます- 100 件以上の URL ではポーリングよりも Webhook を推奨 —— Webhook を参照
- 同じ URL に対する再実行は問題ありません。コンテンツが頻繁に変わる場合は
forceRefresh: trueでキャッシュをバイパスしてください
関連
このレシピは現在ベクトルストア連携(Pinecone / Weaviate / pgvector)を追加して拡張中です —— 近日中にご確認ください。