常见问题

你可能会问

真的完全免费吗?可以商用?

是。MIT 协议,可商用、可二次开发、可闭源分发,不用付费也不用署名(保留 LICENSE 即可)。

唯一的成本是模型厂商的 API 费用,这部分直接跟厂商结算,项目本身不收任何费用、不做中间层。

没有 GPU 能跑吗?服务器要什么配置?

不需要 GPU —— 模型推理都在厂商侧,本机只做检索和编排。

小规模(<1 万片段)2 核 2G 就够;中等规模建议 2 核 4G。注意向量数据比想象的占空间:实测 12,596 个片段(2048 维)的 Chroma 目录约 163MB。

支持哪些文档格式?中文效果怎么样?

支持 txt / md / docx / xlsx / pdf,单文件默认上限 20MB。

切分器针对中文做了专门处理:识别【章节】第X章、中文标点边界,Q&A 问答对不会被拆开。相关性阈值也是按中文 embedding 的实际分数分布调的 —— 中文里即使内容无关相似度也有 0.65 左右,所以单独引入了一个 0.76 的相关性分界线。

问什么都回「知识库中没有相关信息」怎么办?

按顺序检查:① 文档状态是否为就绪且分片数 > 0;② 把相似度阈值调低(默认 0.5);③ 用「预览切分效果」确认文档被合理切分。

如果希望资料外的问题也能回答,到「RAG 设置」开启自主回答开关。

入库很慢或者中途失败?

多半是 embedding 厂商的配额限制(实测火山方舟的配额是长周期累计的)。

项目已做断点续传:中断后进度保留,再点「入库」从上次位置继续,已完成的片段不会重复消耗配额。大知识库建议用 scripts/ingest_retry.py 挂后台跑。

管理后台有登录吗?部署后安全吗?

有内置登录。访问 /admin/ 下任何页面都会先跳登录页,默认账号 admin / 123456 首次启动自动创建,登录有效期 7 天。配置类和文档类接口全部需要管理员 token;聊天接口和嵌入组件保持公开 —— 否则嵌到别人网站上的组件根本跑不通。

默认密码必须改掉,这是上线第一件事,同时把 APP_SECRET_KEY 换成随机值。要再加一层,部署文档里给了 SSH 端口转发 / IP 白名单 / Basic 认证三选一。另外 API Key 目前只做了 base64 混淆不是加密,生产环境应该换成 KMS / Vault。

可以只用某一个厂商吗?会不会绑定?

不绑定。15 项预设只是帮你省去查文档填地址的功夫,随时可以在页面上切换。

还有两个自定义槽位:任何兼容 OpenAI 或 Anthropic 接口的服务都能接 —— 自建 vLLM、one-api、LiteLLM、Ollama 本地模型都可以。

能嵌到微信小程序里吗?

可以,通过小程序的 web-view 组件加载。仓库里的 docs/EMBED_GUIDE.md 有微信/支付宝/抖音各平台的具体做法,以及 Electron、Tauri、iOS/Android WebView 的接入方式。

注意需要在小程序后台把域名加入业务域名白名单

界面支持多语言吗?内网离线能自动选对语言?

支持简体中文 / 繁體中文 / 日本語 / English 四种,管理后台、聊天组件、独立聊天页都能切,选择记在 localStorage,后台和组件共用一个键。

默认语言先看浏览器时区,再看语言偏好,不查 IP —— 内网里客户端地址是 10.x / 192.168.x 本身不带地区信息,离线环境也连不上任何 IP 库,所以纯内网部署一样判断得对。切换语言后 AI 回答也跟着换:知识库仍是中文、检索逻辑一个字没改,只在提示词后面追加一段用目标语言写的作答指令。

忘记后台管理员密码了怎么办?

backend/ 目录下跑重置脚本:python -m scripts.reset_admin_password,按提示输入新密码(输入时不回显)。

也可以非交互式重置:python -m scripts.reset_admin_password --username admin --password 新密码;加 --list 先看看有哪些账号。重置后所有设备都会被登出,需要用新密码重新登录。

还没有任何 API Key,能先把项目跑起来吗?

能。服务正常启动,非模型类功能(后台、文档管理、嵌入代码等)全部可用;涉及模型调用的接口会返回明确的 llm_error / embedding_error,方便先把前后端联调跑通,Key 到了填上即可。

也可以先接 Ollama 本地模型:地址 localhost:11434,Key 随便填,不花一分钱。

入库报 dimension of 2048, got 1024 是怎么回事?

这是换了 Embedding 模型、但旧集合还锁着旧维度导致的。删文档、重启服务都解不掉 —— 空集合也保留维度锁,必须重建向量库。

到「模型配置」页点 🔌 测试并探测维度,横幅会写明锁定维度与当前模型维度,确认后一键重建:后台自动删集合、重建并把全部文档重新嵌入。即使新旧模型维度恰好相同,只要不是同一个模型也必须重建 —— 向量空间互不相通,否则检索会静默变成噪声。

火山方舟报 401?

十有八九是产品项选错了。包月套餐与按量付费是两个 Base URL:包月走 /api/plan/v3(OpenAI)或 /api/plan/v1(Anthropic),按量(豆包)走 /api/v3

包月套餐的模型名必须固定填 ark-code-latest,具体路由到哪个模型在火山控制台选。用错地址不仅报错,还可能产生额外费用。

聊天时返回 429 怎么办?

429 是厂商侧限流。聊天接口已内置自动重试(45 秒预算、指数退避),正常使用基本不会看到。

连续高频提问仍触发,说明账号配额已达上限 —— 稍等一会儿,或换配额更高的模型。入库时的 429 则由断点续传机制处理,大知识库可用 scripts/ingest_retry.py --cooldown 60 挂后台跑。

SSE 流式回答在 Nginx 后面一次性蹦出来 / 中途断流?

Nginx 默认会缓冲上游响应,流式输出被攒成了一坨。给聊天接口单独关掉:proxy_buffering off; proxy_cache off;,长回答还应放宽读超时。

部署页有可直接抄的完整配置。后端本身已下发 X-Accel-Buffering: no,但反向代理上的缓冲仍建议显式关闭。

更新代码 / 改了前端,刷新页面却没变化?

后端对 /admin/widget/embed 已设置 Cache-Control: no-store,正常刷新即可。仍有残留就硬刷新:Mac 按 Cmd+Shift+R,Windows 按 Ctrl+Shift+R

嵌入到外部网站的组件记得把引用地址的 ?v=1 版本号递增,逼着浏览器和 CDN 拿新文件。

Python 3.14 装不上某些包 / 依赖装进了错误的环境?

langchain-text-splitters 在新版本 Python 上装不上不影响运行 —— 切分器有内置实现,不依赖这个包;其余依赖已在 Python 3.14.5 上验证通过。

多 Python 环境(系统解释器、Homebrew、PyCharm 虚拟环境并存)时,用 python -m pip install -r requirements.txt 而不是裸 pip install,确保装的是当前 python 对应的环境;也可以直接 python run.py --install 让启动脚本自己装。

现在就把它跑起来

克隆、装依赖、点运行 —— 五分钟后你就有一个能用的智能客服

免费下载源码 快速开始