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.

Paket: 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.

Öffentliche Schlüssel funktionieren nicht. Schlüssel, die mit 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.



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.