2025 年云原生运维实战文档 X 篇原创计划 第 05 篇 |AI 最佳实战「2025」系列 第 03 篇
你好,我是术哥,云原生开源技术布道者:KubeSphere Ambassador、Milvus 北辰使者。很高兴在「运维有术」与你相遇。
OpenAI 最近推出了一款革命性产品 - Deep Research,这是一款基于全网权威信源搜索打造的报告生成神器,一经推出就引爆了全球科技圈。
但是,这款"神器"也有它的短板:每月200美金的订阅费着实不菲;而且在实际应用中,不同的大模型各有所长,单一模型往往难以满足多样化的需求。更关键的是,对于企业和个人用户来说,最有价值的数据往往都是那些存储在本地的非结构化资料,比如内部项目文档、研发设计稿、解决方案、项目代码等。
那么问题来了:企业和个人用户如何才能既享受Deep Research的强大功能,又能灵活运用各类大模型,还能完美结合本地数据呢?
好消息是,向量数据库领军企业 Zilliz 给出了一个完美解决方案!他们基于 DeepSeek 等主流开源模型,对传统 RAG 方案进行了重大升级,推出了重磅开源项目 Deep Searcher。这个项目不仅完美继承了Deep Research 的核心理念,更支持企业级私有化部署!
这个项目的火爆程度超乎想象 - 仅仅一周时间就在Github上斩获800+星,引发了开发者社区的热烈讨论,成为当下最受瞩目的企业级DeepResearch开源方案。
项目传送门:https://github.com/zilliztech/deep-searcher
本文,我将为大家带来重磅实战教程,手把手教你如何结合基石智算的满血版671B DeepSeek-R1和 Deep Searcher,打造属于自己的 AI 搜索引擎。 1. 什么是 Deep Searcher
Deep Searcher 结合强大的 LLM(DeepSeek、OpenAI 等)和向量数据库(Milvus 等),基于隐私数据进行搜索、评估和推理,提供高精度答案和综合报告。该项目适用于企业知识管理、智能问答系统和信息检索场景。
deep-searcher-arch
功能特性:
更多信息,可以查看 Zilliz 官方发布的介绍文档,官宣,DeepSearcher开源:告别传统RAG,私有数据+Deepseek,打造本地版Deep Research
在 DeepSearcher 出现之前,企业做本地知识检索与专业内容生产的链路,一直是由一个个断点组成。
在 Simple RAG 时代,我们问题拆解,本地知识检索,互联网知识检索,基于检索的内容生成,是在不同环节被拆解完成的。
到了 Graph RAG 时代,检索与带有一定推理能力的内容生成成为可能,不过对于如何将问题深度拆解,到底需要检索什么内容,仍处于比较初级的形态。
到了 Deep Searcher 时代,一方面是模型推理能力的进步,一方面是算力的提升,从提问到问题拆解,到不同内容的检索,到生成,得以在一个环节内执行,RAG完成了从一个工具,到完整解决问题的角色进化。
接下来,我们开始实战操作。
在 DeepSeek 官方入口频繁被挤崩且无法充值的背景下,很多云厂商也提供了DeepSeek 服务,如阿里云、腾讯云、华为云等,本文使用基石智算(CoresHub)提供的 671B 满血版 DeepSeek-R1 。
为什么选择基石智算,可以参阅671B 满血 DeepSeek-R1 白嫖系列之基石智算(青云出品)!5000 万 token 免费用!。
而且,CoresHub 目前搞活动,注册即送 50元代金券,约等于 5000 万 tokens, 足够用来完成本文的实战内容。
通过以下链接 https://account.coreshub.cn/signup?invite=ejNRQjJqd2g=
,访问基石智算官网并注册账户。
在顶部导航栏,点击「大模型服务 」,进入大模型服务管理页面,在左侧导航栏中选择「 API 密钥管理」-「创建API 密钥」。
创建完成后要妥善保存个人的 API Key,文章后续需要使用该 Key。另外个人 Key 注意保密,如果出现泄漏可以删除重新生成。
coreshub-maas-global-keys-2
目前, Deep Searcher 官方还没有提供 Docker 镜像,因此本文采用源码的方式安装 ,有能力的可以自行构建。
git clone https://github.com/zilliztech/deep-searcher.git
安装 DeepSearcher 要求 Python 3.10 及以上版本,否则会报错。
ERROR: Package 'deepsearcher' requires a different Python: 3.9.9 not in '>=3.10'
在本次实战中,我们使用的操作系统是 openEuler 22.03 LTS-SP3 。由于系统默认的 Python 版本是 3.9.9,不满足 DeepSearcher 最低要求,因此我们需要创建一个独立的 Python 环境。这里我选择使用 conda 这个强大的环境管理工具来创建和管理 Python 环境。当然,如果你更熟悉其他工具(如 pyenv、virtualenv 等),也可以使用自己习惯的方式。
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py310_25.1.1-2-Linux-x86_64.sh
chmod u+x Miniconda3-py310_25.1.1-2-Linux-x86_64.sh
./Miniconda3-py310_25.1.1-2-Linux-x86_64.sh
Do you accept the license terms? [yes|no]
>>> yes
Miniconda3 will now be installed into this location:
/root/miniconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/root/miniconda3] >>> /opt/miniconda3
Downloading and Extracting Packages:
Preparing transaction: done
Executing transaction: done
installation finished.
Do you wish to update your shell profile to automatically initialize conda?
This will activate conda on startup and change the command prompt when activated.
If you'd prefer that conda's base environment not be activated on startup,
run the following command when conda is activated:
conda config --set auto_activate_base false
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>>
You have chosen to not have conda modify your shell scripts at all.
To activate conda's base environment in your current shell session:
eval "$(/opt/miniconda3/bin/conda shell.YOUR_SHELL_NAME hook)"
To install conda's shell functionsfor easier access, first activate, then:
conda init
Thank you for installing Miniconda3!
eval "$(/opt/miniconda3/bin/conda shell.bash hook)"
conda create --name deep-searcher python=3.10
conda activate deep-searcher
正确执行的结果如下,注意 shell 环境前缀:
deepsearcher-python-venv-version
cd deep-searcher
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple -e .
DeepSearcher 需要一个向量数据库来支持其强大的语义搜索能力。目前,DeepSearcher 仅支持业界领先的向量数据库 Milvus。为了方便大家快速上手体验,本文采用 Milvus 的 Lite 版本,它会将数据文件以 milvus.db
的形式保存在项目运行目录下。
小贴士:在实际生产环境中,建议使用 Docker 或 Kubernetes(K8s) 来独立部署 Milvus,以获得更好的性能和可靠性。
为了让大家更好地理解 DeepSearcher 的强大功能,我们以最近热映的动画电影《哪吒2》为例,准备一个简单的人物关系图谱数据。这个例子不仅贴近生活,也能让我们直观地感受 AI 是如何理解和处理复杂的人物关系的。
首先,让我们在项目目录下新建测试数据文件。请在 DeepSearcher 目录下,新建文件examples/data/nezha.md
,然后将下面的内容复制进去并保存。这个关系图谱包含了哪吒、敖丙等主要角色的关键信息,用来测试 DeepSearcher 的语义理解能力。
## 哪吒 关系图谱
{
"哪吒": {
"父亲": "李靖",
"母亲": "殷夫人",
"师父": "太乙真人",
"敌人": ["敖丙", "申公豹"],
"法宝": ["混天绫", "火尖枪"]
},
"敖丙": {
"父亲": "东海龙王",
"师父": "申公豹",
"盟友": ["东海龙王"],
"弱点": "龙筋"
},
"申公豹": {
"师门": "截教",
"阴谋": "挑起龙族与陈塘关矛盾"
},
"太乙真人": {
"法宝": "九龙神火罩",
"任务": "助哪吒渡劫"
}
}
DeepSearcher 运行过程中需要访问 huggingface 下载模型,访问 huggingface 异常时报错如下:
OSError: We couldn't connect to 'https://huggingface.co' to load this file, couldn't find it in the cached files and it looks like GPTCache/paraphrase-albert-small-v2 is not the path to a directory containing a file named config.json.
Checkout your internet connection or see how to run the library in offline mode at 'https://huggingface.co/docs/transformers/installation#offline-mode'.
网络访问受限时,请设置如下环境变量:
export HF_ENDPOINT=https://hf-mirror.com
如遇到其他问题,请到 DeepSearcher 官方 Github 项目反馈
examples/basic_example.py
文件,做如下修改deepsearcher-ask-all
修改内容-1
设置基石智算的 DeepSeek 服务 API 相关信息。
目前,DeepSearcher 默认支持多个主流大模型服务商,包括 DeepSeek、OpenAI、SiliconFlow、TogetherAI 和 Gemini。不过别担心,我们完全可以通过简单的配置,让它完美对接基石智算提供的 DeepSeek 服务。
当然,如果你想要接入其他大模型服务商,也可以增加源码中的 LLM 配置,具体方法请参考官方文档。
config.set_provider_config("llm", "DeepSeek", {"model": "DeepSeek-R1", "api_key": "sk-xxxxx","base_url": "https://openapi.coreshub.cn/v1"})
model: 使用 DeepSeek-R1,也可根据需求参考基石智算官方可用模型列表替换为其他大模型。 api_key: 请换成自己的 API Key 的实际值。
修改内容-2
实现读取自定义的哪吒关系图谱文件examples/data/nezha.md
,然后让大模型 DeepSeek R1 针对于这个文件回答问题。
修改内容-3
修改需要提问的内容:哪吒和敖丙的师傅分别是谁?他们的关系如何?
# 确保你在该项目的根目录
python examples/basic_example.py
运行后,将会看到整个问题思考解答的部分流程:
deepsearcher-ask-nezha-1
在最后会给出一个类似于下图的最终答案,并在最后打印出了消耗的 token 数目。
deepsearcher-ask-nezha-2
完整的答案如下:
==== FINAL ANSWER====
<think>
好的,我现在需要回答用户的问题,关于哪吒和敖丙的师傅分别是谁,以及他们之间的关系如何。首先,我得仔细查看用户提供的相关文档块,确保信息准确。用户已经分解了三个子问题,我需要逐一解答。
首先,哪吒的师傅是谁?根据提供的资料,哪吒的师傅是太乙真人,来自乾元山金光洞,使用法宝如乾坤圈和混天绫,而且太乙真人性格幽默,但有时显得不够可靠。这部分信息比较明确,应该没有问题。
接下来,敖丙的师傅是谁?文档中提到是申公豹,他来自昆仑山但后来被驱逐,加入截教。申公豹性格阴险狡诈,与太乙真人是对立的师兄弟关系。这点需要确认,是否有其他可能的师傅,但根据提供的资料,应该就是申公豹,没有矛盾之处。
然后是两人的关系。文档指出,哪吒和敖丙最初是宿敌,因为敖丙水淹陈塘关导致冲突,但后来在对抗共同敌人时成为盟友。他们之间有复杂的亦敌亦友的关系,既有对抗也有合作。这需要综合描述,确保涵盖敌对和合作的两个方面。
还需要注意师傅之间的关系,太乙真人和申公豹是师兄弟,但立场对立,属于阐教和截教的斗争。这点能丰富答案,显示师傅间的矛盾如何影响徒弟的关系。不过用户的问题主要是问哪吒和敖丙的关系,所以师傅的关系可以作为补充,但不要喧宾夺主。
检查是否有遗漏的信息:比如哪吒和敖丙是否有其他互动,或者师傅对他们的教导方式是否影响他们的行为。比如太乙真人给予哪吒法宝,而申公豹可能教唆敖丙进行复仇,这些细节可以加入,让总结更详细。
再考虑用户可能的深层需求,他们可能对神话故事中的角色关系感兴趣,或者想了解封神演义中的情节。因此,在总结时不仅要列出事实,还要解释他们的关系转变和背景因素,比如教派斗争如何导致冲突,以及合作的原因。
最后,确保语言简洁明了,结构清晰,分点回答每个子问题,然后综合他们的关系。避免使用过于专业的术语,让所有读者都能理解。现在将这些点组织成一个连贯的总结,涵盖师傅身份、师傅关系、哪吒与敖丙的关系演变,以及背后的教派矛盾。
</think>
根据《封神演义》及相关神话故事设定,针对哪吒与敖丙师徒关系及角色互动作出如下专业分析:
一、师承体系解析
1. 哪吒的师傅
阐教十二金仙之一的太乙真人,道场位于乾元山金光洞。其教学特征鲜明:
- 授予哪吒四大核心法宝:乾坤圈、混天绫、火尖枪、风火轮
- 采用"莲花重塑肉身"秘术实现哪吒复活
- 性格设定兼具仙风道骨与世俗幽默,教学过程中常出现喜剧化表现
2. 敖丙的师傅
截教代表申公豹,原属昆仑山玉虚宫门人,后叛出阐教。其教学特点包括:
- 传授水族秘法及龙族专属战斗技
- 唆使敖丙实施「水淹陈塘关」复仇计划
- 作为封神大战关键推手,与太乙真人存在千年道统之争
二、角色关系演变
1. 宿敌阶段
敖丙奉师命摧毁陈塘关→哪吒被迫「剔骨还父」→引发生死对决
2. 转折契机
共抗石矶娘娘侵略→协同破解九曲黄河阵→经历封神天劫考验
3. 关系本质
• 立教根基冲突:阐教革新派 vs 截教传统派
• 命运共同体:均属「灵珠子转世」因果链关键环节
• 力量互补性:三昧真火(哪吒)与玄冰诀(敖丙)存在元素制衡
三、师门对抗映射
太乙与申公豹的矛盾本质是封神世界观的核心冲突:
1. 教义分歧:顺应天命 vs 截取生机
2. 资源争夺:洞天福地灵气分配
3. 代际传承:肉身成圣(哪吒)与妖族证道(敖丙)的修行路径之争
该人物关系架构深刻体现了中国古典神话中「劫数轮回」「因果相生」的哲学观念,师徒纽带与教派斗争的双重驱动,造就了这对经典角色的永恒叙事张力。
Consumed tokens: 9194
回答还是挺有意思的,当然,这篇文章只是一个简单的示例演示,更多关于 DeepSearcher 的用法,请参考DeepSearcher 项目。
Deep Searcher 目前处于初步发展阶段,功能也在不断的增强和迭代,有兴趣的小伙伴可以持续关注。