返回 Skill 列表
extension
分类: AI Agent 能力无需 API Key

rewriting

增强模糊查询,通过上下文感知改进来提高检索效果。在自适应重试时使用,当没有找到相关文档、查询不明确或用户提到查询增强或重写时。

person作者: jakexiaohubgithub

Query Rewriting

Instructions

Rewrite queries using rewrite_query() in components/rewriter.py. Typically triggered when len(relevant_docs) == 0 during adaptive retry.

Default usage:

# During retry after no relevant docs found
previous_context = f"Previous query '{current_query}' found {len(docs)} documents but none were relevant."

rewrite_result = rewrite_query(current_query, previous_context=previous_context)
current_query = rewrite_result['rewritten_query']

Rewriting strategies:

  • Expand abbreviations: "fast computer" → "high performance laptop processor"
  • Clarify vague terms: "won't work" → "troubleshooting device not powering on"
  • Incorporate context: "What about warranty" + product context → "warranty coverage for [product]"
  • Add synonyms: "cheap" → "affordable budget inexpensive"

Returns:

  • rewritten_query: Enhanced query string
  • reasoning: Explanation of changes

Critical for adaptive retry: Call only when len(relevant_docs) == 0 and num_retries < RETRY_LIMIT. Pass context from previous failed attempt.

Implementation: components/rewriter.py, uses REWRITE_MODEL from config.py (default: Haiku 4.5), temperature 0.3.

Examples

Example 1: Basic rewriting (no context)

# Input
result = rewrite_query("fast computer")

# Output
{
    "rewritten_query": "high performance laptop with fast processor and SSD storage",
    "reasoning": "Expanded 'fast' to specific performance characteristics"
}

Example 2: Context-aware rewriting

# Input
result = rewrite_query(
    "What about warranty",
    previous_context="User interested in ZenithBook 13 Evo laptop"
)

# Output
{
    "rewritten_query": "What is the warranty coverage and terms for ZenithBook 13 Evo laptop",
    "reasoning": "Incorporated product context and made question explicit"
}

Example 3: Adaptive retry integration

# After grading finds no relevant docs
if len(relevant_documents) == 0 and num_retries < RETRY_LIMIT:
    # Build context
    previous_context = f"Previous query '{current_query}' found {len(retrieved_documents)} documents but none were relevant."

    # Rewrite
    rewrite_result = rewrite_query(current_query, previous_context)
    current_query = rewrite_result['rewritten_query']

    print(f"Retry {num_retries + 1}: {current_query}")
    num_retries += 1
    # Loop back to retrieval

Example 4: Vague troubleshooting

# Input
result = rewrite_query("won't work")

# Output
{
    "rewritten_query": "troubleshooting device not functioning properly or not turning on",
    "reasoning": "Clarified vague complaint into specific troubleshooting query"
}