From 12e6b4b3c41027d75ba648dde6051acfeac591d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=BD=AE?= Date: Mon, 11 May 2026 16:46:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0retrieval-policy.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragflow-loader/hooks/retrieval-policy.md | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/skills/linggan/ragflow-loader/hooks/retrieval-policy.md b/skills/linggan/ragflow-loader/hooks/retrieval-policy.md index b41e660..3125b8f 100644 --- a/skills/linggan/ragflow-loader/hooks/retrieval-policy.md +++ b/skills/linggan/ragflow-loader/hooks/retrieval-policy.md @@ -32,25 +32,33 @@ For knowledge retrieval tasks, **this policy overrides generic codebase explorat ## 4. Retrieval Breadth (`top_k`) -- Apply `top_k` only to `rag_retrieve`. Use the smallest sufficient value, then expand only if coverage is insufficient. -- Use `30` for simple fact lookup. -- Use `50` for moderate synthesis, comparison, summarization, or disambiguation. +- Apply `top_k` only to `rag_retrieve`. Choose the appropriate value upfront to maximize first-call success. +- Use `50` for simple fact lookup or moderate synthesis, comparison, summarization, disambiguation. - Use `100` for broad recall, such as comprehensive analysis, scattered knowledge, multiple entities or periods, or list / catalog / timeline / roster / overview requests. -- Raise `top_k` when keyword branches are many or results are too few, repetitive, incomplete, sparse, or too narrow. -- Use this expansion order: `30 → 50 → 100`. If unsure, use `100`. +- If unsure, use `50`. Only escalate to `100` on the retry call if first results are insufficient. ## 5. Result Evaluation -Treat as insufficient if: empty, `Error:`, off-topic, missing core entity/scope, no usable evidence, partial coverage, or truncated results. +**Maximum 3 retrieval calls per question.** After each call, evaluate immediately: + +### Sufficient — answer now +- The core entity/topic in the user's question has been hit. +- There is direct evidence supporting the main intent of the question. +- Partial but usable coverage is sufficient — you do NOT need exhaustive or perfect coverage to answer. +- **When results are sufficient, compose the answer immediately. Do NOT call `rag_retrieve` again to "double-check" or "get more context".** + +### Insufficient — retry once +- Empty, `Error:`, off-topic, missing core entity/scope, no usable evidence at all. ## 6. Fallback and Sequential Retry -On insufficient results, follow this sequence: +On insufficient results, you may retry **up to 2 more times** (3 calls total): -1. Rewrite query, retry `rag_retrieve` (once) -2. Expand `top_k`: `30 → 50 → 100` -3. Say "no relevant information was found" **only after** exhausting all retries. +1. 1st retry: rewrite the query (different keywords, synonyms, broader scope), retry `rag_retrieve` with `top_k: 100`. +2. 2nd retry: further rewrite or broaden the query. +3. If still insufficient, say "no relevant information was found". - Do NOT switch to local filesystem inspection at any point. +- Do NOT call `rag_retrieve` more than 3 times. ## 7. Image Handling @@ -78,7 +86,8 @@ This section applies only when self-knowledge is enabled. Before replying to a knowledge retrieval task, verify: - Used only `rag_retrieve` — no local filesystem inspection? -- Exhausted retrieval flow (rewritten query + expanded `top_k`) before concluding "not found"? +- Called `rag_retrieve` at most 3 times (not more)? +- Answered immediately when results were sufficient (did NOT call again unnecessarily)? - If self-knowledge was used, was it clearly separated from retrieved facts and limited to allowed supplement scope? If any answer is "no", correct the process first.