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()