3.7 万 Star 的「第二大脑」Khoj,为什么关掉了云服务

简介: Khoj 是 GitHub 上最受关注的开源「第二大脑」项目之一——3.7 万 Star、YC S23 出身、七个客户端。2026 年 4 月它关掉了云服务,主仓库也在 8 月停止提交。本文基于仓库源码、GitHub API 实测数据和官方公告,拆解它做对了什么、卡在了哪里,并对比我们在私有化实时语音知识库上的另一套取舍。

标签:RAG · 开源项目 · 知识库 · 向量检索 · 私有化部署 · 数字人
>

摘要:Khoj 是 GitHub 上最受关注的开源「第二大脑」项目之一——3.7 万 Star、YC S23 出身、七个客户端。2026 年 4 月它关掉了云服务,主仓库也在 8 月停止提交。本文基于仓库源码、GitHub API 实测数据和官方公告,拆解它做对了什么、卡在了哪里,并对比我们在私有化实时语音知识库上的另一套取舍。

数据采集日期:2026-10-12。文中所有数字按来源分档标注,来源说明见文末附录。


一、三件先要说清楚的事

如果只看 Khoj 的 GitHub 首页,你会得到这样的印象:3.7 万 Star、支持 Obsidian / Emacs / 桌面 / 手机等七个客户端、可以完全自托管,README 里还写着「use Khoj right away at app.khoj.dev — no setup required」。

但这些是过期信息。截至 2026 年 10 月 12 日,实际情况是:

  • 云服务已经关停。 2026 年 4 月 15 日,Khoj 官方在 app.khoj.dev 挂出日落公告(sunset notice),停止托管服务。现在访问该域名,看到的只有这份公告。
  • 主仓库已经停止提交。 默认分支最后一次 push 是 2026-08-02(commit ae229ca),两个多月没有动静。GitHub 上最后一个 Release 是 2.0.0-beta.28(2026-03-26)——2.0 从来没出过稳定版;PyPI 上 pip install khoj 拿到的仍然是 2025-07-15 发布的 1.42.10。
  • 团队已经转向。 公告原文:「We're focusing our efforts on Open Paper,a research assistant … and Pipali,an AI coworker」。这两个新仓库在 2026-10-05 和 2026-09-26 还有提交,是活的;Khoj 本身不是。

仓库没有归档,维护者 Debanjum 在 issue #1334(2026-06-12)里也回复过「Khoj development has slowed down but it is not in maintenance mode」。但把所有可观测信号摆在一起——Release、PyPI、Docker latest、博客(最后更新 2025-01-14)、提交——它们指向同一个方向。

所以这篇文章不打算写成产品说明书。更值得回答的是:一个技术上并不差、社区认可度很高的项目,为什么走到了这一步? 这对正在做知识库选型的人,比一堆功能罗列有用得多。


二、来龙去脉

2.1 起点是一个实验工具

Khoj 不是 2023 年那波大模型热潮的产物。官方公告里写着:

The Khoj project started out in April 2021 as an experimental tool to improve document search.

2021 年 4 月,比 ChatGPT 发布早了整整一年半,GitHub 仓库建于 2021-08-16。它最初的形态是一个「文档搜索」工具——用语义检索帮你从自己的笔记里找东西,这个内核从第一天到现在基本没变过。

2.2 YC S23,和一波「第二大脑」热

2023 年,Khoj 进入 Y Combinator 夏季批次。这里要纠正一个流传较广的错误:不少第三方页面写它是 W23 或 W24,而 YC 官方页面写的是 Summer 2023(S23)。

YC 页面把创始人背景写得很清楚:Debanjum Singh Solanky 和 Saba Imran,两人都出自微软的个人 AI 方向(Cortana / Viva Insights),原文是「scaled … from 0 to 20M daily active users」。这个背景解释了 Khoj 后来的产品直觉——它从一开始就按「面向个人的助手」来做,而不是面向组织的知识管理。

同一时期,Khoj 在 HN 上发了《Chat Offline with your Second Brain using Llama 2》(2023-07-30)。「第二大脑」和「本地离线」这两个标签,就是那时候立住的。

(有第三方资料称 Khoj 在 2023 年拿到约 50 万美元种子轮、投资方是 YC 和 Pioneer Fund。这个数字只出现在 Crunchbase / PitchBook 一类付费聚合站,我没有在首方页面上核实到,不作为事实使用。)

2.3 商业化选择:订阅制 + 云优先

2023 年 11 月,Khoj 从「自托管工具」变成「云服务」。商业模式是双轨:开源版自托管(AGPL-3.0),加上托管订阅版 app.khoj.dev(免费额度 + 付费档)。

这个选择在当时看是标准答案。但四年后,它被团队自己列进了失败原因。

2.4 关停:团队自己的复盘

公告里最值得逐字读的一段,是团队列出的「initial bets」:

…a subscription, cloud-first service, complex document syncs, custom data integrations, multiple (6!) clients — made it very difficult to scale in utility.

以及关于护城河的那句:

…challenges in defensibility with all the big labs coming out with similar products.

翻译成大白话:他们同时压了五个重资产方向,每一个都要持续投人,而没有一个是能建立壁垒的。 模型能力被大厂快速拉平,「检索你自己的笔记」这件事本身的差异化,不足以支撑一门订阅生意。

这句话和 Khoj 技术做得好不好无关。是商业模型的问题。

时间线

时间 事件
2021-04 项目作为文档搜索实验工具起步
2021-08-16 GitHub 仓库建立
2023-07-30 HN 发布「用 Llama 2 离线对话你的第二大脑」
2023(S23) 进入 Y Combinator 夏季批次
2023-11 转型为云服务
2024-08-07 前端迁移到 Next.js
2024-10 ~ 11 密集推出 agent 能力与 AI 安全评测博客
2025-01-14 博客最后一次更新
2025-07-15 最后一个稳定版 PyPI 包 1.42.10
2026-03-26 最后一个 GitHub Release 2.0.0-beta.28
2026-04-15 云服务关停
2026-08-02 主仓库最后一次提交

三、它到底是怎么做的

这一节的依据是仓库源码(快照 commit ae229ca,即 2026-08-02 的 master)。我核对过:今天 master 上 pyproject.toml 的依赖列表与快照完全一致,所以这份快照可以当作当前状态的一手证据。

3.1 技术栈:两个 Web 框架并存

  • Python ≥3.10, <3.13(3.13 装不上,这点文档没写,issue #1224 里用户自己踩出来的);
  • FastAPI 做 API 层,Django 5.1 做 ORM、模型和管理后台,两套框架共存;
  • ASGI 用 uvicorn / gunicorn,定时任务用 apscheduler。

3.2 检索链路:纯稠密向量,没有关键词通路

这是最容易被误解的一点。Khoj 的检索是单一的稠密向量检索,实现是 PostgreSQL + pgvector:

CosineDistance("embeddings", query_vec) → order_by("distance") → distance <= max_distance

两个源码层面的事实:

  1. 没有混合检索。 全仓库 grep tsvector|SearchVector|tsquery|bm25|trigram|full text|lexical,除一条无关注释外零命中。它没有 BM25 / 关键词这一路。对「第十六条」「RFC 编号」「函数名」这类精确匹配需求,这条链路天然是短板。
  2. 没有 ANN 索引。 在 migrations 目录里 grep hnsw|ivfflat|CREATE INDEX|vector_cosine_ops,同样零命中。配合 VectorField(dimensions=None)(pgvector 的 HNSW / IVFFlat 要求固定维度),可以判断检索走的是全表精确扫描。这一点是推断,但 grep 零命中是事实。

模型和参数的默认值:

环节 默认配置
向量模型(bi-encoder) thenlper/gte-small(可换成任意 sentence-transformers 模型或远程 API)
重排(cross-encoder) mixedbread-ai/mxbai-rerank-xsmall-v1,默认不开启
相似度阈值 0.18
召回量 / 返回量 top_k = 10 / 返回 5 条
分块 256 token,overlap = 0,切分顺序「段落 > 句子 > 词 > 字符」
分块 tokenizer text.split()

重排默认关闭这件事值得单独说:/api/search 的签名是 r: bool = False,只有请求显式带上 r=true,或者另外配了一个 cross-encoder 推理服务,才会重排。

3.3 数据源:覆盖面广,但都是手搓

src/khoj/processor/content/ 下的目录就是全部支持的来源:markdown、org_mode、plaintext、pdf、docx、images、notion、github。

几个需要点破的细节:

  • 图片不是多模态。 走的是 rapidocr_onnxruntime 做 OCR 抽文字,抽不到就整个文件不索引。只支持 png / jpg / jpeg / webp。
  • GitHub 集成官方自己标了「Unmaintained」,文档原话「We are considering deprecating it」。
  • DOCX 用 docx2txt,有处理器,但文档里几乎不提。
  • 扫描版 PDF 依赖 OCR,能力上限取决于此。

官方关停公告里那句「hand-building data integrations was going to be a long tail of effort」,和这里的目录结构是对得上的:每接一个源,就是一份独立维护成本,五年下来攒了八个。

3.4 隔离与权限:只有「用户」和「Agent」,没有文档级 ACL

Khoj 里没有「知识库」这个实体。隔离只有两个维度:按 user(Entry.user),按 agent(Entry.agent,agent 可以挂自己的知识,也就是 README 说的「custom knowledge」)。检索时的过滤条件是:

Q(user=user) | Q(agent=agent)

没有文档级权限。 整个 docs 目录 grep acl|rbac|role.based|permission|multi-tenant,只命中一条无关的 GCP 排错文本。实际存在的只有服务级认证开关(默认 --anonymous-mode,可开 magic link 或 Google OAuth),以及 agent 上的一个三档 PrivacyLevel(PUBLIC / PRIVATE / PROTECTED)。

所以 Khoj 的权限模型是为个人设计的——「这份笔记是我的,不是你的」。这在个人场景下完全够用,甚至是对的选择。但如果你的场景是「同一批合同,法务能看全部、销售只能看自己负责的」,Khoj 没有对应机制。

3.5 部署:五个容器起步,镜像 1 GB+

官方给两条路:Docker Compose,或 pip install 'khoj[local]' + USE_EMBEDDED_DB=true。

但 docker-compose.yml 默认拉起 5 个服务:database(pgvector)、sandbox(代码沙箱)、search(searxng)、computer(带 VNC 的桌面容器,暴露 5900 端口)、server。哪怕你只想问一句「我上周写的那个方案叫什么」,searxng 和沙箱也会一起起来。

镜像体积实测(GHCR manifest,2026-10-12):amd64 压缩后合计约 1087 MB。

GPU 方面:不是必须的,官方镜像用的是 CPU 版 torch。想跑本地大模型要自己在宿主机另起 Ollama / vLLM。官方给的离线模式建议配置是「最少 8 GB 内存,推荐 16 GB 显存,至少 5 GB 磁盘」。


四、优势:3.7 万 Star 不是白来的

先把话说清楚——Khoj 拿到的社区认可,绝大部分名副其实。它有几个别人真没做到的地方。

4.1 客户端广度

Emacs、Obsidian、桌面应用、Web、手机、WhatsApp、Discord——这个矩阵在开源知识库里几乎没有对手。尤其是 Emacs 和 Org-mode 这条线:人数不多,但极其忠诚,而且几乎被所有商业产品忽略。Khoj 认真服务了这批人,也因此拿到了最早期、最硬核的一批用户。

代价同样清楚:六个客户端意味着六份持续维护成本。团队在关停公告里把「multiple (6!) clients」明确列为压垮项目的原因之一。优势和包袱,在这里是同一件事。

4.2 数据源覆盖的长尾

Markdown、Org-mode、PDF、Notion、GitHub、纯文本——覆盖面比大多数开源同类宽。Notion 和 GitHub 这类需要 OAuth 和 API 集成的源,开源项目里很少有人愿意做。虽然 GitHub 那条现在标了 Unmaintained,整体广度仍是实打实的。

4.3 模型自由度

自托管模式下 Khoj 不锁模型。向量模型可以是任意 sentence-transformers 模型,也可以走远程 API;对话模型除了原生的 OpenAI / Anthropic / Google 三家,还能通过「任意 OpenAI 兼容 endpoint」接上 Ollama、LM Studio、vLLM、LiteLLM、OpenRouter、Vertex AI。

这里有个和直觉相反的点:在 Khoj 里,是云版更受限(文档原话「If you're using Khoj Cloud, you're limited to our first-party models」),自托管反而更自由。

4.4 Agent 与自动化

2024 年下半年起,Khoj 把重心往 agent 方向推:自定义 agent、代码执行、定时自动化(Automate)。这今天是它的重要加分项,也是团队最后的技术兴奋点。

4.5 完全自托管,数据不出机器

跑在本地时,索引、向量、模型调用都在你机器上。对隐私敏感的个人用户,这是决定性的。


五、缺点:有代码和 issue 支撑的那些问题

这一节的每一条,要么能在源码里指到行,要么能在 issue 里找到原始讨论。

5.1 内存:跨三年的头号问题

这是 Khoj 从 2023 年到 2024 年最反复出现的抱怨主题,而且至今没有解决。

  • issue #301(2023-07-11):用户有 18 年的笔记、11.3 GB。维护者 sabaimran 的回复很坦诚:

    I...don't think 11.3 GB is going to be feasible by our application as it stands

    并承认「we have a lot of room for improvement in memory consumption」。

  • issue #634(2024-02-02,至今 open):用户在 16.6 GB 内存的机器上索引 PDF——「CPU is in constant use … sometimes it hogs all available CPU and my machine becomes unresponsive for a minute or two … the process ends with the message 'Killed'」,原话是「Khoj has never managed to index all the PDFs」。

同主题的还有 #195(首次索引 MemoryError)、#303(有人专门开 issue 要求「分析内存占用」)、#1105(上传被 OOM kill,用户自己改脚本分批)。

一个「帮你管理笔记」的工具,在别人的真实笔记面前撑不住。这基本决定了它的用户上限。

5.2 检索质量:三个能指到代码的缺陷

(1)中文 / 日文 / 韩文分块基本失效。 issue #1354(2026-06-28,open):

Markdown chunking fails for CJK languages due to text.split() tokenizer undercounting tokens

根因是分块的 tokenizer 就是 text.split()(按空格切)。中文没有空格,所以整篇中文文档会被当成一条 entry,不切分。后果不是「切得不好」,而是:

the bi-encoder averages the semantics of the entire document, and search hits land on the YAML frontmatter/first heading instead of relevant sections

整篇文档被平均成一个向量,检索命中会落在 YAML frontmatter 或者第一个标题上。我核对了源码,TextToEntries.tokenizer = text.split() 属实。对中文用户来说,这条是硬伤。

(2)多轮对话里的引用会静默消失。 issue #1270(2026-03-08,open):因为一个 isinstance(item, dict) 类型判断写错,历史轮次的 references 永远为空。表现是答案里的「来源」无声无息地不见,界面上看不出任何异常。

(3)一个空标题能让索引永远跑不完。 issue #1437(2026-09-26,open):笔记里出现空的 # 时,索引永不结束,一个 CPU 核 100% 空转。报告者用的正是 master 上的 ae229ca894,也就是我手上这份快照。

5.3 部署成本被低估

  • issue #1224(2025-09-27):pip 依赖冲突,社区结论「Python 3.13 不行、3.12 可以」,用户指出文档没写这一点。
  • issue #1194:Windows 用户的原话——「the toml compiling need 30min MAYBE you can write a hint that its need time」(16 核 + RTX 4060 Ti)。
  • issue #1100(2025-02-02,25 条评论,是仓库里讨论最多的 issue 之一):「Unable to connect to local Ollama using self-hosted Docker」。有人试了几天,Mac 上 Docker 跑得通,换到 Ubuntu + GPU 就不行,根因是 Docker 网络和 OLLAMA_HOST 配置,而 UI 不给任何提示。
  • 一批管理后台登录失败的 issue(#1152、#1187 等),用户根本不知道用户名密码是什么。

有中文深度测评给出的估计是「第一次装 Khoj 不是『5 分钟搞定』,要预留 1–3 小时」。对照它「开箱即用」的宣传,这个落差是客观存在的。

5.4 权限模型的缺失,对企业是硬伤

如 3.4 所述,Khoj 只有 user / agent 两级隔离,没有文档级 ACL、没有团队或共享空间、没有多租户权限模型。

个人用没问题。但只要场景里出现「不同角色的员工看不同的文档」——这在企业里几乎是必然的——Khoj 就得先补这一层,而这不是改配置能解决的。

5.5 官方评测数字不能用来论证「文档检索质量」

Khoj 在 2024-11-22 发过一篇评测博客《Evaluating Khoj for Helpfulness》,数字确实好看:

Benchmark General Default Research
FRAMES 27.1 42.0 63.5
SimpleQA 10.0 84.0 86.0

但这篇博客自己写明了关键限制,引用时必须带上:

Our current eval only measures retrieval from the internet, not from your documents.

也就是说,这份成绩完全不衡量「跟你自己的笔记对话」的检索质量——而后者才是 Khoj 的主场景。博文作者自己对 SimpleQA 那个跳变也存疑:「suggests either remarkable effectiveness of Khoj's approach or potential brittleness in the benchmark itself. Or maybe our eval is broken?」样本量是 200 题随机子集,误差约 6%。

另外,官方性能文档里那条「Semantic search < 100 ms」,自述数据是 2022 年的,测试机型 Mac M1。

所以:看到有人把 Khoj 的 FRAMES / SimpleQA 分数拿来证明「它检索比谁强」,可以直接跳过。

5.6 AGPL-3.0 的实际约束

Khoj 用的是 AGPL-3.0。LICENSE 是逐字的 AGPLv3 全文,pyproject.toml 写的是 AGPL-3.0-or-later,GitHub 的协议识别也是 AGPL-3.0。

关键在于第 13 条的网络服务条款:如果你把修改过的 Khoj 作为网络服务提供给用户,你有义务向这些用户提供源码。

对个人自用完全无影响。但如果你打算「基于 Khoj 改一改,做成私有化产品卖给客户」——这条路在 AGPL 下走不通,除非你开源自己的修改。这个坑值得在选型早期就想清楚,而不是立项三个月后才被法务发现。

(一个有意思的对照:团队的新项目里,Pipali 换成了 Apache-2.0,Open Paper 仍是 AGPL-3.0。协议选择上他们自己也在动。)

5.7 文档和代码脱节

几个具体表现:

  • README 的 FAQ 还在写「use Khoj right away at app.khoj.dev — no setup required」,而云服务 4 月就关了;
  • README 里指向企业版的 khoj.dev/teams 现在 404;
  • 下载页 khoj.dev/downloads 404;
  • 文档和 credits 仍宣称「natively supports local LLMs available on HuggingFace in GGUF format」「Llama.cpp to chat with local LLM」,但 llama-cpp-python 既不在 pyproject.toml 里也不在 uv.lock 里——离线聊天现在实际是通过外部 OpenAI 兼容服务器实现的。

(补一个私人博客的实测体验,注意这是第三方主观评价、非受控实测:darkedge.world 上一位 Org-roam 用户记录了跑题的 query 扩展和捏造来源,「Khoj somehow finds it appropriate to mix in blockchain technologies into the query」,并抱怨「Running the context search locally on my laptop takes about half a minute at full throttle」。HN 上也有用户 kkfx 说,在他的 org-mode 笔记上「a mere rg (ripgrep) succeed」,而 Khoj 找不到。个体体验不能当结论,但方向一致。)

5.8 安全公告

GitHub Security Advisories 上共 6 条,其中两条值得一提:未认证的路径穿越可读服务器文件系统(GHSA-62mm-xwmv-crhg,2026-06-24);Notion OAuth 的 IDOR 可导致索引投毒(CVE-2025-69207)。另有遥测争议:2026-07-13 的 issue #1374 指出遥测在发送客户端 IP,与隐私文档「we do not log your IP address」矛盾,维护者承认并停止发送。


六、横向看:Khoj 在同类里站在哪

社区实际拿来和 Khoj 比的,主要是这几个。Star 与活跃度数据均为 2026-10-12 用 GitHub API 实测。

项目 定位 许可 Star 文档级权限 最近 push
khoj 个人第二大脑 / PKM AGPL-3.0 37.6k 无(仅 user / agent) 2026-08-02
AnythingLLM 团队工作区 MIT 67.0k workspace 级 2026-10-09
Dify LLM 应用平台 Apache-2.0(含附加条款) 158.2k 应用级 2026-10-12
RAGFlow 文档解析型 RAG 平台 Apache-2.0 92.0k — 2026-10-12
PrivateGPT 离线文档问答 Apache-2.0 57.6k — 2026-10-09
Reor 本地 AI 笔记 AGPL-3.0 8.5k — 2025-05-13

几条社区共识(来源等级一并标出):

  • Khoj 被普遍归为「个人 / PKM」,其余大多被归为「团队 / 组织级」。 这几乎是所有对比文章的一致结论。
  • Khoj 的差异化被反复归因于「客户端广度」和「agents + 定时自动化」,而不是检索深度。 这和我们对源码的观察吻合——它的检索链路确实是最朴素的那一种。
  • AnythingLLM 是最常见的正面对比对象,第三方评述点出的 Khoj 短板是「single-backend architecture is designed for personal and team scale, not enterprise-scale distributed retrieval」。(注:这类对比站大多是模板化甚至 AI 生成内容,我只把它当作「社区怎么归类」的旁证,不作事实依据。)
  • NotebookLM 被当作「打磨得更好但封闭」的对照:引用做得漂亮,但是个围墙花园;Khoj 赢在集成和隐私。也有评述把「retrieval accuracy can trail more polished closed products like NotebookLM」列为 Khoj 的缺点。
  • 许可被反复当作决策轴。 有第三方原文说得直白:「It is also AGPL 3.0 licensed, a copyleft license people frequently confuse with the permissive Apache 2.0 or MIT licenses used by most of the tools it competes with.」

最后补一个诚实的信息缺口:没有找到任何第三方 benchmark 把 Khoj 和这些项目放在一起做量化对比(LoCoMo / LongMemEval 之类)。目前唯一可引用的量化数字就是 Khoj 自己那篇,而它测的是联网检索。所以任何声称「A 比 B 检索准 X%」的说法,基本都没有可靠出处。


七、我们走的是另一条路

到这里该讲讲我们自己(蔓藤AI)的选择了。但不是「我们比 Khoj 强」——那种比较没有意义,因为我们做的是另一件事。

7.1 问题本身就不一样

Khoj 要回答的是:「帮我找回我自己写过的东西。」

我们要回答的是:「用户正在说话,我该不该去查资料,查到之后要把它讲出来。」

这个差别看起来只是「加了个语音」,但它把整条链路的约束全换掉了:

约束 Khoj(找回笔记) 实时语音数字人
用户耐心 可以等两秒看结果 说话时有停顿,几百毫秒内就得决定
检索不到的代价 失望,重搜一次 当场答错或卡壳,对话就断了
输出形态 显示一段文字,可以慢慢读 合成语音 + 唇形同步,说不清就是说不清
文档性质 个人笔记、Markdown 合同、制度、法规、扫描件
使用场景 坐在电脑前 前台、展厅、车间,经常没有屏幕

最后一行是关键。没有屏幕意味着用户只能听,不能回看、不能滚动、不能点开来源。Khoj 里那种「返回 5 条结果让你自己挑」的交互模式,在这个场景下根本不存在——我们必须一次就说对。

7.2 于是检索层要做的事情完全不同

多路召回是必须的,不是加分项。 Khoj 是纯向量检索(3.2)。但在中文专业文档里,纯向量的盲区是明确的:「违约金」和「违约赔偿」靠向量能找到,「第十五条」和「第 15 条」就必须靠关键词。所以我们做的是向量 + FTS5 关键词 + 实体图谱三路并行召回,再用 RRF(Reciprocal Rank Fusion)融合:

def rrf_fuse(ranked_lists, k=60):
    """多路召回融合:分数 = Σ weight / (k + rank)"""
    scores = {
   }
    for weight, ranking in ranked_lists:
        for rank, item in enumerate(ranking, start=1):
            scores[item] = scores.get(item, 0) + weight / (k + rank)
    return sorted(scores.items(), key=lambda x: -x[1])

三路权重是向量 1.0 / 关键词 1.0 / 图谱 0.4——图谱作为增强,权重刻意压低,避免它把精确匹配的结果挤掉。

重排必须是默认开启的。 Khoj 的 cross-encoder 重排默认关(r: bool = False)。但在一次说对的场景里,我们没法接受「先给 10 条宽的,用户自己挑」——所以候选集放宽到 20 条,用 BGE-reranker-v2-m3 交叉编码器重新打分,只留 5 条进上下文。

中文分块不能靠空格。 前面 5.2 讲了 Khoj 的 text.split() 在 CJK 上的问题。我们用的是 jieba 分词,并且针对中文法律 / 合同类文档做了条款级分块——识别「编、章、节、条、款、项」的编号模式映射成标题层级,让「条款号即结构」。索引时用小块做向量匹配(精确),返回时扩到父块给大模型看完整上下文,也就是常说的「小到大」父子块。这是「检索要准」和「生成要有料」之间最直接的一个折中。

闲聊要能跳过检索。 用户说「你好」的时候不该去查合同库。我们有一个查询分析器做意图判断,置信度到 0.9 以上直接走闲聊路径;FAQ 问答对命中(阈值 0.75)也直接返回,不走大模型——这在实时场景里省下的是实打实的延迟。

7.3 权限:企业场景下没法省的一层

Khoj 没有文档级 ACL(3.4)。我们的做法是给每个文档块打 ACL 标签,空标签表示公开,检索时按调用方权限过滤。

这里有个容易做错的细节值得单独说:权限过滤必须下推到检索层,不能在应用层后置过滤。 如果先取 top-k 再剔掉无权结果,实际有效召回会低于 k,用户会莫名其妙地「少看到了一些内容」。我们把过滤条件直接下推到向量检索的查询里。

7.4 存储:能离线运行的单文件

私有化交付的第一条红线是数据不能出内网。所以我们的默认存储形态是 SQLite + sqlite-vec + FTS5,全部落在单个文件里:部署时不需要额外搭向量数据库,单文件即可备份迁移;模型侧(向量化、重排、文档解析)全部本地推理,模型下载完之后,拔网线也能用。

这不是「不愿意上向量数据库」,而是在企业内网的现实条件下,多一个外部组件就多一份部署和运维成本。存储层我们做了抽象,需要时可以换成 Postgres / pgvector,业务代码不变。

顺带说一个我们自己在存储层做过的基准测试(两种实现的结果逐位一致):

语料规模(chunk) 全表扫描 分区 KNN
200 0.3 ms 2.3 ms
1,200 3.4 ms 3.0 ms
3,600 169 ms 3.7 ms
12,400 953 ms 11.4 ms
62,400 6,141 ms 45.3 ms

有两点值得说明,因为它们是这份表里最有信息量的部分。

第一,KNN 在千级 chunk 以下反而更慢——它有一个约 2 ms 的固定开销。所以「用了 ANN 就一定快」是错的认识,交叉点在千级左右。

第二,也是最该记的一条:我们在这个优化里一度拿到过 46 倍加速的错误结果。 原因是我们在过滤条件里加了一个防御性的 OR kb_id IS NULL,而 sqlite-vec 的分区表会因为这个 OR 放弃分区剪枝,退化成「先取全局前 k 再过滤」——k=20 时只剩 4 行,是静默的大规模少召回,不报任何错。是「KNN 结果必须与暴力检索逐位一致」这条断言把它抓出来的。这件事后来被写成了契约测试。

讲这个是想说明一类事:检索系统的性能优化,如果不配一个「优化前后结果必须一致」的验证网,你很可能拿到一个又快又错的系统,而且不会收到任何报警。

7.5 交付形态

  • 生成式大模型走 OpenAI 兼容接口,可对接 Qwen / DeepSeek 等,也可换成本地 LLM;
  • 推理侧做了统一加速器抽象,自动识别并择优调度 NPU(昇腾)→ CUDA(NVIDIA)→ CPU,覆盖 GPU 工作站、国产 NPU 一体机和纯 CPU 环境;
  • 多服务可编排:主服务、检索服务、语音 / ASR 服务、前端静态服务,单机即可跑通。

7.6 说实话,我们不占优的地方

对称才可信,所以这几条也写在这里:

  • 客户端广度:我们没有 Emacs、Obsidian 插件这类个人笔记客户端。七个客户端的矩阵是 Khoj 的长处,我们没有对等物。
  • 个人笔记数据源:Notion、GitHub 这类个人 SaaS 源的直连,我们覆盖得不如它宽。
  • 社区规模:37.6k Star 对任何项目都是一笔真实资产,短时间补不上。
  • 模型完全自由:我们走 OpenAI 兼容接口 + 本地 LLM,自由度够用,但没有 Khoj 那种「任意 sentence-transformers 模型随插随用」的灵活度。

八、所以该怎么选

不用绕弯子。

选 Khoj,如果——你是个人用户,笔记以 Markdown / Org-mode 为主,主要用 Emacs 或 Obsidian,在意数据完全本地,且不介意自己花一两个小时折腾部署。它的客户端矩阵和数据源广度,在这个场景里没有对手。

别选 Khoj,如果——你要做的是企业交付:需要文档级权限、需要处理扫描件和中文法律 / 合同文档、需要多知识库隔离、需要「开口讲出来」的交互形态。这些不是配置问题,是架构层面的缺口。另外,如果你打算基于开源项目做成商业产品卖出去,AGPL-3.0 这条得先过法务。

另外有个现实提醒:不管选不选 Khoj,都要注意它的维护状态。云服务已关停、主仓库自 2026-08 无提交、最新版仍是 beta。选一个活跃度在下降的项目,本质是在赌社区会接手。


九、回到那个问题

Khoj 团队在关停公告里写的那句话,我认为是整件事里最有价值的一段:

…a subscription, cloud-first service, complex document syncs, custom data integrations, multiple (6!) clients — made it very difficult to scale in utility.

五个重资产方向同时推进,每一个都需要持续投人,每一个都不是壁垒。这不是技术失败,是在一个已经被大厂快速拉平的赛道上,用个人工具的方式去撑一门订阅生意。

对我们的启示很直接:与其在「通用检索」这个正被模型能力抹平的维度上竞争,不如去做那些模型能力无法替代的工程约束——实时性、权限、专业文档的结构化理解、私有化交付、语音输出。这些事做起来苦,但不容易被一个大模型版本更新抹掉。


附录:数据来源与核实说明

本文所有事实按来源分三档。

一档|一手可核实(GitHub / PyPI 官方 API 实测,或仓库源码)

  • 仓库规模、Star / Fork、提交与 Release 时间、协议:GitHub API,2026-10-12 实测
  • pip 稳定版版本与日期:PyPI JSON API
  • 云服务关停公告及其原文引用:app.khoj.dev(2026-10-12 仍返回该页)
  • 技术栈、检索实现、数据源目录、模型默认值、docker-compose 服务列表、镜像体积:本地仓库快照(commit ae229ca,2026-08-02),并已核对今日 master 的依赖列表与快照一致
  • 各 issue 的标题、日期、状态与原话:GitHub Issues API 逐条拉取
  • 安全公告:GitHub Security Advisories API
  • 对比项目的 Star 与活跃度:GitHub API,2026-10-12 实测

二档|官方但需注意时效

  • 评测数字(FRAMES / SimpleQA):官方博客 2024-11-22,且只衡量联网检索,不衡量个人文档检索
  • 性能数字(语义检索 < 100 ms):官方文档,自述数据为 2022 年
  • YC 批次与创始人背景:YC 官方公司页

三档|第三方,仅作旁证,不单独作为结论依据

  • HN 讨论帖与用户评论
  • 个人博客实测(darkedge.world 等),主观体验,未经受控复现
  • 各类「对比站」评述,多为模板化或 AI 生成内容,仅用于说明「社区如何归类」

明确未核实、故未采用的

  • Khoj 云服务的历史定价档位与免费额度(首方页面已失效,archive.org 在本环境不可达)
  • 种子轮的确切金额与投资人名单(仅见于付费聚合站)
  • 创始人详细履历(学位、历任雇主与年份,仅见于二手聚合资料)
  • Reddit 上的相关讨论(未检索到可验证的原始帖链接,故不引用任何「Reddit 用户抱怨」)
  • 任何第三方量化 benchmark 对比(不存在,故本文不含此类数字)

说明:本文涉及的开源组件均为公开发布,模型与参数默认值来自公开源码;我们自己的性能数据来自仓库内基准脚本,可复现。工程参数以实际交付为准。

相关文章
|
20天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
9006 28
|
19天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
3969 16
|
19天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
2307 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
7天前
|
存储 人工智能 并行计算
大模型本地部署终端选型方法论:以 Qwen3.8-27B 为例的四档分层完整流程
本文提出一套大模型本地部署终端选型方法论:定约束、定档位、定框架、定参数四步决策法,配合入门、主力、质量、无损四档分层模型。以 Qwen3.8-27B 实测数据为例,逐环节解读显存、带宽、存储、散热、系统、预算等要素,给出面向不同预算的优选方案、决策自查清单与市场观察框架。文末前瞻 AI 笔记本的 CPU+GPU 与统一内存两条路线,论证四步决策法在新品类上的延续性。
|
5天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型深度拆解:原理解读、实战测评与保姆级落地教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为**System One Model(系统一模型)**,对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
465 1
|
13天前
|
人工智能 Linux 开发者
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
Codex是OpenAI推出的AI编程智能体,可读取本地项目、理解需求并自动修改代码。支持桌面GUI、命令行(CLI)及VS Code/Cursor插件三种形态,覆盖可视化操作、终端高效开发与编辑器无缝集成场景,助开发者用自然语言驱动编码全流程。(239字)
1045 2
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
|
8天前
|
人工智能 Linux Windows
千问办公(QwenWork)官网入口:其实有2个,一个是网页端千问办公,一个是介绍指南页面
千问办公(QwenWork)是阿里云推出的AI智能办公平台,支持网页端直接使用及Windows/Mac/Linux客户端下载。提供PPT生成、财报分析、网页搭建等AI功能,个人版免费,企业版198元/席/月。详情见官网qwenwork.cn或阿里云产品页。
1018 0
千问办公(QwenWork)官网入口:其实有2个,一个是网页端千问办公,一个是介绍指南页面

热门文章

最新文章