Seafile AI 为 Seafile 提供文件处理与智能检索能力,包括文件标签生成、文件和图片摘要、文本翻译、SeaDoc 写作辅助等。Seafile 14 还支持在资料库内使用 AI Chat,以及基于关键词和向量的文档检索。
Seafile AI 调用外部大语言模型(LLM)服务。实际功能、响应速度、Token 消耗和生成结果取决于所选模型及服务提供商。AI 生成内容可能不准确,请在使用前进行核实。使用第三方模型服务前,也应确认其数据处理和隐私政策。
部署前准备
Seafile AI 的部分功能还依赖其他组件:
-
Redis :用于 AI 使用量事件的发布与统计;请确保元数据服务器使用的 Redis 可以正常工作。
-
SeaSearch :为 Seafile 14 的 AI Chat 关键词搜索提供文档检索能力,向量搜索也依赖 SeaSearch。
-
大语言模型服务 :应选择支持所需功能的模型。需要识别图片的功能应使用支持图片输入的多模态模型。
-
Embedding 模型 :仅在使用向量搜索时需要,并且模型输出维度必须与配置保持一致。
以下以 Docker Compose 部署为例。默认假设 Seafile 的配置目录为
/opt/seafile
,数据目录为
/opt/seafile-data
;如已修改
.env
中的
SEAFILE_VOLUME
,请使用实际路径。
Seafile 14:部署 Seafile AI
与 Seafile 在同一台服务器上部署
1. 下载 Compose 文件
在 Seafile 的 Compose 目录中执行:
cd /opt/seafile
wget https://manual.seafile.com/14.0/repo/docker/seafile-ai.yml
2. 修改
.env
将
seafile-ai.yml
添加到已有的
COMPOSE_FILE
列表,并启用 Seafile AI:
ENABLE_SEAFILE_AI=true
例如,当原配置已经包含 Seafile、Caddy、SeaDoc、SeaSearch 和元数据服务器时,可以设置为:
COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,seasearch.yml,md-server.yml,seafile-ai.yml'
此处仅为示例。
不要删除
COMPOSE_FILE
中其他仍在使用的服务文件。
如果使用其他反向代理、外部组件或其他部署结构,请保留对应的文件列表。
3. 配置大语言模型
编辑 Seafile 数据目录下的
seafile_ai_config.yaml
:
nano /opt/seafile-data/seafile/conf/seafile_ai_config.yaml
以下示例使用一个提供 OpenAI 兼容 API 的多模态模型。请填写实际服务地址、密钥及模型 ID:
global:
LLM_MODELS:
- type: other
url: https://llm.example.com/v1
key: your-api-key
model: your-multimodal-model
label: My AI Model
default: true
tier: medium
hidden: false
disable: false
对于支持 OpenAI 兼容 API 的模型服务,可将
type
设置为
other
,并填写模型服务提供商要求的接口地址。如果只配置一个模型,应将它的
default
设置为
true
。默认模型也用于文件摘要、写作辅助、翻译等通用 AI 功能。
LLM_MODELS
的主要字段如下:
字段
说明
type
模型服务提供商类型。OpenAI 兼容接口使用
other
。
url
模型 API 地址;按提供商实际接口填写。
key
模型服务的 API 密钥。
model
调用 API 时使用的模型 ID。
label
Seahub 模型选择器中显示的名称。
default
是否作为默认模型。通常只设置一个
true
。
tier
模型能力等级:
low
、
medium
、
high
。
hidden
设为
true
时,不在 Seahub 模型选择器中显示。
disable
设为
true
时禁用该模型。
price
可选。配置模型输入与输出 Token 的单价,用于使用量统计。
可以在
LLM_MODELS
中添加多个模型供用户选择。Seafile AI 会根据具体功能的模型等级选择相应模型;若没有可用的对应等级模型,则使用默认模型。
4. 启动服务
cd /opt/seafile
docker compose config --quiet
docker compose down
docker compose up -d
检查服务状态与日志:
docker compose ps
docker compose logs -f seafile-ai
为不同功能指定模型等级(可选)
可以在
seafile_ai_config.yaml
的
global
下添加
AI_UTILS_TIER
,分别指定 AI 功能使用的模型等级:
global:
AI_UTILS_TIER:
generate_summary: low
doc_tags: low
translate: low
writing_assistant: medium
ocr: low
image_caption: medium
image_tags: low
search_icons: low
rerank: low
请将该配置
合并到现有的
global
节点
,不要在同一个 YAML 文件中重复创建第二个
global
。这些等级对应
LLM_MODELS
中的
tier
字段;没有匹配模型时,系统使用默认模型。
在另一台服务器上独立部署
如需将 Seafile AI 部署到与 Seafile 不同的主机,可在 Seafile AI 主机上执行:
mkdir -p /opt/seafile-ai
cd /opt/seafile-ai
wget https://manual.seafile.com/14.0/repo/docker/seafile-ai/seafile-ai.yml
wget -O .env https://manual.seafile.com/14.0/repo/docker/seafile-ai/env
根据实际环境修改
.env
。关键配置项如下。
服务和连接配置:
变量
说明
SEAFILE_AI_IMAGE
Seafile AI 镜像,默认
seafileltd/seafile-ai:14.0-latest
。
SEAFILE_VOLUME
持久化数据目录,默认
/opt/seafile-data
,在容器内挂载为
/shared
。
INNER_SEAHUB_SERVICE_URL
Seafile AI 访问 Seahub 的内网地址,独立部署时必填。
INNER_METADATA_SERVER_URL
Seafile AI 访问元数据服务器的地址,例如
http://192.168.1.10:8084
。
SEASEARCH_URL
SeaSearch 的内网访问地址;独立部署时使用 AI Chat 文档搜索或向量搜索需要配置。
SEASEARCH_TOKEN
SeaSearch API 授权令牌,需与
SEASEARCH_URL
配合使用。
JWT_PRIVATE_KEY
与 Seafile 服务器和相关扩展保持一致的 JWT 密钥,必填。
SEAFILE_AI_LOG_LEVEL
日志级别,默认
info
。
SEASEARCH_TOKEN
是将 SeaSearch 管理员的
用户名:密码
进行 Base64 编码得到的令牌,可使用以下命令生成:
printf '%s' 'admin:your-password' | base64
数据库和缓存配置:
变量
说明
SEAFILE_MYSQL_DB_HOST
数据库地址;默认
db
。独立部署时通常需要修改为数据库的实际可达地址。
SEAFILE_MYSQL_DB_PORT
数据库端口,默认
3306
。
SEAFILE_MYSQL_DB_USER
数据库用户名,默认
seafile
。
SEAFILE_MYSQL_DB_PASSWORD
数据库密码,必填。
SEAFILE_MYSQL_DB_CCNET_DB_NAME
CCNet 数据库名,默认
ccnet_db
。
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME
Seafile 数据库名,默认
seafile_db
。
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME
Seahub 数据库名,默认
seahub_db
。
REDIS_HOST
Redis 地址,默认
redis
;独立部署时需检查网络可达性。
REDIS_PORT
Redis 端口,默认
6379
。
REDIS_PASSWORD
Redis 认证密码;未设置密码时留空。
存储后端配置:
独立部署的 Seafile AI 必须能够访问 Seafile 使用的存储后端,并保持相关配置一致。使用 S3 时,需要根据实际部署配置以下变量:
变量
说明
SEAF_SERVER_STORAGE_TYPE
Seafile 使用的存储类型,应与 Seafile 主服务一致。
S3_COMMIT_BUCKET
/
S3_FS_BUCKET
/
S3_BLOCK_BUCKET
分别保存 commit、fs 和 block 对象的桶。
S3_KEY_ID
/
S3_SECRET_KEY
S3 访问凭据。
S3_USE_V4_SIGNATURE
是否使用 V4 签名,默认
true
。
S3_AWS_REGION
区域,默认
us-east-1
。
S3_HOST
S3 兼容服务端点;使用 AWS 默认端点时可留空。
S3_USE_HTTPS
是否启用 HTTPS,默认
true
。
S3_PATH_STYLE_REQUEST
是否使用路径风格访问,默认
false
。
S3_SSE_C_KEY
可选,SSE-C 客户端提供的密钥。
同步模型配置文件:
在 Seafile 主机和 Seafile AI 主机上,都需要准备内容一致的
seafile_ai_config.yaml
,其中包含所使用的
LLM_MODELS
,以及可选的
AI_UTILS_TIER
和
EMBEDDING_MODEL
。Seahub 使用 Seafile 主机上的配置显示模型列表,而独立运行的 Seafile AI 根据自己主机上的配置调用模型。
如果两台主机的
SEAFILE_VOLUME
都使用默认值,则配置文件路径均为:
/opt/seafile-data/seafile/conf/seafile_ai_config.yaml
配置完成后,在 Seafile AI 主机上执行:
cd /opt/seafile-ai
docker compose up -d
然后在
Seafile 主机
的
.env
中添加或修改:
SEAFILE_AI_SERVER_URL=http://192.168.1.20:8888
将示例 IP 替换为实际的 Seafile AI 主机地址,并确保 Seafile 服务器可以访问该端口。重启 Seafile:
cd /opt/seafile
docker compose down
docker compose up -d
Seafile 14:高级功能
AI 使用量统计与配额
Seafile 可以统计用户消耗的 Token,并为用户设置每月 AI 配额。Seafile AI 通过 Redis 发布模型使用量事件,Seafevents 消费事件并将汇总结果存入 Seafile 数据库,因此应确保 Redis 连接正常。
在
seafile_ai_config.yaml
的模型配置中,可使用
price
设置每
100 万个 Token
的价格:
global:
LLM_MODELS:
- type: openai
model: gpt-4o-mini
key: your-api-key
default: true
tier: medium
price:
input_tokens: 0.15
output_tokens: 0.60
以上为示例价格,
请按照实际模型计费标准填写
。只有设置了
price
的模型会参与 AI 使用量与月度信用额度计算。
可根据
角色与权限
中的
monthly_ai_credit_per_user
为用户设置月度额度,
-1
表示不限制。Seafile 按
1 个货币单位折算 100 个信用点
:例如价格单位为美元时,
200
个信用点相当于每位用户每月 2 美元的额度。
对于组织用户,月度额度按组织的成员配额合并。例如设置
monthly_ai_credit_per_user = 200
、组织成员配额为 10 时,整个组织共享 2,000 个信用点。
AI Chat 关键词搜索
AI Chat 可以通过 SeaSearch 在当前资料库中检索文档。使用前须启用 SeaSearch,并确保 Seafile AI 能访问同一个 SeaSearch 服务。
AI Chat 向量搜索
向量搜索基于文件 AI 摘要的语义信息检索资料库内容,在关键词搜索的基础上提供补充检索能力。启用前,应确认:
-
元数据服务器正常运行,并已为目标资料库启用元数据管理。
-
SeaSearch 已配置且支持向量索引。
-
seafile_ai_config.yaml 中配置了有效的 EMBEDDING_MODEL ,并确认实际输出维度与 dimensions 一致。
在现有
global
节点中添加 Embedding 模型配置,例如:
global:
EMBEDDING_MODEL:
type: other
url: https://embedding.example.com/v1
key: your-embedding-api-key
model: your-embedding-model
dimensions: 1024
这是独立配置片段,请与已有的
LLM_MODELS
合并到同一个
global
节点。
dimensions
未设为有效正整数时默认为
1024
,但必须与实际模型返回的向量维度匹配。
配置就绪后,在资料库的
设置
中启用
扩展属性
,再启用
AI Chat 与搜索
。Seafile 会异步为受支持的文件(
sdoc
、
md
、
docx
、
pdf
、
pptx
)生成摘要和向量索引。初次索引可能需要较长时间,后续新增或修改的文件也会异步更新。
关闭
AI Summary
会删除该资料库的向量索引。若摘要或搜索结果异常,可检查
ai_summary.log
和
seasearch_index.log
。向量搜索不能替代 SeaSearch 关键词搜索;即使向量搜索不可用,AI Chat 仍会使用关键词搜索。
关闭 AI Chat
如果希望保留其他 Seafile AI 功能,但隐藏资料库中的 AI Chat 入口,可编辑:
/opt/seafile-data/seafile/conf/seahub_settings.py
添加:
ENABLE_AI_CHAT = False
保存并重启 Seahub / Seafile 服务,使配置生效。
Seafile 13:部署与配置差异
Seafile 13 仍使用
.env
管理 Seafile AI 的模型连接配置,而非 Seafile 14 的
seafile_ai_config.yaml
模型列表。部署前同样应先部署元数据服务器,并配置 Redis 缓存。
与 Seafile 同机部署
在
/opt/seafile
中下载对应 Compose 文件:
cd /opt/seafile
wget https://manual.seafile.com/13.0/repo/docker/seafile-ai.yml
在已有的
COMPOSE_FILE
中增加
seafile-ai.yml
,并在
.env
中配置:
ENABLE_SEAFILE_AI=true
SEAFILE_AI_LLM_TYPE=openai
SEAFILE_AI_LLM_KEY=your-api-key
SEAFILE_AI_LLM_MODEL=gpt-4o-mini
例如使用 OpenAI 兼容的第三方 API 时,可设置:
ENABLE_SEAFILE_AI=true
SEAFILE_AI_LLM_TYPE=other
SEAFILE_AI_LLM_URL=https://llm.example.com/v1
SEAFILE_AI_LLM_KEY=your-api-key
SEAFILE_AI_LLM_MODEL=your-multimodal-model
SEAFILE_AI_LLM_TYPE
也可根据服务提供商选择对应类型。确认
COMPOSE_FILE
包含正在使用的所有服务后,重新启动:
docker compose down
docker compose up -d
独立部署
在 Seafile AI 主机上下载:
mkdir -p /opt/seafile-ai
cd /opt/seafile-ai
wget https://manual.seafile.com/13.0/repo/docker/seafile-ai/seafile-ai.yml
wget -O .env https://manual.seafile.com/13.0/repo/docker/seafile-ai/env
在独立部署主机的
.env
中设置 Seafile 的
JWT_PRIVATE_KEY
、内网 Seahub 地址
INNER_SEAHUB_SERVICE_URL
、Redis 连接信息,以及
SEAFILE_AI_LLM_TYPE
、
SEAFILE_AI_LLM_URL
、
SEAFILE_AI_LLM_KEY
和
SEAFILE_AI_LLM_MODEL
。其中 JWT 密钥必须与 Seafile 主机保持一致。
启动 Seafile AI:
docker compose up -d
在 Seafile 主机的
.env
中配置 Seafile AI 地址:
SEAFILE_AI_SERVER_URL=http://192.168.1.20:8888
随后重启 Seafile 主服务。
人脸嵌入服务(Seafile 13 可选)
Seafile 13 支持将人脸嵌入服务作为可选组件部署,用于识别和编码图片中的人脸。提供
NVIDIA GPU(CUDA 12.4)
与
CPU
两种部署方式;GPU 模式还需要兼容的驱动和 NVIDIA Container Toolkit。该配置仅对应 Seafile 13,不能直接将其作为 Seafile 14 的部署步骤。
下载所选模式的 Compose 文件(任选其一):
# NVIDIA GPU 模式
wget -O face-embedding.yml https://manual.seafile.com/13.0/repo/docker/face-embedding/cuda.yml
# 或 CPU 模式
wget -O face-embedding.yml https://manual.seafile.com/13.0/repo/docker/face-embedding/cpu.yml
在实际部署目录中的
.env
中,将
face-embedding.yml
加入原有的
COMPOSE_FILE
,并设置:
FACE_EMBEDDING_VOLUME=/opt/face_embedding
重新启动对应的 Compose 项目后,在资料库设置中启用人脸识别:
如果人脸嵌入服务独立运行在另一台主机,需要按实际部署方式公开服务的
8886
端口,并在 Seafile AI 主机的
.env
中设置:
FACE_EMBEDDING_SERVICE_URL=http://192.168.1.30:8886
在 Seafile 主机的
.env
中设置:
ENABLE_FACE_RECOGNITION=true
确保两端
JWT_PRIVATE_KEY
一致。如需使用独立的服务访问密钥,可在 Seafile AI 与人脸嵌入服务的
.env
中设置相同的
FACE_EMBEDDING_SERVICE_KEY
。
AI 使用量统计(Seafile 13)
Seafile 13 在
seahub_settings.py
中使用
AI_PRICES
为模型设置计费参考值,例如:
AI_PRICES = {
'gpt-4o-mini': {
'input_tokens_1k': 0.0011,
'output_tokens_1k': 0.0044,
},
}
这里的单位是
每 1,000 个 Token
,与 Seafile 14 在
seafile_ai_config.yaml
的
price
中按
每 100 万个 Token
设置价格的方式不同。13 可结合
monthly_ai_credit_per_user
配置月度额度,具体权限配置请参阅
角色与权限
。
常见问题
模型列表没有更新
Seafile 14 独立部署时,检查 Seafile 主机和 Seafile AI 主机上的
seafile_ai_config.yaml
是否一致,并确认 YAML 的
global
节点及模型字段无误。
AI Chat 找不到资料库中的文档
检查 SeaSearch 是否可访问、相关资料库是否开启所需功能,以及独立部署时的
SEASEARCH_URL
和
SEASEARCH_TOKEN
是否正确。使用向量搜索时还需检查元数据服务、Embedding 配置与摘要索引日志。
图像相关功能无响应或结果异常
确认所选模型支持图片输入,并查看模型提供商的 API 是否可达、密钥是否有效。
AI 使用量统计不更新
确认 Redis 正常工作,并检查模型是否设置价格。Seafile 14 的
price
使用每 100 万 Token 单价,不应直接复用 13 的
AI_PRICES
数值。
独立部署无法连接 Seafile
检查
JWT_PRIVATE_KEY
是否一致,
INNER_SEAHUB_SERVICE_URL
、数据库、Redis 和存储后端是否可达;同时确认部署主机间的防火墙允许必要的服务通信。