Skip to main content

LlamaIndex Node Parser Xberg

Xberg Banner

Structure-aware LlamaIndex node parser for xberg-extracted documents. It turns xberg's native chunks into nodes, and falls back to structural elements when chunks are absent.

Installation

pip install llama-index-node-parser-xberg

Requires llama-index-core>=0.14.23,<0.15. This package does not depend on xberg directly — xberg is a dependency of the reader (llama-index-readers-xberg), which produces the documents this parser splits.

Prerequisites

This parser requires documents with _xberg_chunks or _xberg_elements metadata. These are produced by XbergReader. Prefer native chunking; use element-based extraction when you want one node per structural element. Documents carrying neither pass through unchanged with a warning.

from xberg import ChunkingConfig, ExtractionConfig
from llama_index.readers.xberg import XbergReader

# Preferred: native semantic chunks with heading path and page span.
reader = XbergReader(
    extraction_config=ExtractionConfig(chunking=ChunkingConfig(max_characters=1000, overlap=200))
)
documents = reader.load_data("report.pdf")

Features

  • Chunk-aware splitting — each xberg native chunk becomes a node, carrying chunk_type, heading_path, and page span
  • Element fallback — when no chunks are present, headings, paragraphs, tables, and code blocks each become a node
  • Source and prev/next relationships tracked via NodeRelationship
  • Graceful degradation — documents without chunk or element metadata pass through with a warning
  • Composes with other transformations (e.g., SentenceSplitter)
  • Async support via aget_nodes_from_documents
  • Serialization support (to_dict / from_dict)

Usage

Basic

Full reader-to-nodes flow:

from xberg import ChunkingConfig, ExtractionConfig
from llama_index.readers.xberg import XbergReader
from llama_index.node_parser.xberg import XbergNodeParser

reader = XbergReader(
    extraction_config=ExtractionConfig(chunking=ChunkingConfig(max_characters=1000, overlap=200))
)
documents = reader.load_data("report.pdf")

parser = XbergNodeParser()
nodes = parser.get_nodes_from_documents(documents)

IngestionPipeline

Chain with SentenceSplitter to further split any oversized nodes:

from llama_index.core.ingestion import IngestionPipeline
from llama_index.core.node_parser import SentenceSplitter

pipeline = IngestionPipeline(
    transformations=[
        XbergNodeParser(),
        SentenceSplitter(chunk_size=512),  # Further split large nodes
    ]
)
nodes = pipeline.run(documents=documents)

VectorStoreIndex

Using the transformations parameter:

from llama_index.core import VectorStoreIndex

index = VectorStoreIndex.from_documents(
    documents,
    transformations=[XbergNodeParser()],
)

Async

nodes = await parser.aget_nodes_from_documents(documents)

Behavior Notes

  • Chunks take priority over elements. When a document carries both _xberg_chunks and _xberg_elements, the parser splits on chunks.
  • Documents without either metadata key pass through unchanged with a warning. This is intentional — silently falling back would hide that you are not getting structure-aware splitting.
  • Empty or whitespace-only chunks and elements are automatically skipped.

Release files for llama-index-node-parser-xberg 1.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llama-index-node-parser-xberg 1.2.2
File Size Uploaded
llama_index_node_parser_xberg-1.2.2.tar.gz 8.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for llama-index-node-parser-xberg 1.2.2
File Interpreter ABI Platform
llama_index_node_parser_xberg-1.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 13.9 kB

Release files / llama_index_node_parser_xberg-1.2.2.tar.gz

Download URL llama_index_node_parser_xberg-1.2.2.tar.gz
Size 8.3 kB
Tags Source
SHA-256 checksum
How to use checksums
2ee6002f234c920f9a2be121d4184471353671f3762598beecaffb5279b07d4e
BLAKE2b-256 checksum
How to use checksums
09e845b84782fa32396d8c7c261e24026a1cf1f2a6c06af9b592dd441dec252d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / llama_index_node_parser_xberg-1.2.2-py3-none-any.whl

Download URL llama_index_node_parser_xberg-1.2.2-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1950ffa34d40496622c818ad3e9162f94bbd24f2d0fc3765be24730efb3197f6
BLAKE2b-256 checksum
How to use checksums
d13ae5e2bd2e5784323f7d4ec204f424172204424e88cf2c09cd63300ef53a14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page