LlamaIndex Node Parser Xberg
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_chunksor_xberg_elementsmetadata. These are produced byXbergReader. 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_chunksand_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.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| llama_index_node_parser_xberg-1.2.6.tar.gz | 8.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llama_index_node_parser_xberg-1.2.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.9 kB
Release files / llama_index_node_parser_xberg-1.2.6.tar.gz
| Download URL | llama_index_node_parser_xberg-1.2.6.tar.gz |
|---|---|
| Size | 8.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4e5efc2bb4e3d89cb242604e78a542ba880440020af8c4fe031023d6fdebcc00
|
|
BLAKE2b-256 checksum How to use checksums |
1dca8de1cecfd53cce84d029d2f9d4d3bc6b6ae384810bc864ec29b27237ff03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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.6-py3-none-any.whl
| Download URL | llama_index_node_parser_xberg-1.2.6-py3-none-any.whl |
|---|---|
| Size | 5.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1869111791df949cc6b4a08c72e6914afcbda33734a9d6b430591846efe8a38c
|
|
BLAKE2b-256 checksum How to use checksums |
284cbdf04553355e81936fcd826bc1ef104e9f43a320c2bfcbc5835bdb5da3f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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}
|