WeKnora(维娜拉) 可以拆解为 We Know Ra,寓意为"我们知道的知识",它是腾讯开源的一款企业级知识管理框架,基于大语言模型(LLM)构建,专注于文档理解、语义检索与智能推理三大场景,其核心使命是——把分散的文档沉淀为可查询、可推理、可持续演进的知识资产。
对知识库进行检索增强生成(Retrieval-Augmented Generation,简称 RAG),快速提供准确的答案
ReAct(Reasoning + Acting,推理与行动协同)Agent 自主编排知识检索、MCP(Model Context Protocol,模型上下文协议)工具与网络搜索,通过"思考-行动-观察"循环完成复杂的多步推理任务
Agent 从原始文档中自动生成结构化、相互链接的 Markdown 知识库,附带可视化知识图谱
除此之外,WeKnora 提供了现代知识管理系统所需的全套基础设施:多源数据接入(飞书 / Notion / 语雀)、20+ 模型厂商集成、Langfuse 全链路可观测性、企业级多租户 RBAC 权限体系、Web UI / CLI / REST API / Chrome 扩展 / 微信小程序等多种交互界面。
1.2 WeKnora 与主流开源 RAG 项目对比
如果你要的是 企业知识平台,重点是多租户、权限、IM 接入、MCP、Wiki、私有化治理,那么 WeKnora 非常合适。
如果你要的是 轻量级 GraphRAG 框架,更关注检索算法和图推理效率,LightRAG 往往更合适。
如果你要的是 多模态复杂文档 RAG,特别是图表、公式、图片、论文、财报,RAG-Anything 更有针对性。
如果你要的是 低代码 AI 应用平台,强调工作流、Bot 应用编排、应用发布和运营,Dify、FastGPT 更强。
如果你要的是 重文档解析、复杂版式理解、引用可解释性,RAGFlow 值得优先评估。
|
|
|
|
|
|
|
|
|
|
强,BM25 + Dense + Rerank + GraphRAG
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WeKnora 不是最轻的,也不是最偏算法研究的,但它非常像一套“真正能落到企业里”的知识平台。
团队的知识分散在飞书、Notion、语雀、本地文件、邮件等各处。WeKnora 通过多源同步与文档解析,将碎片化知识统一汇聚至知识库,并自动建立索引。
传统关键词匹配无法理解语义。WeKnora 采用向量 + 关键词 + 重排序的混合检索,语义理解更精准,即便口语化表达也能命中相关内容。
文档量大时,找到相关内容仍需逐篇阅读。WeKnora 的 RAG 问答直接基于检索内容生成答案并标注来源,大幅降低阅读成本。
许多问题需综合多源信息才能回答。WeKnora 的 ReAct Agent 可自主规划:先检索知识库,再调用 MCP 工具查数据,必要时联网搜索,最终给出综合答案。例如:"对比 Q2 与 Q3 营收数据,分析变化原因"。
文档写后易过时,缺少持续维护。WeKnora 的 Wiki 模式让 Agent 直接从原始文档生成结构化知识页面,自动建立关联,形成知识图谱,大幅降低人工维护成本。
企业数据不能上传第三方平台。WeKnora 完全开源,支持 Docker / K8s 私有化部署,数据 100% 自主可控,兼容离线环境。
要说清 WeKnora 能做什么,一张功能全景表是最直接的。但笔者不打算只给你一张干巴巴的列表——下面我们从智能对话、知识管理、集成与扩展、平台能力到交互方式,逐一拆解每个模块的核心能力,让你看完就知道它能帮你解决什么问题。
WeKnora 的智能对话层不是简单的"问一句答一句"。它内置了一套完整的推理引擎,支持从知识检索到工具调用的多步决策链路。下表是 WeKnora 的智能对话能力概览。
|
|
|
|
|
ReACT 渐进式多步推理,自主编排知识检索、MCP 工具和网络搜索;支持自定义 Agent
|
|
|
基于知识库的 RAG 即时问答,快速准确地回答问题
|
|
|
Agent 驱动,从原始文档中自动生成结构化、相互链接的 Markdown 知识页面
|
|
|
内置工具 + MCP 工具(Model Context Protocol)+ 网络搜索
|
|
|
在线 Prompt 编辑、检索阈值调节、多轮上下文感知、兜底回复
|
|
|
|
其中智能推理是核心——它让 WeKnora 不止于检索,还能像资深工程师一样,遇到复杂问题时主动拆解、分步求证,把知识检索、工具调用和网络搜索编排成一条完整的推理链路。
知识库是智能对话的燃料。WeKnora 在知识管理侧覆盖了从数据导入、文档解析到检索策略的全链路。下表是WeKnora的知识管理能力概览。
|
|
|
|
|
FAQ / 文档 / Wiki,支持文件夹导入、URL 导入、标签管理、在线录入
|
|
|
从飞书 / Notion / 语雀自动同步知识(更多数据源持续接入中),支持增量与全量同步
|
|
|
PDF / Word / TXT / Markdown / HTML / 图片 / CSV / Excel / PPT / JSON
|
|
|
BM25(Best Match 25,稀疏检索算法)召回 / Dense 稠密召回 / GraphRAG 图谱增强检索 / 父子分块 / 多维度索引
|
|
|
全链路可视化测试,评估召回命中率、BLEU 和 ROUGE 等指标
|
值得留意的是检索策略——它不是单一方案,而是提供了 BM25 稀疏检索、Dense 稠密检索、GraphRAG 图谱增强检索等多种选型。不同场景切不同的检索策略,才能兼顾召回率和准确率。端到端测试能力则让团队在接入知识库后,能量化评估效果,而不是凭感觉说"好像还行"。
WeKnora 能覆盖多少场景,很大程度上取决于它能接入多少外部服务。从模型厂商、向量数据库、Embedding 模型,到对象存储、IM 渠道和网络搜索,它做了一圈"适配层"。WeKnora集成与扩展能力如下所示。
|
|
|
|
|
OpenAI / Azure OpenAI / Anthropic Claude / DeepSeek / Qwen / 智谱 / 混元 / 豆包 / Gemini / MiniMax / NVIDIA / Novita AI / SiliconFlow / OpenRouter / Ollama
|
|
|
PostgreSQL (pgvector) / Elasticsearch / Milvus / Weaviate / Qdrant / Apache Doris / 腾讯云 VectorDB
|
|
|
Ollama / BGE / GTE / 智谱 / OpenAI 兼容接口
|
|
|
本地 / MinIO / AWS S3 / 腾讯云 COS / 火山引擎 TOS / 阿里云 OSS / 金山云 KS3 / 华为云 OBS
|
|
|
企业微信 / 飞书 / Slack / Telegram / 钉钉 / Mattermost / 微信
|
|
|
DuckDuckGo / Bing / Google / Tavily / Baidu / Ollama / SearXNG
|
模型厂商横跨国内外主流大模型,向量数据库覆盖了最常用的开源和商业方案,IM 渠道更是把国内外主流的办公协同工具都纳入了。这意味着不管你团队当前用的是哪套技术栈,大概率都能直接对接,不需要额外做一层桥接。
功能再多,上不了生产环境也是白搭。WeKnora 在平台侧做了不少工程化功课——从部署方式、权限控制到可观测性,覆盖了上线前后的大部分关切点。
|
|
|
|
|
本地 / Docker / Kubernetes (Helm),支持私有化离线部署
|
|
|
Web UI / RESTful API / CLI (weknora) / Chrome 扩展 / 微信小程序
|
|
|
租户 RBAC 四级角色(Owner / Admin / Contributor / Viewer),按知识库的资源归属,每租户审计日志
|
|
|
API Key 与 MCP/数据源凭据 AES-256-GCM 静态加密,gRPC TLS + Token,SSRF 防护,Agent 技能沙箱
|
|
|
集成 Langfuse,追踪 ReAct 推理循环、Token 消耗、工具调用和流水线
|
|
|
集中配置,知识库级别模型选择,多租户共享内置模型,WeKnora Cloud 托管模型与解析
|
安全方面做了多层防护:凭据加密、传输加密、SSRF 防护、技能沙箱——对于企业内部部署场景,这些不是加分项,而是准入门槛。可观测性方面集成了 Langfuse,能追踪 ReAct 推理的每一步,调试和优化 Agent 行为时不用靠猜。
WeKnora 没有把用户限定在单一的 Web 界面里,而是提供了五种交互入口,覆盖从桌面到移动、从 GUI 到 CLI 的全场景:
CLI 命令行— weknora 命令工具,采用 gh 风格的 <名词> <动词> 操作,支持 JSON 输出,适合 AI Agent 调用。
RESTful API— 完整的 OpenAPI 接口,附带 Swagger 文档。
Chrome 扩展— 在浏览器中一键将网页内容采集到知识库。
微信小程序— 轻量移动端客户端,在微信内即可与知识库交互。
五种入口覆盖了「深度使用」和「随手采集」两个极端场景——深度工作时走 Web UI 或 API,日常采集走 Chrome 扩展或小程序。
本节中的功能清单给出了 WeKnora"能做什么"的全貌,但真正驱动团队采用它的,往往是它解决了哪些实实在在的痛点。下文力我们逐一剖析。
笔者使用Docker Desktop完成的WebKnora安装,WeKnora对硬件和Docker环境的最低要求如下:
|
|
|
|
|
|
|
|
|
|
|
Linux / macOS / Windows(WSL2)
|
|
|
|
|
|
|
|
|
|
安装检查docker版本,在命令行窗口中运行如下命令:
docker --version && dockercompose version
macOS 用户额外说明:需要安装 Docker Desktop for Mac 和 Git。安装 Docker Desktop 后,建议在 Settings → Resources → Advanced 中分配足够资源:CPUs 4+、Memory 8GB+、Swap 2GB。
gitclone https://github.com/Tencent/WeKnora.git
建议生产环境固定版本而非使用 latest 标签,避免意外升级导致不兼容。
编辑 .env 文件,读者朋友们可以在笔者的真实配置文件基础上进行修改:
# ========== MCP Server ==========
# WeKnora API Key — 在 WeKnora 前端 "设置 → API Keys" 生成,供 MCP Server 访问 REST API
WEKNORA_API_KEY=”填写你自己的WeKnora的API Key”
# 对外暴露的 MCP Server 端口(默认 8082)
# ========== 镜像版本 ==========
# WeKnora 镜像版本标签,可选值: latest(稳定版), main(最新开发版)
# 可选值: debug(开发模式,有详细日志), release(生产模式,禁用Swagger文档)
# 日志级别,可选值:debug, info, warn, error, fatal,默认为debug
# LLM 调试日志:将每次大模型调用的完整请求和响应写入独立日志文件,便于排查上下文问题
# 可选值:true(自动放在 LOG_PATH 同目录下 llm_debug.log)、false/空(关闭)、或指定文件路径
# ========== 内置模型(Built-in Models)声明式配置(可选) ==========
# YAML 中的 ${NAME} 占位符会在应用启动期从这里读取真实值。变量名由 YAML 自行
# docs/BUILTIN_MODELS.md。
LLM_MODEL_NAME=“你的大模型的名称”
LLM_BASE_URL=“大模型LLM的Base URL”
LLM_API_KEY=“大模型LLM的sh-key”
EMBEDDING_MODEL_NAME=BAAI/bge-m3
EMBEDDING_BASE_URL=https://api.siliconflow.cn/v1
EMBEDDING_API_KEY=“嵌入模型的sh key(在硅基流动平台上面生成)”
# 向量查询后的重排序模型,推荐硅基流动平台(提供的免费额度)
RERANK_MODEL_NAME=BAAI/bge-reranker-v2-m3
RERANK_BASE_URL=https://api.siliconflow.cn/v1
RERANK_API_KEY=“嵌入模型的sh key(在硅基流动平台上面生成)”
# RERANK_PROVIDER=generic
# 常用值:zh-CN, en-US, ja-JP, ko-KR, ru-RU
DISABLE_REGISTRATION=true
# Ollama 服务的基准 URL,用于连接本地/其他服务器上运行的 Ollama 服务
OLLAMA_BASE_URL=http://host.docker.internal:11434
# 向量存储类型(postgres/qdrant/milvus/doris)
# 文件存储类型(local/minio/cos/tos/s3)
STREAM_MANAGER_TYPE=memory
# 应用服务主机名,默认为app(Docker内部服务名)
# 如需代理到远程后端,可设为远程地址,如 remote-app.example.com
# 应用服务宿主机映射端口,默认为8080(仅影响宿主机访问,不影响容器间通信)
DB_USER=“Postgres数据库的用户名”
DB_PASSWORD=“Postgres数据库的密码”
LOCAL_STORAGE_BASE_DIR=/data/files
TENANT_AES_KEY=“你自己的WeKnora加密的key,可以随意填写(注意密码长度要求)”
# AES-256 密钥,用于数据库中 API Key 等敏感字段的落盘加密(必须为32字节)
SYSTEM_AES_KEY=“你自己的WeKnora数据加密的key,可以随意填写(注意密码长度要求)”
# 是否开启知识图谱构建和检索(构建阶段需调用大模型,耗时较长)
# 配置 JWT_SECRET 用于前端登录刷新Token
JWT_SECRET=weknora-jwt-secret
# Embedding并发数,出现429错误时,可调小此参数
# 如果使用MinIO作为文件存储,需要配置以下参数
# MinIO访问端点(host:port),连接外部MinIO时需修改
# 推荐做法:配置一个公网域名(如 minio.example.com)并启用 HTTPS。
MINIO_ENDPOINT=minio:9000
MINIO_ACCESS_KEY_ID=minio-key@xbb2026
MINIO_SECRET_ACCESS_KEY=minio@xbb@2026
MINIO_BUCKET_NAME=XbbKnowledge
NEO4J_URI=neo4j://neo4j:7687
NEO4J_USERNAME=“Neo4j图数据库的用户名”
NEO4J_PASSWORD=“Neo4j图数据库的密码”
# ========== 文件上传大小限制 ==========
# 统一的文件大小限制(MB),默认为 50MB。
# ========== Agent Skills Sandbox 配置 ==========
# Sandbox 模式: docker(默认), local, disabled
WEKNORA_SANDBOX_MODE=docker
WEKNORA_SANDBOX_TIMEOUT=300
# ========== Agent 配置 ==========
# 注:此值为全局默认值。若单个智能体配置了 llm_call_timeout,则以智能体配置为准)。
WEKNORA_AGENT_LLM_TIMEOUT=600
# 当某个 MCP 工具被标记为「需人工审核」后,Agent 会暂停并等待用户确认;
# 该值控制最长等待时间,超时视为拒绝。默认 600(10 分钟)。
WEKNORA_AGENT_TOOL_APPROVAL_TIMEOUT=600
APK_MIRROR_ARG=mirrors.tencent.com
# 如果使用Milvus作为向量存储,需要配置以下参数
MILVUS_ADDRESS=milvus:19530
MILVUS_COLLECTION=weknora_embeddings
# Milvus向量搜索度量类型,支持 IP(默认)、COSINE、L2
# 注意:修改度量类型后需要重建collection才能生效
MILVUS_USERNAME=“Milvus向量数据库的用户名”
MILVUS_PASSWORD=“Milvus向量数据库的密码”
MILVUS_DB_NAME=xbb_milvus
DOCREADER_ADDR=docreader:50051
# Docreader 中 DOCX 解析的最大页数,默认 0(不限制)
# 设为正整数(如 500)可限制超大 Word 文档的解析开销;超过页数的内容将不会继续解析
DOCREADER_DOCX_MAX_PAGES=0
......
本文节选自第九十一期《51测试天地》
原创文章
《WeKnora MCP实战手册》
文章后续为大家详细讲解了:
WeKnora MCP在OpenCode中的使用
想继续阅读全文
或查看更多《51测试天地》的原创文章
请点击下方 阅读原文或扫描二维码 查看
声明:本文为51Testing软件测试网 晴空 用户投稿内容,该用户投稿时已经承诺独立承担涉及知识产权的相关法律责任,并且已经向51Testing承诺此文并无抄袭内容。发布本文的用途仅仅为学习交流,不做任何商用,未经授权请勿转载,否则作者和51Testing有权追究责任。如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:editor@51testing.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。