免费的Gemini2.0,本地的DeepSeek-R1,加进化的Obsidian

免费的Gemini2.0,本地的DeepSeek-R1,加进化的Obsidian


很早以前,注意到一个开源项目:Khoj,当时我在大脑里标注的关键词是:支持Obsidian插件,Agent和本地知识库管理。不过在那个时间段,我正在构建科技公司的知识图谱,需要调用的外部工具更多,就只能将Khoj加入到To-Do List里了(当然还有个原因是因为当时不支持Gemini的API)。

这两天,恰逢对DeepSeek-R1、GPT的o1和o3、Gemini2.0、Claude3.5等进行比较和学习,就顺手把Khoj部署了起来。

首先,是Khoj网站首页的介绍,这个页面是在线版本的界面。免费可用,但是额度很少,收费版,30美金一个月,算是贵的了。

Khoj Pricing

不过,对我而言,一定是使用Self-Host的本地部署方式了,该项目开源,可以直接通过Python的PiP安装,或者直接使用docker。考虑到后台数据库,代码运行的沙箱,搜索引擎等都是容器化部署更方便,我直接选择了docker部署。

由于Windows下使用,要在WSL环境下,相对而言,Mac就更方便了(老生常谈,继续长期看衰Windows在AI时代逐渐掉队)。

进入安装过程:

下载一个docker桌面版。

在终端里安装一下docker-compose:

brew install docker-compose

下载khoj的docker-compose.yml

mkdir ~/.khoj && cd ~/.khoj

wget https://raw.githubusercontent.com/khoj-ai/khoj/master/docker-compose.yml

以上代码来自khoj的官网帮助文档:https://docs.khoj.dev/get-started/setup?os=macos

区别是,官方文档是通过brew安装docker的,因为系统里docker桌面版是标配,所以这一步我就可以省去了。对于没有安装过docker的朋友们,我还是建议直接上docker官网下载桌面版,更省心。

但是考虑到国内访问docker可能会不方便,所以一定的网络设置还是需要的。

下载完docker-compose.yml文件后,就是修改一些配置,简单期间,我就直接截图官网文档了。

Config documentation

有几种方式:一种是使用API,目前支持OpenAI、Claude和Gemini(终于支持了)。对我而言,毫不犹豫的就把GEMINI_API_KEY那行注释去掉,并填上了自己在Google AI Studio里的API。

我必须得继续夸奖Gemini2.0,不仅仅因为它是目前我认为最好的模型,更因为Google慷慨的给予开发者免费的额度:一天1500次调用,每分钟请求不超过10次。基本上,只要使用场景不是“蒸馏”他家模型,都差不多够用了。即使不够,还能用1.5,哪怕当下,1.5用来干活,除了慢一点没啥大毛病。

Gemini Config 1

Gemini Config 2

在我初步的使用中,我只修改了用户名密码和Gemini的API Key。

然后,就是运行

docker-compose up

第一次拉取镜像,初始化需要一定的时间。当命令行返回下面提示后,就可以使用了。

Docker run log

这里有个小坑,就是第一步不应该在浏览器打开本地应用首页(localhost:42110),而是应该进到admin页面:http://localhost:42110/server/admin/,会要求输入用户名和密码(前面修改的)。

在管理页面,要添加模型,选择如下图中左边栏的“Chat Model”,然后点击最右上角的“+”图标,添加模型。

Admin model setup 1

Admin model setup 2

在我的模型设置页里,调用gemini2.0 flash,如上填写,模型名字不能错,模型类别选择Google,api选择“Google Gemini”。

然后,别忘了,点击右下角的保存。

模型设置就可以了。

然后是进到首页:localhost:42110,长成下面的样子。

Homepage interface

这时候,还是不可以聊天的。需要设置一下模型。选择左边栏的“Settings”。

Settings menu

在Models一栏的“Chat”下选择gemini-2.0-flash-exp。

Select Gemini Model

回到首页,然后坑就来了。我在首页对话框里常规性的输入了“introduce yourself”,但是毫无反应。我一直哪里设置错了。试了很多选项,还进行了其他测试,花费了半小时。直到,我尝试性的先敲入了"/",选择了“general”命令,同时,点亮了上面的Khoj(其实是Agent)小图标,才终于有了输出。

Command and Agent toggle

输出是长这个样的。

General output

坑人的地方又来了,明显这是“Khoj”的Agent的输出,而这个Agent,看起来是Gemini-1.5。

Khoj Agent info

为了用上Gemini2.0,需要再添加一个Agent。就在首页左边栏的“Agents”里,我添加了一个叫做“test”的Agent。点亮它,然后,Gemini2.0快速输出token的感觉终于来了。

Agent creation

Gemini 2.0 output

到此,算是完成了(其实不需要选择"/"命令,点亮一个agent之后,直接对话就可以)。

既然跑通了,我就开始了第二个想法:使用本地的deepseek-r1。当然方法是使用ollama(ollama的安装很简单,去官网下载即可)。

考虑到在笔记本上的性能,模型,我选择了基于llama3-8B蒸馏的版本:deepseek-r1:8b-llama-distill-q8_0。

拉取模型的方式也很简单,直接运行:

ollama pull deepseek-r1:8b-llama-distill-q8_0

权重文件8.5GB,下载时间取决于网速了。

下载好后,停止之前的docker-compose(两种方式,一种是直接回到之前运行docker-compose up的终端按“Ctrl+C”停止,还有一种如果之前是后台启动的,那么在同目录下docker-compose down即可),修改docker-compose.yml文件,将“OPENAI_BASE_URL”一行前面的注释“#”去掉即可。

然后“docker-compose up”启动,进入admin页面配置模型。

这里先要添加一个api。

API setup

名字和key随意,base url如上填写。

然后添加模型,模型名字是8b-llama-distill-q8_0,模型类型必须选择“openai”,api选择ollama(很可能上面的设置api的一步是不需要的,这里api也可以留空白,不选,但是保险期间,我还是按照其他场惊喜啊调用api的方式进行了)。

Model setup with Ollama

当然,在对话页面,也要添加agent,我命名为deepseek-llama。

做到数学题,输出过程跟在线的完整版r1非常接近,当然,答案是一样的。

DeepSeek Math Test

除了聊天和Agent之外,Khoj还有一系列功能:搜索(web和本地知识库)、图像生成(需要配置)、语音生成(需要配置)、代码生成。

由于图像生成和语音生成需要花些时间另外配置,这里我只测试了代码生成和运行。接着上题,有直接计算的python代码(这代码多少有点鸡贼),也有直接运行得到结果(从后台日志看,确实跑了程序)。

Code and Execution

当然,如果能够直接输出图表,就更直观了。

Chart output

到此,无论是调用在线的Gemini2.0,还是使用本地版的DeepSeek-R1,都算是成功了。我很满意Khoj的完整性,开始有一点集大成的味道了。

当然,我还非常看重它的另一大功能:Obsidian插件。直接在Obisidian里社区插件选择搜索就能找到,下载量超过34K,看起来确实热度已经很可以了。

Obsidian Plugin Search

然后是设置,在“URL”里填上本地地址和端口即可了。

可惜的是没有Agent的选择,那我理解为,默认的就是使用khoj的Agent了,Gemini-1.5的那个。我暂时找不到如何修改这些设置。

Plugin settings

安装好后,在obsidian的右栏可以打开对话窗口。现在的对话,直接带搜索功能(搜索可以在khoj的amin里配置,时间关系,我就用了默认设置)了,上图的链接看起来都很ok。

当然,在我其他对话中,它还返回了我的obsidian文档的搜索结果,个人知识库的积累变得越来越重要了。

当然,看起来目前插件的功能还需要进一步完善。但是安装后,逐步的obsidian的文档会同步到本地数据库中,作为Khoj的知识库,这个过程可以做到“无感知”,体验还是不错的。

当然,无论Khoj还是插件,都是代码开源的,所以更多功能的开发,难度变小了,可能性也变多了。

一个新工具的初步尝试这就算完成了。

后记

过去几年,类似于这样的新工具尝试,应该没到千,但是大几百次肯定是有的。强迫症的我总想找到完美的解决方案:简单、直接,All-in-One。

每一次的尝试,一定都是带着对现有工具和流程的缺憾,但是每一次的尝试后,都会让自己再次回到熟悉的现有工具上。就拿现在开始越来越热的“第二大脑”的概念来说,我使用Obsidian已经超过五年时间了,这五年多里,我应该是尝试过了所有能够找到的类笔记工具,从收费的Notion(使用notion的时间更远远早于Obsidian)到那些只有几十个star的新项目,甚至自己都写了几个简单的笔记工具。然而,现在几乎所有的文档资料还是都在Obsidian中,不甘中却始终带着这样的相信:总有人会跟我想法一样,但是比我能力强,比我勤快,可以把插件写出来。

Khoj的出现进一步加强了我的信念。

因为最好而且可以免费的Gemini2.0 API让尝试门槛成为了零,因为DeepSeek-R1将本地可部署的开放权重模型的能力又提升了一层,然后才有Khoj优秀架构想法的落地可能性。

这种信念,也许真正的源头是开放与开源的生态:Obsidian其实给了一个很完美的结合,应用是闭源的,可以免费使用但也可以付费购买,插件是完全开放和开源的(个别好插件也可以收费);Gemini也是这样的,模型是闭源的,但是给了开发者足够的免费额度来尝试各种新想法;类似于Khoj的很多AI工具也是这样的,工具的核心代码是开源的,但是有包装更好的商业收费版本供选择……

无论是国内还是国外,纯软件开发和服务,从来都是很艰难的,坚持开源则更为艰难。

然而,正如我一直说的,如今的AI就是从开源生态里长出来的,任何离开开放环境的分支,都将因失去足够的养分而快速枯萎。

← Back to Blog