Metadata context enricher
Defines a metadata context enricher that adds metadata to chunk content that use in Gen AI applications.
This module provides an implementation of BaseContextEnricher that enriches chunks by incorporating their metadata into the content.
References
[1] https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-enrichment-phase
MetadataContextEnricher(metadata_fields, position=MetadataPosition.PREFIX, separator='\n---\n', field_template='- {field}: {value}', skip_empty=True, binary_handling=BinaryHandlingStrategy.BASE64)
Bases: BaseContextEnricher
A metadata context enricher that adds metadata to the chunk content.
This enricher formats metadata fields into a string and appends it to the chunk content based on the specified position (prefix or suffix).
Attributes:
| Name | Type | Description |
|---|---|---|
metadata_fields |
list[str]
|
List of metadata fields to include in the enriched content. |
position |
MetadataPosition
|
Position of the metadata in the content. Valid values are defined in the MetadataPosition enum: - PREFIX: Metadata block is placed before content - SUFFIX: Metadata block is placed after content |
separator |
str
|
Separator between the metadata and the content. |
field_template |
str
|
Template for formatting each metadata field. |
skip_empty |
bool
|
Whether to skip fields with empty values. |
binary_handling |
BinaryHandlingStrategy
|
Strategy for handling binary data. Valid values are defined in the BinaryHandlingStrategy: - BASE64: Binary data is converted to base64 (default) - HEX: Binary data is converted to hexadecimal - NONE: Binary data is not included in the metadata block |
Initialize the metadata context enricher.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
metadata_fields |
list[str]
|
List of metadata field names to include. |
required |
position |
MetadataPosition
|
Where to place metadata block. Valid values are defined in the MetadataPosition enum: 1. "prefix": Metadata block is placed before content 2. "suffix": Metadata block is placed after content |
PREFIX
|
separator |
str
|
String to separate metadata from content. |
'\n---\n'
|
field_template |
str
|
Template for formatting each metadata field. Available fields: - {field}: Field name - {value}: Field value |
'- {field}: {value}'
|
skip_empty |
bool
|
Whether to skip empty fields. |
True
|
binary_handling |
BinaryHandlingStrategy
|
Strategy for handling binary data. Valid values are defined in the BinaryHandlingStrategy: 1. "base64": Binary data is converted to base64 (default) 2. "hex": Binary data is converted to hexadecimal 3. "none": Binary data is not included in the metadata block |
BASE64
|
MetadataPosition
Bases: str, Enum
Enum for metadata position options.