🎯 什麼情境該想到我

當你「手上的設定/產品知識多到塞不進 prompt,但每一輪其實只用得到其中幾條」的時候。

⚙️ 怎麼用(步驟 / 公式)

核心想法:每條知識綁一組關鍵詞;只有最近的對話字面上提到這些詞,這條內容才被注入這一輪的 prompt。幾百條設定,每輪只付真正用到的那幾條的 token。它是「用字串比對當檢索條件的極簡 RAG」:沒有 embedding,換來的是可預測、可除錯——寫關鍵詞的人就知道它什麼時候會出現。

  1. 切條目:一個概念一條(一個地點、一個組織、一個產品),每條寫 key[](主關鍵詞,任一命中即觸發)+ content。同義詞、暱稱都列進 key[]。
  2. 定掃描範圍:只看最近 N 則訊息(scanDepth),不是整段歷史——否則很久以前提過一次的東西會永遠常駐。
  3. 加條件,擋誤觸:主鍵命中後再看次要鍵——AND_ANY(「龍」+「火」或「巢穴」)、NOT_ANY(「國王」但不是在講「棋局」)。
  4. 允許連鎖,但要設閘:被激活條目的內容也加進掃描範圍再掃一次(「睡龍酒館」的內容提到「龍」→ 帶出「龍」的條目),直到沒有新激活。「總綱」型條目關掉遞迴,避免一條帶出一串。
  5. 同類互斥:天氣「晴/雨/雪」放同一組,同時命中只留一條。
  6. 時間效果:sticky(提到後持續 N 輪,事件不會下一句就忘)、cooldown(激活後休息 N 輪,防洗版)、delay(前 N 則訊息不檢測,劇情設定別太早冒出來)。
  7. 給獨立預算:知識預算 = max_context × 百分比(SillyTavern 預設 25%,8192 × 25% = 2048 tokens)。逐條累計,超過就不再激活。不設上限的話,知識會直接吃掉聊天記錄的空間(見 工具-長對話的Token預算分配)。
  8. 決定放哪:背景知識放 prompt 前段(穩定但離生成點遠);會改變行為的指引放聊天歷史的指定深度(離生成點近、影響大,見 工具-用深度注入讓指令不被遺忘)。

和向量 RAG 怎麼選

關鍵字觸發向量召回(工具-RAG檢索增強生成)
命中條件真的出現那個詞意思相近就會命中
可預測性高,作者可控低,要調門檻
漏觸發換個說法就漏(「會噴火的大蜥蜴」不會命中「龍」)少
誤觸發字面巧合(要靠次要鍵擋)語意相近但不相干
成本字串比對,幾乎免費要 embedding、索引

實務上兩者疊用:關鍵字當主力,重要條目再加語意觸發補漏(SillyTavern 的 vectorized=true 就是這樣做)。

機制細節(六層過濾、掃描狀態機、8 種注入位置)→ World Info世界書

🧪 我實際套用的紀錄

  • (尚無)

⚠️ 注意 / 什麼時候不適用

(以下為經驗推論,原文只描述機制)

  • 不懂語意:使用者換個說法就漏;同義詞要自己列,或疊一層向量召回。
  • 遞迴會連鎖爆量:寫得太廣的條目會帶出一大串,把預算吃光。
  • 機率激活、加權隨機會讓輸出不可重現,除錯時先關掉。
  • 知識量小到整份放進 prompt 也不貴時,不需要這套——每一層條件都是之後要維護的規則。
  • 條目數極多時每輪都要全掃一遍,掃描成本不可忽略。

🔗 相關工具