deep-searcher is a free, open source machine learning infrastructure project written in Python and released under Apache-2.0. It has 8,269 GitHub stars, 803 forks and 55 open issues, and was last pushed 10 months ago. On this registry it ranks #21 of 57 tracked projects in Machine Learning Infrastructure, with 5 head-to-head comparisons available. It gained 1 stars over the last 3 tracked days.

What is deep-searcher?

What it is

DeepSearcher is an open-source deep research tool that combines large language models with vector databases to search, evaluate, and reason over private data, producing accurate answers and comprehensive reports. Written in Python and released under the Apache-2.0 license, it lives in the AI and machine learning ecosystem as a machine learning infrastructure project, built around agentic retrieval-augmented generation and the Zilliz/Milvus vector search stack. The project has been on GitHub for two years, carries 8265 stars and 803 forks, and had its most recent push on 19 November 2025.

The concrete problem it solves is that enterprise knowledge is usually locked inside internal documents that public research tools cannot reach. DeepSearcher maximizes the use of enterprise internal data while keeping data security intact, and when it is necessary it can integrate online content for more accurate answers. Instead of sending proprietary material to a hosted research service, a team loads its own files into a vector store it controls, then asks questions in natural language and receives a synthesized report. The README positions it for enterprise knowledge management, intelligent question and answer systems, and information retrieval scenarios.

Key capabilities

  • Private data search that maximizes use of enterprise internal data while preserving data security, with optional integration of online content for accuracy.
  • Vector database management supporting Milvus and other vector databases, with data partitioning for efficient retrieval.
  • Flexible embedding options compatible with multiple embedding models, such as OpenAIEmbedding with text-embedding-ada-002.
  • Multiple LLM support, including DeepSeek, OpenAI, XAI, SiliconFlow, Aliyun, PPIO, TogetherAI, Gemini, Ollama, Novita, and Jiekou.AI.
  • Document loader that supports local file loading from a path or a directory.
  • Web crawling through load_from_website, which requires a FIRECRAWL_API_KEY environment variable.
  • Programmatic configuration of providers through config.set_provider_config for both the LLM and the embedding model.

Who uses it and how

  • Enterprise knowledge management teams that need answers grounded in internal documents rather than public web content.
  • Intelligent question and answer systems built by calling query after loading data and initializing configuration.
  • Information retrieval workflows that load a directory of local files with load_from_local_files, then request a report with a prompt such as "Write a report about xxx."
  • Research pipelines that mix internal files with web sources by adding load_from_website URLs alongside local paths.
  • Developers who swap models freely, changing the LLM provider and embedding provider in the configuration while supplying the matching API key.

Getting started

Install with pip install deepsearcher, optionally with extras such as pip install "deepsearcher[ollama]", or clone the repository and run `

project readme (upstream, from github) — read inline

DeepSearcher

License DeepWiki Twitter discord


DeepSearcher combines cutting-edge LLMs (OpenAI o3, Qwen3, DeepSeek, Grok 4, Claude 4 Sonnet, Llama 4, QwQ, etc.) and Vector Databases (Milvus, Zilliz Cloud etc.) to perform search, evaluation, and reasoning based on private data, providing highly accurate answer and comprehensive report. This project is suitable for enterprise knowledge management, intelligent Q&A systems, and information retrieval scenarios.

Architecture

🚀 Features

  • Private Data Search: Maximizes the utilization of enterprise internal data while ensuring data security. When necessary, it can integrate online content for more accurate answers.
  • Vector Database Management: Supports Milvus and other vector databases, allowing data partitioning for efficient retrieval.
  • Flexible Embedding Options: Compatible with multiple embedding models for optimal selection.
  • Multiple LLM Support: Supports DeepSeek, OpenAI, and other large models for intelligent Q&A and content generation.
  • Document Loader: Supports local file loading, with web crawling capabilities under development.

🎉 Demo

demo

📖 Quick Start

Installation

Install DeepSearcher using one of the following methods:

Option 1: Using pip

Create and activate a virtual environment(Python 3.10 version is recommended).

python -m venv .venv
source .venv/bin/activate

Install DeepSearcher

pip install deepsearcher

For optional dependencies, e.g., ollama:

pip install "deepsearcher[ollama]"
Option 2: Install in Development Mode

We recommend using uv for faster and more reliable installation. Follow the offical installation instructions to install it.

Clone the repository and navigate to the project directory:

git clone https://github.com/zilliztech/deep-searcher.git && cd deep-searcher

Synchronize and install dependencies:

uv sync
source .venv/bin/activate

For more detailed development setup and optional dependency installation options, see CONTRIBUTING.md.

Quick start demo

To run this quick start demo, please prepare your OPENAI_API_KEY in your environment variables. If you change the LLM in the configuration, make sure to prepare the corresponding API key.

from deepsearcher.configuration import Configuration, init_config
from deepsearcher.online_query import query

config = Configuration()

# Customize your config here,
# more configuration see the Configuration Details section below.
config.set_provider_config("llm", "OpenAI", {"model": "o1-mini"})
config.set_provider_config("embedding", "OpenAIEmbedding", {"model": "text-embedding-ada-002"})
init_config(config = config)

# Load your local data
from deepsearcher.offline_loading import load_from_local_files
load_from_local_files(paths_or_directory=your_local_path)

# (Optional) Load from web crawling (`FIRECRAWL_API_KEY` env variable required)
from deepsearcher.offline_loading import load_from_website
load_from_website(urls=website_url)

# Query
result = query("Write a report about xxx.") # Your question here

Configuration Details:

LLM Configuration
config.set_provider_config("llm", "(LLMName)", "(Arguments dict)")

The "LLMName" can be one of the following: ["DeepSeek", "OpenAI", "XAI", "SiliconFlow", "Aliyun", "PPIO", "TogetherAI", "Gemini", "Ollama", "Novita", "Jiekou.AI"]

The "Arguments dict" is a dictionary that contains the necessary arguments for the LLM class.

Example (OpenAI)

Make sure you have prepared your OPENAI API KEY as an env variable OPENAI_API_KEY.

config.set_provider_config("llm", "OpenAI", {"model": "o1-mini"})

More details about OpenAI models: https://platform.openai.com/docs/models

Example (Qwen3 from Aliyun Bailian)

Make sure you have prepared your Bailian API KEY as an env variable DASHSCOPE_API_KEY.

config.set_provider_config("llm", "Aliyun", {"model": "qwen-plus-latest"})

More details about Aliyun Bailian models: https://bailian.console.aliyun.com

Example (Qwen3 from OpenRouter)
config.set_provider_config("llm", "OpenAI", {"model": "qwen/qwen3-235b-a22b:free", "base_url": "https://openrouter.ai/api/v1", "api_key": "OPENROUTER_API_KEY"})

More details about OpenRouter models: https://openrouter.ai/qwen/qwen3-235b-a22b:free

Example (DeepSeek from official)

Make sure you have prepared your DEEPSEEK API KEY as an env variable DEEPSEEK_API_KEY.

config.set_provider_config("llm", "DeepSeek", {"model": "deepseek-reasoner"})

More details about DeepSeek: https://api-docs.deepseek.com/

Example (DeepSeek from SiliconFlow)

Make sure you have prepared your SILICONFLOW API KEY as an env variable SILICONFLOW_API_KEY.

config.set_provider_config("llm", "SiliconFlow", {"model": "deepseek-ai/DeepSeek-R1"})

More details about SiliconFlow: https://docs.siliconflow.cn/quickstart

Example (DeepSeek from TogetherAI)

Make sure you have prepared your TOGETHER API KEY as an env variable TOGETHER_API_KEY.

For deepseek R1:
config.set_provider_config("llm", "TogetherAI", {"model": "deepseek-ai/DeepSeek-R1"})
For Llama 4:
config.set_provider_config("llm", "TogetherAI", {"model": "meta-llama/Llama-4-Scout-17B-16E-Instruct"})

You need to install together before running, execute: pip install together. More details about TogetherAI: https://www.together.ai/

Example (XAI Grok)

Make sure you have prepared your XAI API KEY as an env variable XAI_API_KEY.

config.set_provider_config("llm", "XAI", {"model": "grok-4-0709"})

More details about XAI Grok: https://docs.x.ai/docs/overview#featured-models

Example (Claude)

Make sure you have prepared your ANTHROPIC API KEY as an env variable ANTHROPIC_API_KEY.

config.set_provider_config("llm", "Anthropic", {"model": "claude-sonnet-4-0"})

More details about Anthropic Claude: https://docs.anthropic.com/en/home

Example (Google Gemini)

Make sure you have prepared your GEMINI API KEY as an env variable GEMINI_API_KEY.

config.set_provider_config('llm', 'Gemini', { 'model': 'gemini-2.0-flash' })

You need to install gemini before running, execute: pip install google-genai. More details about Gemini: https://ai.google.dev/gemini-api/docs

Example (DeepSeek from PPIO)

Make sure you have prepared your PPIO API KEY as an env variable PPIO_API_KEY. You can create an API Key here.

config.set_provider_config("llm", "PPIO", {"model": "deepseek/deepseek-r1-turbo"})

More details about PPIO: https://ppinfra.com/docs/get-started/quickstart.html?utm_source=github_deep-searcher

Example (Claude Sonnet 4.5 from Jiekou.AI)

Make sure you have prepared your Jiekou.AI API KEY as an env variable JIEKOU_API_KEY. You can create an API Key here.

config.set_provider_config("llm", "JiekouAI", {"model": "claude-sonnet-4-5-20250929"})

More details about

readme truncated — read the full docs on github

Frequently asked questions

Is deep-searcher free to use?

deep-searcher is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does deep-searcher do?

Open Source Deep Research Alternative to Reason and Search on Private Data. Written in Python.

What is deep-searcher written in?

deep-searcher is primarily written in Python. Its source is publicly available at https://github.com/zilliztech/deep-searcher, and it has 8,269 GitHub stars.