diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py
index 4dc73ed89..57b9fbcfd 100644
--- a/backend/open_webui/config.py
+++ b/backend/open_webui/config.py
@@ -1181,21 +1181,30 @@ CHUNK_OVERLAP = PersistentConfig(
int(os.environ.get("CHUNK_OVERLAP", "100")),
)
-DEFAULT_RAG_TEMPLATE = """You are given a user query, some textual context and rules, all inside xml tags. You have to answer the query based on the context while respecting the rules.
+DEFAULT_RAG_TEMPLATE = """### Task:
+Respond to the user query using the provided context, incorporating inline citations in the format [source_id].
+
+### Guidelines:
+- If you don't know the answer, clearly state that.
+- If uncertain, ask the user for clarification.
+- Respond in the same language as the user's query.
+- If the context is unreadable or of poor quality, inform the user and provide the best possible answer.
+- If the answer isn't present in the context but you possess the knowledge, explain this to the user and provide the answer using your own understanding.
+- Include inline citations using [source_id] corresponding to the sources listed in the context.
+- Do not use XML tags in your response.
+- Ensure citations are concise and directly related to the information provided.
+
+### Example of Citation:
+If the user asks about a specific topic and the information is found in "whitepaper.pdf", the response should include the citation like so:
+* "According to the study, the proposed method increases efficiency by 20% [whitepaper.pdf]."
+
+### Output:
+Provide a clear and direct response to the user's query, including inline citations in the format [source_id] where relevant.
{{CONTEXT}}
-
-- If you don't know, just say so.
-- If you are not sure, ask for clarification.
-- Answer in the same language as the user query.
-- If the context appears unreadable or of poor quality, tell the user then answer as best as you can.
-- If the answer is not in the context but you think you know the answer, explain that to the user then answer with your own knowledge.
-- Answer directly and without using xml tags.
-
-
{{QUERY}}
diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py
index 538d8519a..0279cee05 100644
--- a/backend/open_webui/main.py
+++ b/backend/open_webui/main.py
@@ -679,7 +679,13 @@ class ChatCompletionMiddleware(BaseHTTPMiddleware):
# If context is not empty, insert it into the messages
if len(contexts) > 0:
- context_string = "/n".join(contexts).strip()
+ context_string = ""
+ for context_idx, context in enumerate(contexts):
+ print(context)
+ source_id = citations[context_idx].get("source", {}).get("name", "")
+ context_string += f"\n"
+
+ context_string = context_string.strip()
prompt = get_last_user_message(body["messages"])
if prompt is None:
diff --git a/src/lib/components/chat/Messages/Citations.svelte b/src/lib/components/chat/Messages/Citations.svelte
index 79f8d2af6..69feb4e6c 100644
--- a/src/lib/components/chat/Messages/Citations.svelte
+++ b/src/lib/components/chat/Messages/Citations.svelte
@@ -94,6 +94,7 @@