Recipes

Base de connaissances RAG

Construire un vector store à partir d'un site de documentation avec batch distill

Transforme n'importe quel site de documentation en base de connaissances RAG interrogeable. Soumets les URLs en lot, attends la fin (ou utilise des Webhooks), puis indexe le Markdown obtenu dans ton vector store.

Flux

  1. Découvre les URLs à ingérer (sitemap, crawl ou liste curatée)
  2. Soumets-les dans une seule tâche /batch/distill
  3. Attends la fin (polling ou Webhook)
  4. Embarque le markdown de chaque résultat dans ton vector store

Implémentation

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"])

Astuces

  • Utilise include: ["metadata"] pour que chaque résultat porte title / description en en-tête de chunk
  • Pour 100+ URLs, préfère les Webhooks au polling — voir Webhooks
  • Relancer sur les mêmes URLs est sans risque ; bypass le cache avec forceRefresh: true si le contenu change souvent

Liens

Cette recette est en cours d'extension avec le câblage vector store (Pinecone / Weaviate / pgvector) — repasse bientôt.