常见问题

常见问题(FAQ)


部署相关

Q: 支持哪些数据库?

A: M-Doc 支持 PostgreSQL(推荐)、MySQL 和 SQLite。生产环境建议使用 PostgreSQL,因为向量搜索功能(pgvector)仅支持 PostgreSQL。

Q: 需要 Redis 吗?

A: 是的,Redis 用于缓存和会话管理。M-Doc 启动时会连接 Redis,请确保 Redis 服务可用。

Q: 如何使用 HTTPS?

A: M-Doc 本身不处理 TLS,建议使用 Nginx 或 Caddy 作为反向代理,在代理层配置 SSL 证书。

Q: Docker 部署时如何持久化数据?

A: 使用 Docker Volume 挂载数据库数据目录和日志目录。如使用 Docker Compose,参考部署指南中的示例配置。


使用相关

Q: 文档的 Slug 可以修改吗?

A: 不可以。Slug 是文档的永久标识,创建后不可更改。请在创建时谨慎选择。

Q: 删除文章后能恢复吗?

A: 不能。文章删除后会级联删除所有相关的版本和数据。请在删除前确认。

Q: 如何将文章从一个版本移动到另一个版本?

A: 使用「合并」功能。在目标版本中选择文章,从源版本合并过来。

Q: 版本之间有什么关系?

A: 版本类似 Git 的分支。你可以从一个版本 Fork 出新版本,两者之后独立编辑。也可以将修改合并回去。


API 相关

Q: PAT 和 API Key 有什么区别?

A: PAT 更简单(Bearer Token),适合脚本和 AI 工具;API Key 更安全(HMAC 签名),适合服务端集成。PAT 有 Scope 限制,API Key 拥有全部权限。

Q: OpenAPI 接口返回 403 怎么办?

A: 检查以下几点:

  1. PAT 是否具有所需的 Scope
  2. PAT 是否已过期
  3. API Key 签名是否正确
  4. 时间窗口是否在 15 分钟内

Q: 如何批量导入文章?

A: 使用 OpenAPI 的创建和发布接口。创建 PAT(需要 write:articles 权限),然后通过脚本调用 API 批量创建。


AI 功能相关

Q: 语义搜索没有结果怎么办?

A: 检查以下配置:

  1. vectorize.enabled 是否为 true
  2. vectorstore.enabled 是否为 true
  3. pgvector 扩展是否已安装
  4. 文章是否已发布(仅发布状态的文章会被向量化)
  5. Embedding API 是否可访问

Q: 支持哪些 Embedding 模型?

A: 任何兼容 OpenAI Embedding API 的服务,如:

  • OpenAI: text-embedding-3-small, text-embedding-3-large
  • 智谱: embedding-3
  • 其他兼容服务

Q: 向量化失败会影响文章操作吗?

A: 不会。向量化是异步操作,失败不会影响文章的创建、编辑和发布。失败信息会记录在日志中。