diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index badae9906..2c6728955 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -897,11 +897,15 @@ async def process_chat_payload(request, form_data, user, metadata, model): # If context is not empty, insert it into the messages if len(sources) > 0: context_string = "" - for source_idx, source in enumerate(sources): + citated_file_idx = {} + for _, source in enumerate(sources, 1): if "document" in source: - for doc_idx, doc_context in enumerate(source["document"]): + for doc_context, doc_meta in zip(source["document"], source['metadata']): + file_id = doc_meta.get('file_id') + if file_id not in citated_file_idx: + citated_file_idx[file_id] = len(citated_file_idx) + 1 context_string += ( - f'{doc_context}\n' + f'{doc_context}\n' ) context_string = context_string.strip()