# deep-searcher **Repository Path**: bitecode/deep-searcher ## Basic Information - **Project Name**: deep-searcher - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-22 - **Last Updated**: 2025-02-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DeepSearcher DeepSearcher combines reasoning LLMs (OpenAI o1, o3-mini, DeepSeek, Grok 3 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.  ## 🚀 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  ## 📖 Quick Start ### Installation Install DeepSearcher using pip: ```bash # Clone the repository git clone https://github.com/zilliztech/deep-searcher.git # MAKE SURE the python version is greater than or equal to 3.10 # Recommended: Create a Python virtual environment cd deep-searcher python3 -m venv .venv source .venv/bin/activate # Install dependencies pip install -e . ``` 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. ### Quick start demo ```python 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": "gpt-4o-mini"}) 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", "Grok", "SiliconFlow", "TogetherAI", "Gemini"]
The "Arguments dict" is a dictionary that contains the necessary arguments for the LLM class.
Make sure you have prepared your OPENAI API KEY as an env variable OPENAI_API_KEY
.
config.set_provider_config("llm", "OpenAI", {"model": "gpt-4o"})
More details about OpenAI models: https://platform.openai.com/docs/models
Make sure you have prepared your DEEPSEEK API KEY as an env variable DEEPSEEK_API_KEY
.
config.set_provider_config("llm", "DeepSeek", {"model": "deepseek-chat"})
More details about DeepSeek: https://api-docs.deepseek.com/
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-V3"})
More details about SiliconFlow: https://docs.siliconflow.cn/quickstart
Make sure you have prepared your TOGETHER API KEY as an env variable TOGETHER_API_KEY
.
config.set_provider_config("llm", "TogetherAI", {"model": "deepseek-ai/DeepSeek-V3"})
You need to install together before running, execute: pip install together
. More details about TogetherAI: https://www.together.ai/
Make sure you have prepared your XAI API KEY as an env variable XAI_API_KEY
.
config.set_provider_config("llm", "Grok", {"model": "grok-2-latest"})
More details about Grok: https://docs.x.ai/docs/overview#featured-models
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
config.set_provider_config("embedding", "(EmbeddingModelName)", "(Arguments dict)")
The "EmbeddingModelName" can be one of the following: ["MilvusEmbedding", "OpenAIEmbedding", "VoyageEmbedding"]
The "Arguments dict" is a dictionary that contains the necessary arguments for the embedding model class.
config.set_provider_config("embedding", "MilvusEmbedding", {"model": "BAAI/bge-base-en-v1.5"})
More details about Pymilvus: https://milvus.io/docs/embeddings.md
Make sure you have prepared your OpenAI API KEY as an env variable OPENAI_API_KEY
.
config.set_provider_config("embedding", "OpenAIEmbedding", {"model": "text-embedding-3-small"})
More details about OpenAI models: https://platform.openai.com/docs/guides/embeddings/use-cases
Make sure you have prepared your VOYAGE API KEY as an env variable VOYAGE_API_KEY
.
config.set_provider_config("embedding", "VoyageEmbedding", {"model": "voyage-3"})
You need to install voyageai before running, execute: pip install voyageai
. More details about VoyageAI: https://docs.voyageai.com/embeddings/
config.set_provider_config("embedding", "BedrockEmbedding", {"model": "amazon.titan-embed-text-v2:0"})
You need to install boto3 before running, execute: pip install boto3
. More details about Amazon Bedrock: https://docs.aws.amazon.com/bedrock/
config.set_provider_config("vector_db", "(VectorDBName)", "(Arguments dict)")
The "VectorDBName" can be one of the following: ["Milvus"] (Under development)
The "Arguments dict" is a dictionary that contains the necessary arguments for the Vector Database class.
config.set_provider_config("vector_db", "Milvus", {"uri": "./milvus.db", "token": ""})
More details about Milvus Config:
uri
as a local file, e.g. ./milvus.db
, is the most convenient method, as it automatically utilizes Milvus Lite to store all data in this file.
http://localhost:19530
, as your uri
.
uri
and token
according to the Public Endpoint and API Key in Zilliz Cloud.
config.set_provider_config("file_loader", "(FileLoaderName)", "(Arguments dict)")
The "FileLoaderName" can be one of the following: ["PDFLoader", "TextLoader", "UnstructuredLoader"]
The "Arguments dict" is a dictionary that contains the necessary arguments for the File Loader class.
Make sure you have prepared your Unstructured API KEY and API URL as env variables UNSTRUCTURED_API_KEY
and UNSTRUCTURED_API_URL
.
config.set_provider_config("file_loader", "UnstructuredLoader", {})
Currently supported file types: ["pdf"] (Under development)
You need to install unstructured-ingest before running, execute: pip install unstructured-ingest
. More details about Unstructured: https://docs.unstructured.io/ingestion/overview
config.set_provider_config("web_crawler", "(WebCrawlerName)", "(Arguments dict)")
The "WebCrawlerName" can be one of the following: ["FireCrawlCrawler", "Crawl4AICrawler", "JinaCrawler"]
The "Arguments dict" is a dictionary that contains the necessary arguments for the Web Crawler class.
Make sure you have prepared your FireCrawl API KEY as an env variable FIRECRAWL_API_KEY
.
config.set_provider_config("web_crawler", "FireCrawlCrawler", {})
More details about FireCrawl: https://docs.firecrawl.dev/introduction
Make sure you have run crawl4ai-setup
in your environment.
config.set_provider_config("web_crawler", "Crawl4AICrawler", {})
You need to install crawl4ai before running, execute: pip install crawl4ai
. More details about Crawl4AI: https://docs.crawl4ai.com/
Make sure you have prepared your Jina Reader API KEY as an env variable JINA_API_TOKEN
.
config.set_provider_config("web_crawler", "JinaCrawler", {})
More details about Jina Reader: https://jina.ai/reader/