Stacks IA
Ingestion de données web pour LlamaIndex avec Piloterr
Chargez du contenu web en direct dans les pipelines LlamaIndex via les API REST Piloterr. JSON structuré et Markdown depuis des sites protégés, prêts pour le chunking, l'embedding et le retrieval.
- Readers et outils personnalisés sur les endpoints Piloterr
- JSON/Markdown propre, pas d'étape de nettoyage HTML
- Contournement anti-bot pour RAG en production
- Compatible avec tout store vectoriel supporté par LlamaIndex
En bref
Lecteurs
loaders personnalisés
JSON
entrée structurée
400+
sources web
REST
API HTTP
Pourquoi connecter LlamaIndex
Loaders de données personnalisés
Construisez des readers LlamaIndex qui récupèrent des pages via Piloterr et renvoient des objets Document avec des métadonnées texte propres.
Moteurs de requête
Combinez les données scrapées avec les query engines LlamaIndex pour des Q&R ancrées sur du contenu web en direct.
Sans parsing HTML
Piloterr renvoie des champs structurés, titre, corps, prix, métadonnées, sans prétraitement BeautifulSoup.
Fiabilité en production
Contournement anti-bot et proxies gérés : votre pipeline d'ingestion ne casse pas quand les cibles ajoutent Cloudflare.
Patterns LlamaIndex + Piloterr
De la recherche ponctuelle au rafraîchissement d'index planifié.
Ingestion de documents
Récupérez du JSON, mappez les champs vers le texte et métadonnées Document, indexez dans le store vectoriel.
Rafraîchissement planifié
Cron ou workflows déclenchent un re-scrape et upsertent les documents modifiés.
Index multi-sources
Combinez SERP, actualités et données produit dans un seul index LlamaIndex.
Requête augmentée par outils
Les query engines appellent Piloterr à la volée pour les questions nécessitant des données fraîches.
Pourquoi ne pas utiliser SimpleWebPageReader seul ?
| Approche | Solution maison | Piloterr |
|---|---|---|
| SimpleWebPageReader | Bloqué sur les sites protégés | Contournement géré |
| HTML brut | Chunks bruyants, mauvais retrieval | Champs texte structurés |
| SPA lourdes en JS | Contenu vide | Rendu headless |
| Maintenance | Logique scraper par site | Plus de 400 endpoints gérés |
Connecter LlamaIndex en quatre étapes
Étape 1
Installez LlamaIndex
pip install llama-index llama-index-llms-openai llama-index-embeddings-openai requests
Étape 2
Obtenez votre clé API
Définissez PILOTERR_API_KEY dans votre environnement.
Obtenez votre clé APIÉtape 3
Créez un reader personnalisé
Sous-classez BaseReader ou utilisez une fonction qui appelle Piloterr et renvoie des Documents.
Étape 4
Construisez l'index et interrogez
VectorStoreIndex.from_documents() puis query_engine.query().
Exemples de workflows
Index de veille concurrentielle
Scrape quotidien des pages concurrents → chunk → embed → Q&R sur tarifs et fonctionnalités.
RAG de veille actualités
Reader Google News rafraîchit l'index toutes les heures pour le suivi de mots-clés sectoriels.
Recherche catalogue produits
Données API e-commerce indexées pour la découverte sémantique de produits.
Index Q&R centre d'aide
Ingérez la doc d'aide via le reader Piloterr, rafraîchissez chaque nuit et alimentez la recherche sémantique support.
LlamaIndex vs LangChain vs CrewAI
Scénario
RAG et indexation de documents
Recommandation: LlamaIndex
Scénario
Agents avec appel d'outils
Recommandation: LangChain
Scénario
Équipes multi-agents
Recommandation: CrewAI
Scénario
ETL HTTP simple
Recommandation: SDK Python
Exemple de reader LlamaIndex
Chargez des articles Google News dans un index vectoriel via Piloterr.
import os
import requests
from llama_index.core import Document
from llama_index.core.readers.base import BaseReader
class PiloterrNewsReader(BaseReader):
def __init__(self, api_key: str | None = None):
self.api_key = api_key or os.environ["PILOTERR_API_KEY"]
self.base = "https://api.piloterr.com/v2"
def load_data(self, query: str, location: str = "Paris, FR") -> list[Document]:
response = requests.post(
f"{self.base}/google/news",
headers={"x-api-key": self.api_key, "Content-Type": "application/json"},
json={"query": query, "location": location, "page": 1},
timeout=60,
)
response.raise_for_status()
data = response.json()
docs = []
for item in data.get("organic_results", []):
docs.append(Document(
text=f"{item.get('title', '')}\n\n{item.get('snippet', '')}",
metadata={"url": item.get("link"), "source": item.get("source")},
))
return docsTarification transparente en crédits
Payez uniquement les requêtes réussies. Commencez avec +500 crédits, puis évoluez avec des forfaits à partir de 49 $/mois.
Premium
$49/mois
18,000 crédits
Premium+
$99/mois
40,000 crédits
Startup
$249/mois
110,000 crédits