From 713a65ee31c70e8c117cbb44f341a22e81a5c390 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 5 Jan 2026 20:58:53 +0100 Subject: [PATCH] fix: inject full context knowledge into system message for KV prefix caching (#20317) * Update middleware.py * Update middleware.py * env var * address * upd --- backend/open_webui/env.py | 4 ++++ backend/open_webui/utils/middleware.py | 32 ++++++++++++++++++-------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index f5253d287..51f62b7ff 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -356,6 +356,10 @@ ENABLE_REALTIME_CHAT_SAVE = ( ENABLE_QUERIES_CACHE = os.environ.get("ENABLE_QUERIES_CACHE", "False").lower() == "true" +RAG_SYSTEM_CONTEXT = ( + os.environ.get("RAG_SYSTEM_CONTEXT", "False").lower() == "true" +) + #################################### # REDIS #################################### diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index a6f39e15f..b7b7dc18b 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -119,6 +119,7 @@ from open_webui.env import ( BYPASS_MODEL_ACCESS_CONTROL, ENABLE_REALTIME_CHAT_SAVE, ENABLE_QUERIES_CACHE, + RAG_SYSTEM_CONTEXT, ) from open_webui.constants import TASKS @@ -1622,15 +1623,28 @@ async def process_chat_payload(request, form_data, user, metadata, model): raise Exception("No user message found") if context_string != "": - form_data["messages"] = add_or_update_user_message( - rag_template( - request.app.state.config.RAG_TEMPLATE, - context_string, - prompt, - ), - form_data["messages"], - append=False, - ) + if RAG_SYSTEM_CONTEXT: + # Inject into system message for KV prefix caching + form_data["messages"] = add_or_update_system_message( + rag_template( + request.app.state.config.RAG_TEMPLATE, + context_string, + prompt, + ), + form_data["messages"], + append=True, + ) + else: + # Inject into user message + form_data["messages"] = add_or_update_user_message( + rag_template( + request.app.state.config.RAG_TEMPLATE, + context_string, + prompt, + ), + form_data["messages"], + append=False, + ) # If there are citations, add them to the data_items sources = [