diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index a6435371c8..9437649d4d 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -1634,6 +1634,14 @@ def get_splitter_length_function( return len +def filter_file_metadata(metadata: dict | None) -> dict: + metadata = dict(metadata or {}) + data = metadata.pop('data', None) + if isinstance(data, dict): + metadata = {**filter_metadata(data), **metadata} + return filter_metadata(metadata) + + def save_docs_to_vector_db( request: Request, docs, @@ -1898,7 +1906,7 @@ async def process_file( Document( page_content=form_data.content.replace('
', '\n'), metadata={ - **file.meta, + **filter_file_metadata(file.meta), 'name': file.filename, 'created_by': file.user_id, 'file_id': file.id, @@ -1934,7 +1942,7 @@ async def process_file( Document( page_content=stored_content, metadata={ - **file.meta, + **filter_file_metadata(file.meta), 'name': file.filename, 'created_by': file.user_id, 'file_id': file.id, @@ -1967,7 +1975,7 @@ async def process_file( Document( page_content=doc.page_content, metadata={ - **file.meta, + **filter_file_metadata(file.meta), **filter_metadata(doc.metadata), 'name': file.filename, 'created_by': file.user_id, @@ -1982,7 +1990,7 @@ async def process_file( Document( page_content=file.data.get('content', ''), metadata={ - **file.meta, + **filter_file_metadata(file.meta), 'name': file.filename, 'created_by': file.user_id, 'file_id': file.id, @@ -3315,7 +3323,7 @@ async def process_files_batch( Document( page_content=text_content.replace('
', '\n'), metadata={ - **file.meta, + **filter_file_metadata(file.meta), 'name': file.filename, 'created_by': file.user_id, 'file_id': file.id,