vecboost 0.2.0

High-performance embedding vector service written in Rust
# VecBoost 完整配置示例
# =======================
# 本文件展示 VecBoost 所有配置选项,适合生产环境参考
# 实际部署时建议复制为 config.toml 并按需调整

# ============ 服务配置 ============
[server]
# 服务绑定地址 (0.0.0.0 允许外部访问,127.0.0.1 仅本机)
host = "0.0.0.0"

# 服务端口号
port = 9002

# 请求超时时间 (秒)
timeout = 30

# ============ 模型配置 ============
[model]
# HuggingFace 模型仓库 ID
model_repo = "BAAI/bge-m3"

# 模型版本/分支
model_revision = "main"

# 本地模型路径 (可选,设置后优先使用本地模型)
model_path = ""

# 是否使用 GPU 加速
# 注意:需要启用相应的 cargo feature
# - CUDA: cargo build --features cuda
# - Metal (macOS): cargo build --features metal
use_gpu = false

# 批处理大小 (GPU 显存充足时可增大)
batch_size = 64

# 期望的向量维度 (BGE-M3 为 1024)
expected_dimension = 1024

# 最大序列长度 (token 数)
max_sequence_length = 8192

# ============ 向量化配置 ============
[embedding]
# 默认聚合模式
# 可选值:
#   - mean: 平均池化 (加权平均,考虑重叠)
#   - max: 最大池化
#   - min: 最小池化
default_aggregation = "mean"

# 默认相似度度量方法
# 可选值:
#   - cosine: 余弦相似度 (推荐)
#   - euclidean: 欧氏距离
#   - dot_product: 点积
#   - manhattan: 曼哈顿距离
similarity_metric = "cosine"

# 是否启用结果缓存
cache_enabled = true

# 缓存大小 (最大缓存条目数)
cache_size = 4096

# 最大批处理大小
max_batch_size = 128

# 单个文本最大字节长度 (防止资源耗尽攻击)
max_text_length = 8192

# ============ 监控配置 ============
[monitoring]
# 内存限制 (MB), None 表示不限制
memory_limit_mb = 8192

# 内存警告阈值 (0.0-1.0), 达到此比例时发出警告
memory_warning_threshold = 0.8

# 是否启用性能指标收集
metrics_enabled = true

# 日志级别
# 可选值: trace, debug, info, warn, error
log_level = "info"

# ============ 认证配置 ============
[auth]
# 是否启用认证
enabled = true

# JWT 密钥
# ⚠️ 重要:生产环境必须通过环境变量设置
# 使用: export VECBOOST_JWT_SECRET="your-32-char-min-secret"
# 不允许在配置文件中设置此值
jwt_secret = ""

# Token 过期时间 (小时)
# 访问 token 有效期: 1 小时
token_expiration_hours = 1

# 默认管理员用户名 (首次启动时必须设置)
default_admin_username = "admin"

# 默认管理员密码
# ⚠️ 重要:生产环境必须通过环境变量设置
# 使用: export VECBOOST_ADMIN_PASSWORD="your-secure-password"
# 不允许在配置文件中设置此值
default_admin_password = ""

# 受信任代理 CIDR 列表 (X-Forwarded-For 信任边界)
# 空列表 = 无条件信任 XFF (v0.3.0-v0.3.2 向后兼容)
# 非空 = 仅当 peer IP 匹配列表内 CIDR 时才信任 XFF
# 示例: ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
trusted_proxies = []

# ============ CSRF 保护配置 ============
[auth.csrf]
# 是否启用 CSRF 保护
enabled = false

# 允许的 Origin 列表 (None = 不验证 Origin)
# 示例: ["https://example.com", "https://app.example.com"]
allowed_origins = []

# 是否启用 CSRF Token 验证
token_validation_enabled = false

# Token 过期时间 (秒)
token_expiration_secs = 3600

# 是否允许同源请求
allow_same_origin = true

# ============ 密钥存储配置 ============
[auth.security]
# 密钥存储类型: environment, encrypted_file
storage_type = "environment"

# 加密密钥 (用于 encrypted_file 存储类型)
encryption_key = ""

# ============ 审计日志配置 ============
[audit]
# 是否启用审计日志
enabled = true

# 审计日志文件路径
log_file_path = "logs/audit.log"

# 日志级别
# 可选值: trace, debug, info, warn, error
log_level = "info"

# 单个日志文件最大大小 (MB)
max_file_size_mb = 100

# 保留的日志文件数量
max_files = 10

# ============ 限流配置 ============
[rate_limit]
# 是否启用限流
enabled = true

# 全局请求限制 (每分钟)
global_requests_per_minute = 5000

# IP 请求限制 (每分钟)
ip_requests_per_minute = 200

# 用户请求限制 (每分钟)
user_requests_per_minute = 500

# API Key 请求限制 (每分钟)
api_key_requests_per_minute = 1000

# 时间窗口大小 (秒)
window_secs = 60

# IP 白名单 (这些 IP 不受限流限制)
# 支持单个 IP 和 CIDR 表示法,例如: "127.0.0.1", "192.168.1.0/24"
ip_whitelist = ["127.0.0.1", "::1", "10.0.0.0/8"]

# ============ 数据库配置 (dbnexus, 需要 db feature) ============
[database]
# 数据库连接 URL
# SQLite: "sqlite:vecboost.db"
# PostgreSQL: "postgres://user:pass@localhost:5432/vecboost"
url = "postgres://vecboost:securepassword@localhost:5432/vecboost"

# 连接池大小
max_connections = 20

# 连接超时 (秒)
connect_timeout_secs = 10

# ============ 日志配置 (inklog, 需要 inklog feature) ============
[logging]
# 日志级别: trace, debug, info, warn, error
level = "info"

# 是否输出到控制台
console = true

# 日志文件路径 (空字符串表示不写入文件)
file_path = "logs/vecboost.log"

# 日志文件轮转大小 (MB)
rotation_size_mb = 100

# 保留的日志文件数量
max_files = 30

# ============ 流控配置 (limiteron, 需要 limiteron feature) ============
[flow_control]
# 是否启用流控
enabled = true

# 令牌桶容量
token_capacity = 200

# 令牌补充速率 (每秒)
token_refill_rate = 100

# 熔断器失败率阈值 (0.0-1.0)
circuit_breaker_failure_threshold = 0.5

# 熔断器恢复超时 (秒)
circuit_breaker_recovery_secs = 30

# ============ 缓存配置 (oxcache, 需要 oxcache feature) ============
[cache]
# 是否启用缓存
enabled = true

# 缓存后端类型: memory, redis
backend = "redis"

# 最大缓存条目数
max_entries = 50000

# 缓存 TTL (秒, 0 表示永不过期)
ttl_secs = 7200

# 驱逐策略: lru, lfu, fifo
eviction_policy = "lru"

# ============ 设备配置 ============
[device]
# 优先使用的设备类型
# 可选值:
#   - cpu: CPU 计算
#   - cuda: NVIDIA GPU (需要 CUDA support)
#   - metal: Apple Silicon GPU (需要 Metal support)
#   - auto: 自动检测并选择最佳设备
preferred = "auto"

# GPU 内存保留比例 (0.0-1.0)
# 用于防止 GPU OOM,保留部分显存
gpu_memory_reservation = 0.1

# ============ 高级配置 ============
[advanced]
# 是否启用 ONNX Runtime 作为备用引擎
onnx_fallback_enabled = true

# 是否启用 GPU OOM 自动降级
gpu_oom_fallback_enabled = true

# 重试配置
[advanced.retry]
# 最大重试次数
max_attempts = 3

# 重试间隔 (毫秒)
delay_ms = 1000

# 指数退避倍率
exponential_base = 2.0

# 熔断器配置
[advanced.circuit_breaker]
# 失败率阈值 (0.0-1.0)
failure_threshold = 0.5

# 最小请求数
min_requests = 10

# 半开状态请求数
half_open_requests = 3

# 熔断恢复超时 (秒)
recovery_timeout = 30