]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Feature] Put subject first in LLM embedding input
authorVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 22 Jan 2026 11:51:53 +0000 (11:51 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 22 Jan 2026 11:51:53 +0000 (11:51 +0000)
Subject is highly valuable for spam detection and placing it first
ensures it's always included even if text content gets truncated
by model token limits.

lualib/plugins/neural/providers/llm.lua

index 9709c231edebe9ccc76978aa9c78adf2f67b5ad8..95e5657a520fd9c3250807340a96f348faf612a6 100644 (file)
@@ -151,10 +151,13 @@ neural_common.register_provider('llm', {
       return
     end
 
-    -- Build request input string (text then optional subject), keeping rspamd_text intact
-    local input_string = input_tbl.text or ''
+    -- Build request input string: subject first (more valuable for spam detection),
+    -- then text content. Subject-first ensures it's always included even if text is truncated.
+    local input_string
     if input_tbl.subject and input_tbl.subject ~= '' then
-      input_string = input_string .. "\nSubject: " .. input_tbl.subject
+      input_string = "Subject: " .. input_tbl.subject .. "\n" .. (input_tbl.text or '')
+    else
+      input_string = input_tbl.text or ''
     end
 
     local input_key = normalize_cache_key_input(input_string)