Source Code
Airweave Search
Search and retrieve context from Airweave collections using the search script at {baseDir}/scripts/search.py.
When to Search
Search when the user:
- Asks about data in their connected apps ("What did we discuss in Slack about...")
- Needs to find documents, messages, issues, or records
- Asks factual questions about their workspace ("Who is responsible for...", "What's our policy on...")
- References specific tools by name ("in Notion", "on GitHub", "in Jira")
- Needs recent information you don't have in your training
- Needs you to check app data for context ("check our Notion docs", "look at the Jira ticket")
Don't search when:
- User asks general knowledge questions (use your training)
- User already provided all needed context in the conversation
- The question is about Airweave itself, not data within it
Query Formulation
Turn user intent into effective search queries:
| User Says | Search Query |
|---|---|
| "What did Sarah say about the launch?" | "Sarah product launch" |
| "Find the API documentation" | "API documentation" |
| "Any bugs reported this week?" | "bug report issues" |
| "What's our refund policy?" | "refund policy customer" |
Tips:
- Use natural language โ Airweave uses semantic search
- Include context โ "pricing feedback" beats just "pricing"
- Be specific but not too narrow
- Skip filler words like "please find", "can you search for"
Running a Search
Execute the search script:
python3 {baseDir}/scripts/search.py "your search query"
Optional parameters:
--limit Nโ Max results (default: 20)--temporal Nโ Temporal relevance 0-1 (default: 0, use 0.7+ for "recent", "latest")--strategy TYPEโ Retrieval strategy: hybrid, semantic, keyword (default: hybrid)--rawโ Return raw results instead of AI-generated answer--expandโ Enable query expansion for broader results--rerank / --no-rerankโ Toggle LLM reranking (default: on)
Examples:
# Basic search
python3 {baseDir}/scripts/search.py "customer feedback pricing"
# Recent conversations
python3 {baseDir}/scripts/search.py "product launch updates" --temporal 0.8
# Find specific document
python3 {baseDir}/scripts/search.py "API authentication docs" --strategy keyword
# Get raw results for exploration
python3 {baseDir}/scripts/search.py "project status" --limit 30 --raw
# Broad search with query expansion
python3 {baseDir}/scripts/search.py "onboarding" --expand
Handling Results
Interpreting scores:
- 0.85+ โ Highly relevant, use confidently
- 0.70-0.85 โ Likely relevant, use with context
- 0.50-0.70 โ Possibly relevant, mention uncertainty
- Below 0.50 โ Weak match, consider rephrasing
Presenting to users:
- Lead with the answer โ don't start with "I found 5 results"
- Cite sources โ mention where info came from ("According to your Slack conversation...")
- Synthesize โ combine relevant parts into a coherent response
- Acknowledge gaps โ if results don't fully answer, say so
Handling No Results
If search returns nothing useful:
- Broaden the query โ remove specific terms
- Try different phrasing โ use synonyms
- Increase limit โ fetch more results
- Ask for clarification โ user might have more context
Parameter Reference
See PARAMETERS.md for detailed parameter guidance.
Examples
See EXAMPLES.md for complete search scenarios.