腾讯开源 WeKnora 深度评估:3 万 Star 的 RAG 框架,你的 Milvus 能直接用吗?
网上流传的 WeKnora 介绍里,Star 数写的是「1.8 万」。
我拉了下 GitHub API:截至 2026 年 10 月 10 日,实际是 32,925。差了将近一倍。
更关键的是,几乎所有二手文章都没提一件事:它原生支持 Milvus,而且可以指向你已有的外部实例。 这意味着你那套跑得好好的 Milvus,未必需要推倒重来。
这篇文章不讲它"有多牛",只回答一个问题:如果你手上已经有一套 RAG 基础设施,WeKnora 值不值得换,怎么换,哪里有坑。 所有数字都来自 GitHub API 和仓库源码,不转述二手解读。
1. 它到底是什么
先排除一个误解:WeKnora 不是"又一个 RAG demo"。
腾讯给它的定位是企业级知识管理框架,核心是三大能力共享同一个知识库:
- RAG 问答 ------混合检索(语义 + 关键词)、多模态解析、原文引用(回答附带来源,可打开原文核对)
- Agent 推理------多步推理、工具调用、技能执行、长期记忆;可检索知识库、联网搜索、调 MCP 工具、在沙箱里执行(Docker / E2B / Cube)
- 自动 Wiki------把散乱文档整理成相互链接的页面,带知识图谱和版本回滚
客户端覆盖面也比一般开源项目宽:企业微信、飞书、钉钉、Slack、Telegram、Chrome 扩展、MCP Server、API、CLI。
客观指标(GitHub API,2026-10-10 取证):
| 指标 | 值 |
|---|---|
| Star | 32,925 |
| Fork | 4,377 |
| Open issues | 612 |
| 主语言 | Go(代码量约 23MB,另有 Vue 5.3MB / TS 4.6MB) |
| 建库 | 2025-07-22 |
| 最新 release | v0.8.2(2026-09-24) |
发版节奏大约 3~4 周一版,迭代很活跃。
2. 一手取证:二手解读普遍说错的三个点
我读了十来篇介绍,然后去拉 API、翻源码。三个最常见的错误:
| 项 | 二手常见说法 | 实际(一手取证) |
|---|---|---|
| Star 数 | 约 1.8 万 | 32,925(GitHub API,2026-10-10) |
| 向量库 | 只提 PostgreSQL | postgres / milvus / qdrant / weaviate / opensearch / doris / 腾讯云 VectorDB |
| 许可 | 照抄"MIT"或只字不提 | 主体 MIT,但是「MIT + 第三方组件许可」的混合文件(详见第 3 节) |
第三点最值得展开。官网和宣传稿都写 MIT,但 GitHub API 返回的是 spdx_id: NOASSERTION。很多二手文章干脆跳过这一段------可这恰恰是商用前必须搞清楚的地方。
教训很直接:读十篇解读,不如拉一次 API 加翻一遍源码。 二手转述的失真率比我预期的高得多。
3. 许可到底能不能用
我去拉了仓库根目录的 LICENSE 原文------158,420 字节,结构是「MIT 主体条款 + 大量第三方组件许可附录」。原文关键句:
This project is licensed under the MIT License except for the third-party components listed below, which is licensed under different terms. Tencent does not impose any additional limitations beyond what is outlined in the respective licenses of these third-party components.
逐条扫描第三方许可后,结论如下:
| 项 | 结论 |
|---|---|
| 主体代码 | MIT,可商用、可闭源、可二次分发 |
| 第三方组件 | 各自许可(Apache 8 处、MPL 3 处等) |
| 传染性许可 | 无。全文无 AGPL / SSPL / BSL / BUSL / Commons Clause / Elastic License |
| 两处 GPL 字样 | ① Python 1.6.1 的 CNRI 历史条款;② MPL 2.0 文本里对「Secondary License」的标准定义。均不构成 GPL 传染 |
那 GitHub 为什么显示 NOASSERTION? 因为 licensee(GitHub 的许可检测算法)要求文件能归类为单一 SPDX 许可 ,而这个 158KB 的混合文件匹配不上任何单一许可,只能返回 NOASSERTION。
这是检测工具的局限,不是权利瑕疵。 API 的
license字段只能当线索,判许可必须读 LICENSE 原文------这可能是整篇文章最实用的一条方法论。
一个保留项:如果你要做二进制分发或产品化,仍需按仓库里的 THIRD_PARTY_NOTICES.md 一并附带第三方许可声明。这是标准动作,不是障碍。
4. 你的 Milvus 到底能不能用
这是读者最关心的一节。答案分两层:配置层面能,实测层面我没跑通(原因见下)。
4.1 配置层面:可以指向已有实例
官方 docker-compose.yml 里确实内置了 Milvus 服务,镜像是 milvusdb/milvus:v2.6.11,standalone 模式(内嵌 etcd + local storage),并且是 opt-in profile ------默认主库是 postgres,要用 Milvus 得显式加 --profile milvus。
但真正关键的是 .env.example 里这几行:
bash
# MILVUS_ADDRESS=milvus:19530
# MILVUS_COLLECTION=weknora_embeddings
# MILVUS_METRIC_TYPE=IP
MILVUS_ADDRESS 可以指向任何你已有的 Milvus 实例,不必用它 compose 里那个内置容器。也就是说,存量 Milvus 有复用的可能,不必整体迁移。
4.2 三个坑
- 默认度量是 IP(内积),不是 COSINE/L2。
MILVUS_METRIC_TYPE=IP是默认值,和很多项目的习惯不一样。更麻烦的是------改度量类型要重建 collection,不是改个配置就完事。所以入库前就得把度量定死。 - 官方专门给了迁移工具
cmd/milvus-migrate。 从.env.example的注释看,旧 collection 要先跑go run ./cmd/milvus-migrate(metric 沿用源 collection),再改MILVUS_COLLECTION前缀。官方专门写个迁移工具这件事本身,就说明迁移不是无痛的。 - 跨版本兼容性:我没有实测。 官方 compose 用的是
v2.6.11,我本地已有 Milvus 2.4.4 (独立 etcd + MinIO 部署形态,和官方 standalone + 内嵌 etcd 不一样)。跨版本 + 跨部署形态能不能直接挂上,我没有跑通测试,所以不装懂。 另外我也没查到两个信息:Milvus 官方最低支持版本是多少、Lite 单机版是否支持 Milvus。这两点同样标记为未闭环。
4.3 小结
- 能配 :
MILVUS_ADDRESS指向外部实例是官方支持的用法,不是 hack - 别乐观:度量类型、迁移工具、版本差三个坑都真实存在
- 先做一件事再决定 :拿一个测试 collection,用你的 Milvus 版本做一次连通性验证。在没有这一步实测结果之前,我不建议把生产数据切过去
5. 本地模型路线(Ollama 用户看这段)
WeKnora 内置 27 家模型厂商(OpenAI、Anthropic、Gemini、DeepSeek、Qwen、混元、智谱、Kimi、火山、MiniMax、Ollama、LiteLLM......),没覆盖到的可以用「自定义(OpenAI 兼容接口)」。
本地化友好的地方:
- Ollama 跑对话 + 向量模型是可以的,而且官方明确支持混用------比如本地模型生成向量、远程模型生成回答
- 对想把数据留在本地的场景,这条路是通的
两个必须提前知道的限制:
- rerank(重排)不支持 Ollama。 精排这一步必须走远程 API。也就是说,"全本地"是不成立的,最精排那一环总要出网。隐私敏感场景要么接受这一点,要么自己换 rerank 方案。
- 换向量模型 = 重建索引。 官方文档的原话是:"模型决定向量的语义空间与维度,新旧向量不能直接混用。" 对讲义、论文这类一旦入库就不想重跑的材料,入坑前先把 embedding 模型定死,否则模型一迭代就全量重算。
6. 我会抄它的哪些设计
就算你决定不用它,这几处设计也值得直接搬进自己的检索栈:
三级召回流水线 + 可调阈值 (来自 config/config.yaml)
makefile
rewrite(默认开)→ 向量+关键词混合召回 top_k 30 → rerank 精排 top_k 30
vector_threshold: 0.2
rerank_threshold: 0.3
keyword_threshold: 0.3
这套默认值可以直接当调参起点,比自己从零摸索省一轮实验。
中文友好的分块策略
swift
chunk_size: 512
chunk_overlap: 50
split_markers: ["\n\n", "\n", "。"]
按中文句号切分这点很实在------大部分框架默认按英文标点切,中文材料会被切碎。
MCP 出向能力
为知识库开一个 MCP 端点,Claude、Cursor 这类客户端连上就能检索你的知识库并提问。这个思路比框架本身更值钱:知识库不只是给自己的产品用,还能作为能力供给给任意 AI 工具。
7. 结论:什么情况该用,什么情况别碰
该用:
- 讲义 / 论文类图文混排材料,需要多模态解析 + OCR
- 要求回答可回跳原文核对(教育、法务、合规这类高可信场景)
- 想把知识库开放给 Claude / Cursor 等外部 AI 工具(MCP)
- 需要从散乱文档自动生成结构化 Wiki + 知识图谱
别碰:
- 需要垂直专属能力(教学设计、学情分析、自动出题、版式还原)------它一概没有,这部分必须自建。它解决的是检索和编排,不解决你的领域问题
- 要极轻量单机------默认 compose 带 postgres/redis/minio/docreader/frontend 一堆服务,只有 Lite 版才收敛到单机
- 项目体量不小(Go 代码 23MB),想深度二开要有心理准备
总体判断:值得参考,但建议"先借架构和 MCP 能力,不急着整体替换底座"。
理由是三点:能力密度高且开源、和已有 Milvus/Ollama/MinIO 栈有真实交集、MCP 出向是架构级的借鉴点。保留意见也是三点:Milvus 跨版本兼容性未实测、换向量模型要重建索引、二次开发门槛不低。
8. 几个没闭环的点
按我的习惯,没验证的必须写出来,不能藏:
| # | 事项 | 状态 |
|---|---|---|
| 1 | Milvus 2.4.4 ↔ WeKnora 连通性 | 未实测,存量 Milvus 能否直挂未证实 |
| 2 | Milvus 官方最低支持版本 / Lite 版是否支持 Milvus | 未查到 |
| 3 | Star 等指标的时效性 | 32,925 为 2026-10-10 取证值 |
如果你在接入上有实测结果,欢迎评论区交流。
取证来源: GitHub API repos/Tencent/WeKnora、仓库根目录 LICENSE、.env.example、docker-compose.yml、config/config.yaml 及官方文档;数据均为 2026-10-10 核对。