diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py
index 4070bc697..4dde09643 100644
--- a/backend/open_webui/utils/middleware.py
+++ b/backend/open_webui/utils/middleware.py
@@ -888,16 +888,20 @@ 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 = ""
- citated_file_idx = {}
- for _, source in enumerate(sources, 1):
+ citation_idx = {}
+ for source in sources:
if "document" in source:
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'
+ citation_id = (
+ doc_meta.get("source", None)
+ or source.get("source", {}).get("id", None)
+ or "N/A"
+ )
+ if citation_id not in citation_idx:
+ citation_idx[citation_id] = len(citation_idx) + 1
+ context_string += f'{doc_context}\n'
context_string = context_string.strip()
prompt = get_last_user_message(form_data["messages"])
diff --git a/src/lib/components/chat/Messages/Citations.svelte b/src/lib/components/chat/Messages/Citations.svelte
index 8c2fbf799..7177f27f2 100644
--- a/src/lib/components/chat/Messages/Citations.svelte
+++ b/src/lib/components/chat/Messages/Citations.svelte
@@ -83,6 +83,7 @@
});
return acc;
}, []);
+ console.log('citations', citations);
showRelevance = calculateShowRelevance(citations);
showPercentage = shouldShowPercentage(citations);