LlamaIndex Reader für Web-Seiten und Site-Indexierung#
Der EnConvert Reader für LlamaIndex verwandelt Web-Seiten und ganze Sites in LlamaIndex Documents. Einzelne URLs zu Markdown erfassen oder eine ganze Site durchsuchen und ein Document pro indexierungsbereitem Chunk zurückgeben. Jedes Seiten-Rendering trägt einen render_quality-Score (0,0–1,0), sodass eine blockierte oder leere Seite gekennzeichnet wird, anstatt stillschweigend indexiert zu werden.
llama-index-readers-enconvert · Quelle: enconvert/llama-index-readers-enconvert · Erfordert: llama-index-core>=0.12,<0.15 · Lizenz: MIT
Installation#
pip install llama-index-readers-enconvert
Fügen Sie Ihren API-Schlüssel hinzu#
Der Reader benötigt eine Anmeldedaten: EnConvert API Key.
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
# Oder setzen Sie $ENCONVERT_API_KEY und lassen Sie den Parameter weg
reader = EnConvertReader()
Generieren Sie einen privaten API-Schlüssel im Dashboard. Private Schlüssel beginnen mit sk_. Öffentliche pk_-Schlüssel werden abgelehnt.
pk_ beginnen, sind für Browser-Widgets gedacht und werden vom Reader abgelehnt. Mehr erfahren Sie unter Private Keys.
EnConvertReader verwenden#
Der Reader unterstützt zwei Modi.
Einige URLs erfassen#
URLs einzeln in Markdown Documents umwandeln:
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(urls=["https://example.com", "https://example.com/pricing"])
Die Metadaten jedes Document tragen:
- url: die Quell-URL
- render_quality: eine Zahl von 0,0 (blockiert/leer) bis 1,0 (sauberes Rendering)
Eine Site in Chunks durchsuchen#
Eine ganze Site durchsuchen und ein Document pro Inhalts-Chunk zurückgeben, bereit für semantische Suche:
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(
ingest_url="https://docs.example.com",
mode="sitemap", # oder "crawl" oder "hybrid"
max_pages=100
)
Die Metadaten jedes Document tragen die Chunk-eigene Quell-URL, Titel und Abschnitt-Kontext. Der Reader fragt den Ingestion-Job bis zum Abschluss ab, also load_data() ist synchron.
Einen Vector Index bauen#
Den Reader in einen Vector Store und eine Abfrage verketten:
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
# Documents laden
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(ingest_url="https://docs.example.com", mode="sitemap")
# Index bauen
index = VectorStoreIndex.from_documents(docs)
# Abfragen
query_engine = index.as_query_engine()
response = query_engine.query("Wie installiere ich das?")
print(response)
Fehlerbehebung#
raise ValueError("Provide either urls or ingest_url, but not both")
Sie übergaben sowohl urls= als auch ingest_url= an load_data(). Wählen Sie eine: einzelne URLs erfassen oder eine Site durchsuchen. Das Übergeben keiner wirft auch einen Fehler.
AuthenticationError: 401 Unauthorized
Der API-Schlüssel ist falsch oder fehlt. Überprüfen Sie, dass Sie api_key="sk_..." übergeben oder $ENCONVERT_API_KEY auf einen privaten Schlüssel (beginnt mit sk_) setzen. Öffentliche Schlüssel werden sofort abgelehnt.
Die Ladezeit scheint sehr lang.
Site-Crawls sind asynchron. Der Reader fragt, bis der Job fertig ist, was für eine große Site mehrere Minuten dauern kann. Fragen Sie den Job-Status direkt über /v2/ingest/{job_id} ab oder verwenden Sie die async-Variante (falls verfügbar).
render_quality ist sehr niedrig.
Ein niedriger Score (< 0,5) bedeutet, die Seite ist blockiert, leer oder schweres JavaScript, das nicht rechtzeitig gerendert wurde. Überprüfen Sie die Quell-URL in einem Browser, um zu sehen, was die Seite tatsächlich liefert. Ist es eine Single-Page App, könnte ein zweites Rendering erfolgreich sein; ist es blockiert, gibt es keinen Wiederversuch.
Quelle und Links#
- Quelle: enconvert/llama-index-readers-enconvert
- Paket: PyPI
- Lizenz: MIT
- LlamaIndex-Dokumentation: docs.llamaindex.ai
- Zugrunde liegende API: Introduction
Häufig gestellte Fragen#
Wie lade ich eine einzelne URL in ein Document?#
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(urls=["https://example.com"])
Der Inhalt jedes Document ist das Markdown der Seite, und Metadaten tragen die url und render_quality-Score.
Wie durchsuche und indexiere ich eine ganze Site?#
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)
# Abfragen
engine = index.as_query_engine()
response = engine.query("Was ist das?")
Wie überprüfe ich die render_quality einer Seite vor dem Indexieren?#
Die Metadaten jedes Document enthalten render_quality, ein Score von 0,0 bis 1,0. Filtern Sie hochwertige Documents vor dem Indexieren:
high_quality = [doc for doc in docs if doc.metadata.get('render_quality', 1.0) > 0.5]
index = VectorStoreIndex.from_documents(high_quality)
Kann ich mehrere Sites durchsuchen?#
Ja. Erstellen Sie einen Reader pro Site und rufen Sie load_data() nacheinander auf oder parallelisieren Sie die Aufrufe in Ihrem eigenen async-Code.
Kann ich dies mit anderen LlamaIndex-Komponenten verwenden?#
Ja. EnConvertReader gibt standard LlamaIndex Documents zurück, also funktioniert es mit jedem downstream Index oder jeder Komponente.