Lecteur LlamaIndex pour Pages Web et Indexation de Sites#
Le lecteur EnConvert pour LlamaIndex convertit les pages web et les sites entiers en LlamaIndex Documents. Percevez les URL individuelles en markdown ou parcourez un site entier et retournez un Document par chunk prêt pour indexation. Chaque rendu de page porte un score render_quality (0,0–1,0), de sorte qu'une page bloquée ou vide est signalée plutôt que d'être indexée silencieusement.
llama-index-readers-enconvert · Source : enconvert/llama-index-readers-enconvert · Requiert : llama-index-core>=0.12,<0.15 · Licence : MIT
Installation#
pip install llama-index-readers-enconvert
Ajoutez votre clé API#
Le lecteur nécessite une accréditation : Clé API EnConvert.
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
# Ou définissez $ENCONVERT_API_KEY et omettez le paramètre
reader = EnConvertReader()
Générez une clé API privée dans le tableau de bord. Les clés privées commencent par sk_. Les clés publiques pk_ sont rejetées.
pk_ sont destinées aux widgets du navigateur et sont rejetées par le lecteur. En savoir plus sur Private Keys.
Utiliser EnConvertReader#
Le lecteur supporte deux modes.
Percevoir quelques URL#
Convertir les URL individuelles en Documents markdown :
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(urls=["https://example.com", "https://example.com/pricing"])
Les métadonnées de chaque Document portent :
- url : l'URL source
- render_quality : un nombre de 0,0 (bloqué/vide) à 1,0 (rendu propre)
Parcourir un site en chunks#
Parcourez un site entier et retournez un Document par chunk de contenu, prêt pour la recherche sémantique :
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(
ingest_url="https://docs.example.com",
mode="sitemap", # ou "crawl" ou "hybrid"
max_pages=100
)
Les métadonnées de chaque Document portent l'URL url propre au chunk, le titre et le contexte de la section. Le lecteur interroge le travail d'ingestion jusqu'à l'achèvement, donc load_data() est synchrone.
Construire un Index Vectoriel#
Chaînez le lecteur dans un magasin vectoriel et une requête :
from llama_index.readers.enconvert import EnConvertReader
from llama_index.core import VectorStoreIndex, StorageContext
from llama_index.core.storage.docstore import SimpleDocumentStore
from llama_index.core.vector_stores import SimpleVectorStore
# Charger les documents
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(ingest_url="https://docs.example.com", mode="sitemap")
# Construire l'index
index = VectorStoreIndex.from_documents(docs)
# Requête
query_engine = index.as_query_engine()
response = query_engine.query("Comment installer ceci ?")
print(response)
Dépannage#
raise ValueError("Provide either urls or ingest_url, but not both")
Vous avez transmis à la fois urls= et ingest_url= à load_data(). Choisissez un : percevoir les URL individuelles ou parcourir un site. Transmettre aucun lève aussi une erreur.
AuthenticationError: 401 Unauthorized
La clé API est incorrecte ou manquante. Vérifiez que vous avez défini api_key="sk_..." ou la variable d'environnement $ENCONVERT_API_KEY sur une clé privée (commence par sk_). Les clés publiques sont rejetées immédiatement.
Le temps de chargement semble très long.
Les crawls de sites sont asynchrones. Le lecteur interroge jusqu'à l'achèvement du travail, ce qui peut prendre plusieurs minutes sur un grand site. Interrogez directement l'état du travail via /v2/ingest/{job_id} ou utilisez la variante async (si disponible).
render_quality est très bas pour les pages que je m'attendais à lire correctement.
Un score bas (< 0,5) signifie que la page est bloquée, vide ou a du JavaScript lourd qui n'a pas été rendu à temps. Vérifiez l'URL url source dans un navigateur pour voir ce que la page livre réellement. S'il s'agit d'une application mono-page, un deuxième rendu pourrait réussir ; s'il est bloqué, il n'y a pas de retry.
Source et liens#
- Source : enconvert/llama-index-readers-enconvert
- Paquet : PyPI
- Licence : MIT
- Documentation LlamaIndex : docs.llamaindex.ai
- API sous-jacente : Introduction
Questions fréquemment posées#
Comment charger une seule URL dans un Document ?#
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(urls=["https://example.com"])
Le contenu de chaque Document est le markdown de la page, et les métadonnées portent l'URL url et le score render_quality.
Comment parcourir et indexer un site entier ?#
from llama_index.readers.enconvert import EnConvertReader
from llama_index.core import VectorStoreIndex
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(ingest_url="https://docs.example.com", mode="sitemap", max_pages=100)
index = VectorStoreIndex.from_documents(docs)
# Requête
engine = index.as_query_engine()
response = engine.query("Qu'est-ce que c'est ?")
Comment vérifier la render_quality d'une page avant indexation ?#
Les métadonnées de chaque Document incluent render_quality, un score de 0,0 à 1,0. Filtrez les documents de haute qualité avant indexation :
high_quality = [doc for doc in docs if doc.metadata.get('render_quality', 1.0) > 0.5]
index = VectorStoreIndex.from_documents(high_quality)
Puis-je parcourir plusieurs sites ?#
Oui. Créez un lecteur par site et appelez load_data() séquentiellement ou parallelisez les appels dans votre propre code async.
Puis-je utiliser ceci avec d'autres composants LlamaIndex ?#
Oui. EnConvertReader retourne des LlamaIndex Documents standard, donc il fonctionne avec n'importe quel index ou composant en aval.