DeepSearcher 结合推理 LLM(OpenAI o1、o3-mini、DeepSeek、Grok 3、Claude 3.7 Sonnet 等)和向量数据库(Milvus、Zilliz Cloud 等),基于私有数据进行搜索、评估和推理,提供高度准确的答案和全面的报告。本项目适用于企业知识管理、智能问答系统、信息检索场景。
主要功能
- 私有数据搜索:在保证数据安全的同时,最大化利用企业内部数据。必要时,它可以集成在线内容以获得更准确的答案。
- Vector Database Management:支持 Milvus 和其他 Vector 数据库,允许数据分区以实现高效检索。
- 灵活的嵌入选项:与多种嵌入模型兼容,以实现最佳选择。
- 多个 LLM 支持:支持 DeepSeek、OpenAI 和其他大型模型,用于智能问答和内容生成。
- Document Loader:支持本地文件加载,Web 爬虫功能正在开发中。
安装和使用
使用 pip 安装 DeepSearcher:
# 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 .
在环境变量中准备。如果您在配置中更改了 LLM,请务必准备相应的 API 密钥。OPENAI_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
详细配置:
- LLM 配置
config.set_provider_config("llm", "(LLMName)", "(Arguments dict)")
“LLMName” 可以是以下之一:[“DeepSeek”, “OpenAI”, “XAI”, “SiliconFlow”, “PPIO”, “TogetherAI”, “Gemini”, “Ollama”]
- 嵌入模型配置
config.set_provider_config("embedding", "(EmbeddingModelName)", "(Arguments dict)")
“EmbeddingModelName” 可以是以下之一: [“MilvusEmbedding”, “OpenAIEmbedding”, “VoyageEmbedding”, “SiliconflowEmbedding”]
- Vector 数据库配置
config.set_provider_config("vector_db", "(VectorDBName)", "(Arguments dict)")
“VectorDBName” 可以是以下之一:[“Milvus”] (开发中)。“Arguments dict” 是一个字典,其中包含 Vector Database 类的必要参数。
- File Loader 配置
config.set_provider_config("file_loader", "(FileLoaderName)", "(Arguments dict)")
“FileLoaderName” 可以是以下之一: [“PDFLoader”, “TextLoader”, “UnstructuredLoader”]
“Arguments dict” 是一个字典,其中包含 File Loader 类的必要参数。
- Web 爬虫配置
config.set_provider_config("web_crawler", "(WebCrawlerName)", "(Arguments dict)")
“WebCrawlerName” 可以是以下之一: [“FireCrawlCrawler”, “Crawl4AICrawler”, “JinaCrawler”]
“Arguments dict” 是一个字典,其中包含 Web Crawler 类的必要参数。
部署
配置模块
您可以通过修改 config.yaml 来配置所有参数,以使用默认模块设置您的系统。 例如,在 YAML 文件的部分中设置 u。OPENAI_API_KEYllm
开始服务
主脚本将运行默认地址的 FastAPI 服务。localhost:8000
$ python main.py
通过浏览器访问
您可以在浏览器中打开 url http://localhost:8000/docs 以访问 Web 服务。 点击 “Try it out” 按钮,它允许您填写参数并直接与 API 交互。