skills/43-wentorai-research-plugins/skills/research/deep-research/deep-searcher-guide/SKILL.md
Open deep research alternative for private data with vector search
npx skillsauth add brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research deep-searcher-guideInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Deep Searcher is an open-source deep research tool developed by Zilliz with over 8,000 GitHub stars, designed to be an open alternative to proprietary deep research systems like OpenAI's Deep Research and Gemini Deep Research. What distinguishes Deep Searcher is its focus on private data -- it enables researchers to conduct deep, iterative research over their own document collections, databases, and institutional knowledge bases rather than being limited to public web content.
The system combines vector search via Milvus (or other vector databases) with agentic RAG (Retrieval-Augmented Generation) to decompose complex research questions, retrieve relevant passages from your document collection, reason over the retrieved content, and iteratively refine its search until it can produce a comprehensive answer. This makes it particularly valuable for researchers who work with proprietary datasets, unpublished manuscripts, internal reports, or specialized domain corpora that are not available through web search.
Deep Searcher supports multiple LLM providers and embedding models, and can be deployed entirely on-premises for organizations with strict data privacy requirements. It is built on top of Milvus, the high-performance open-source vector database also created by Zilliz, ensuring scalable and efficient similarity search across large document collections.
# Install Deep Searcher
pip install deepsearcher
# Or clone for development
git clone https://github.com/zilliztech/deep-searcher.git
cd deep-searcher
pip install -e .
Deep Searcher requires a vector database and LLM access:
# Option 1: Milvus Lite (embedded, no separate server needed)
pip install pymilvus[model]
# Option 2: Full Milvus via Docker
docker run -d --name milvus \
-p 19530:19530 \
-p 9091:9091 \
milvusio/milvus:latest standalone
# Configure LLM access
export OPENAI_API_KEY=$OPENAI_API_KEY
# Or for local LLMs
export OLLAMA_BASE_URL=http://localhost:11434
Create a configuration file for your research setup:
from deepsearcher import DeepSearcher
from deepsearcher.config import Config
config = Config(
# Vector database settings
vector_db="milvus_lite", # or "milvus", "zilliz_cloud"
collection_name="research_papers",
# LLM settings
llm_provider="openai",
llm_model="gpt-4o",
# Embedding settings
embedding_model="text-embedding-3-small",
# Research settings
max_iterations=10,
chunk_size=1000,
chunk_overlap=200,
)
searcher = DeepSearcher(config)
Ingest your research documents into the vector database for searchable access:
# Load individual files
searcher.load_document("path/to/paper.pdf")
searcher.load_document("path/to/notes.md")
# Load entire directories
searcher.load_directory(
"path/to/papers/",
file_types=["pdf", "md", "txt", "docx"],
recursive=True,
)
# Load with metadata for filtering
searcher.load_document(
"path/to/paper.pdf",
metadata={
"author": "Smith et al.",
"year": 2024,
"topic": "transformer efficiency",
"venue": "NeurIPS",
}
)
Deep Searcher supports a wide range of document formats commonly used in academic research:
# Ask a research question over your document collection
result = searcher.research(
query="What methods have been proposed for reducing the "
"computational complexity of self-attention in transformers?",
)
print(result.answer)
print(f"Sources: {len(result.sources)}")
for source in result.sources:
print(f" - {source.document}: {source.chunk_preview[:100]}...")
Deep Searcher follows an iterative research pipeline:
# Watch the iterative research process
result = searcher.research(
query="Compare the approaches to efficient attention in the papers "
"I have collected, focusing on trade-offs between speed and quality",
verbose=True, # Print each research iteration
max_iterations=8,
)
# Access the research trace
for step in result.trace:
print(f"Iteration {step.iteration}:")
print(f" Sub-query: {step.query}")
print(f" Documents found: {step.num_results}")
print(f" Gap identified: {step.gap}")
Narrow your research to specific subsets of your collection:
# Research only within papers from a specific venue
result = searcher.research(
query="Novel loss functions for contrastive learning",
filters={"venue": "ICML", "year": {"$gte": 2023}},
)
# Research across specific document groups
result = searcher.research(
query="How do the baseline methods compare across my experiment logs?",
filters={"topic": "baseline-comparison"},
)
Deep Searcher can be combined with web search for comprehensive research that covers both your private collection and public sources:
from deepsearcher.sources import WebSearchSource
# Add web search as an additional source
config.add_source(WebSearchSource(
provider="tavily",
api_key_env="TAVILY_API_KEY",
))
# Research now spans both private documents and the web
result = searcher.research(
query="Recent advances in protein folding prediction",
sources=["private", "web"],
)
Export research results in formats suitable for academic use:
# Export as markdown report
result.export_markdown("research_report.md")
# Export citations in BibTeX format
result.export_citations("references.bib")
# Export the full research trace for reproducibility
result.export_trace("research_trace.json")
Run Deep Searcher as a service for team-wide access:
# Start the API server
deepsearcher serve --host 0.0.0.0 --port 8000
# Query via REST API
curl -X POST http://localhost:8000/research \
-H "Content-Type: application/json" \
-d '{"query": "What are the key findings in our latest experiments?"}'
Deep Searcher leverages Milvus for high-performance vector search, which means it can handle document collections ranging from hundreds to millions of documents efficiently. Key performance considerations include:
development
Conduct rigorous thematic analysis (TA) of qualitative data following Braun and Clarke's (2006) six-phase framework. Use whenever the user mentions 'thematic analysis', 'TA', 'Braun and Clarke', 'qualitative coding', 'identifying themes', or asks for help analysing interviews, focus groups, open-ended survey responses, or transcripts to identify patterns. Also trigger for questions about inductive vs theoretical coding, semantic vs latent themes, essentialist vs constructionist epistemology, building a thematic map, or writing up a qualitative findings section. Covers all six phases, the four upfront analytic decisions, the 15-point quality checklist, and the five common pitfalls. Produces a Word document write-up and an annotated thematic map. Does NOT cover IPA, grounded theory, discourse analysis, conversation analysis, or narrative analysis — use a different method for those.
development
Guide users through writing a systematic literature review (SLR) following the PRISMA 2020 framework. Use this skill whenever the user mentions 'systematic review', 'systematic literature review', 'SLR', 'PRISMA', 'PRISMA 2020', 'PRISMA flow diagram', 'PRISMA checklist', or asks for help writing, structuring, or auditing a literature review that follows reporting guidelines. Also trigger when the user asks about inclusion/exclusion criteria for a review, search strategies for databases like Scopus/WoS/PubMed, study selection processes, risk of bias assessment, or narrative synthesis for a review paper. This skill covers the full PRISMA 2020 checklist (27 items), produces a Word document manuscript in strict journal article format, generates an annotated PRISMA flow diagram, and enforces APA 7th Edition referencing throughout. It does NOT cover meta-analysis or statistical pooling. By Chuah Kee Man.
testing
Performs placebo-in-time sensitivity analysis with hierarchical null model and optional Bayesian assurance. Use when checking model robustness, verifying lack of pre-intervention effects, or estimating study power.
data-ai
Fit, summarize, plot, and interpret a chosen CausalPy experiment. Use after the causal method has been selected, including when configuring PyMC/sklearn models and scale-aware custom priors.