rag.splitters.hierarchical

Split text into hierarchical parent-child chunks for context-aware retrieval.

Split text into hierarchical parent-child chunks for context-aware retrieval.

class HierarchicalChunker(chunk_size=400, chunk_overlap=100, metadata=None, parent_chunk_size=1500, max_levels=2)[source]

Bases: ChunkerBase

Hierarchical chunking with parent-child relationships.

Parameters:
  • chunk_size (int) – Maximum characters per leaf chunk.

  • chunk_overlap (int) – Overlap between leaf chunks.

  • metadata (dict[str, Any] | None) – Default metadata for all chunks.

  • parent_chunk_size (int) – Size of parent chunks (larger).

  • max_levels (int) – Maximum hierarchy depth.

chunk(text, metadata=None)[source]

Split text into hierarchical chunks with parent-child relationships.

Parameters:
  • text (str) – The text to split.

  • metadata (dict[str, Any] | None) – Optional metadata to attach to each chunk.

Returns:

List of HierarchicalTextChunk objects with parent-child links.

Return type:

list[HierarchicalTextChunk]

get_parent_chunks(chunks)[source]

Filter to return only parent chunks.

Parameters:

chunks (list[HierarchicalTextChunk])

Return type:

list[HierarchicalTextChunk]

get_child_chunks(chunks)[source]

Filter to return only child chunks.

Parameters:

chunks (list[HierarchicalTextChunk])

Return type:

list[HierarchicalTextChunk]

get_chunks_with_parent_context(child_chunks, all_chunks)[source]

Get child chunks with their parent context for retrieval.

Parameters:
Returns:

List of dicts with child content and parent context.

Return type:

list[dict[str, Any]]

Classes

class HierarchicalChunker(chunk_size=400, chunk_overlap=100, metadata=None, parent_chunk_size=1500, max_levels=2)[source]

Bases: ChunkerBase

Hierarchical chunking with parent-child relationships.

Parameters:
  • chunk_size (int) – Maximum characters per leaf chunk.

  • chunk_overlap (int) – Overlap between leaf chunks.

  • metadata (dict[str, Any] | None) – Default metadata for all chunks.

  • parent_chunk_size (int) – Size of parent chunks (larger).

  • max_levels (int) – Maximum hierarchy depth.

chunk(text, metadata=None)[source]

Split text into hierarchical chunks with parent-child relationships.

Parameters:
  • text (str) – The text to split.

  • metadata (dict[str, Any] | None) – Optional metadata to attach to each chunk.

Returns:

List of HierarchicalTextChunk objects with parent-child links.

Return type:

list[HierarchicalTextChunk]

get_parent_chunks(chunks)[source]

Filter to return only parent chunks.

Parameters:

chunks (list[HierarchicalTextChunk])

Return type:

list[HierarchicalTextChunk]

get_child_chunks(chunks)[source]

Filter to return only child chunks.

Parameters:

chunks (list[HierarchicalTextChunk])

Return type:

list[HierarchicalTextChunk]

get_chunks_with_parent_context(child_chunks, all_chunks)[source]

Get child chunks with their parent context for retrieval.

Parameters:
Returns:

List of dicts with child content and parent context.

Return type:

list[dict[str, Any]]

property name: str

Return the chunker strategy name.