| name | deep-search-research-agent |
| title | DeepSearchQA: Bridging the Comprehensiveness Gap for Deep Research Agents |
| version | 0.0.2 |
| engine | skillxiv-v0.0.2-claude-opus-4.6 |
| license | MIT |
| url | https://arxiv.org/abs/2601.20975 |
| keywords | ["research-agent","information-retrieval","question-answering","deep-search","comprehensiveness"] |
| description | Build research agents that systematically search for comprehensive answers to complex questions by maintaining search state, iterating on queries, and validating answer completeness. Implement strategies for identifying knowledge gaps and conducting follow-up searches to ensure thorough coverage of topics. |
Problem
Research agents often provide incomplete answers to complex questions because they stop searching too early or fail to identify gaps in their knowledge. A single query rarely captures all relevant information, and agents need strategies to recognize when they have insufficient information and conduct targeted follow-up searches.
Solution
Implement a DeepSearchQA framework where agents:
- Maintain Search State: Track what has been searched, what answers have been found, and what gaps remain
- Identify Gaps: Use gap detection to recognize incomplete coverage of question aspects
- Iterate on Queries: Generate targeted follow-up searches based on identified gaps
- Validate Comprehensiveness: Check that answers cover multiple perspectives and dimensions of the question
- Stop Strategically: Determine when additional searches provide diminishing returns
When to Use
- Building research assistants for complex multi-faceted questions
- Question-answering systems requiring comprehensive coverage
- Literature review and synthesis tasks
- Competitive analysis and market research automation
- Policy analysis and decision-support systems
When NOT to Use
- Simple factual lookup questions (single search suffices)
- Time-sensitive applications (iterative searching adds latency)
- Narrow technical queries with definitive answers
- Constrained search budgets or API rate limits
Implementation
Step 1: Build Search State Management
Track what has been discovered and what gaps remain.
class SearchState:
"""Maintain comprehensive search state"""
def __init__(self, query):
self.original_query = query
self.search_history = []
self.discovered_answers = []
self.known_gaps = set()
self.relevant_subtopics = set()
self.coverage_map = {}
():
search_record = {
: query,
: (results),
: datetime.now(),
: .summarize_results(results)
}
.search_history.append(search_record)
result results:
answer = .extract_answer(result)
answer .discovered_answers:
.discovered_answers.append(answer)
():
.coverage_map = {
: .covers_aspect(, .discovered_answers),
: .covers_aspect(, .discovered_answers),
: .covers_aspect(, .discovered_answers),
: .covers_aspect(, .discovered_answers),
: .covers_aspect(, .discovered_answers),
: .covers_aspect(, .discovered_answers)
}
():
.update_coverage_map()
gaps = [aspect aspect, covered .coverage_map.items() covered]
.known_gaps = (gaps)
gaps
():
all_entities = .extract_all_entities(.discovered_answers)
explored = {e e all_entities .has_sufficient_coverage(e)}
all_entities - explored