From 210197fd438b52080cda5d6ce3d47b92cdc264c8 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 13 Sep 2025 00:02:48 +0400 Subject: [PATCH] refac/fix: web/youtube file attachment handling --- backend/open_webui/retrieval/utils.py | 50 +++++++++++++++++---------- src/lib/components/chat/Chat.svelte | 4 ++- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index b3dc52d7b2..d0af89f9c1 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -491,25 +491,37 @@ def get_sources_from_items( # Raw Text # Used during temporary chat file uploads or web page & youtube attachements - if item.get("collection_name"): - # If item has a collection name, use it - collection_names.append(item.get("collection_name")) - elif item.get("file"): - # if item has file data, use it - query_result = { - "documents": [ - [item.get("file", {}).get("data", {}).get("content")] - ], - "metadatas": [[item.get("file", {}).get("meta", {})]], - } - else: - # Fallback to item content - query_result = { - "documents": [[item.get("content")]], - "metadatas": [ - [{"file_id": item.get("id"), "name": item.get("name")}] - ], - } + if item.get("context") == "full": + if item.get("file"): + # if item has file data, use it + query_result = { + "documents": [ + [item.get("file", {}).get("data", {}).get("content")] + ], + "metadatas": [[item.get("file", {}).get("meta", {})]], + } + + if query_result is None: + # Fallback + if item.get("collection_name"): + # If item has a collection name, use it + collection_names.append(item.get("collection_name")) + elif item.get("file"): + # If item has file data, use it + query_result = { + "documents": [ + [item.get("file", {}).get("data", {}).get("content")] + ], + "metadatas": [[item.get("file", {}).get("meta", {})]], + } + else: + # Fallback to item content + query_result = { + "documents": [[item.get("content")]], + "metadatas": [ + [{"file_id": item.get("id"), "name": item.get("name")}] + ], + } elif item.get("type") == "note": # Note Attached diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 108354eea5..10651f55d8 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1466,7 +1466,9 @@ const messages = createMessagesList(history, history.currentId); const _files = JSON.parse(JSON.stringify(files)); - chatFiles.push(..._files.filter((item) => ['doc', 'file', 'collection'].includes(item.type))); + chatFiles.push( + ..._files.filter((item) => ['doc', 'text', 'file', 'collection'].includes(item.type)) + ); chatFiles = chatFiles.filter( // Remove duplicates (item, index, array) =>