rewriting
Enhances vague queries for better retrieval with context-aware improvements. Use during adaptive retry when no relevant documents found, when queries are unclear, or when the user mentions query enhancement or rewriting.
When & Why to Use This Skill
The Query Rewriting skill for Claude agents optimizes information retrieval by transforming vague or underspecified user prompts into high-precision search queries. By leveraging context-aware improvements and adaptive retry logic, it ensures AI agents can overcome retrieval failures and find relevant documentation even when initial searches yield no results, significantly boosting the reliability of RAG (Retrieval-Augmented Generation) systems.
Use Cases
- Adaptive Retry Logic: Automatically reformulating search terms when initial retrieval returns zero documents to uncover relevant information in a second pass.
- Contextual Clarification: Incorporating previous conversation history into follow-up questions (e.g., 'What about warranty?') to create explicit, standalone queries that include the specific product or topic context.
- Vague Query Expansion: Translating ambiguous user complaints like 'it won't work' into detailed troubleshooting search terms based on the current system state.
- Terminology Standardization: Expanding technical abbreviations and adding synonyms to queries to ensure compatibility with diverse knowledge base indexing styles.
| name | rewriting |
|---|---|
| description | Enhances vague queries for better retrieval with context-aware improvements. Use during adaptive retry when no relevant documents found, when queries are unclear, or when the user mentions query enhancement or rewriting. |
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 stringreasoning: 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"
}