AI 功能配置

AI 功能配置

M-Doc 提供两项 AI 功能:文章自动摘要语义搜索(向量化)。两者均基于 OpenAI 兼容协议,可对接多种 AI 服务。


文章自动摘要

文章发布时自动生成摘要,用于搜索结果展示和目录预览。

summarize:
  enabled: true
  model: gpt-4o-mini            # 聊天模型名称
  base_url: "https://api.openai.com/v1/"
  api_key: "your-api-key"
  max_length: 200                # 摘要最大字数

支持任何兼容 OpenAI Chat API 的服务(如智谱 GLM、DeepSeek 等)。

语义搜索(向量化)

向量化配置

vectorize:
  enabled: true
  collection_name: article_vectors  # 向量集合名称
  provider: openai                   # 仅支持 openai(含兼容服务)
  embedding_model: text-embedding-3-small  # Embedding 模型
  chunk_size: 512                    # 文本分块大小(token)
  chunk_overlap: 50                  # 分块重叠大小
  batch_size: 256                    # 批量处理大小
  max_retries: 3                     # 最大重试次数
  base_url: "https://api.openai.com/v1/"
  api_key: "your-api-key"

向量存储配置

vectorstore:
  enabled: true
  driver: pgvector                   # 当前仅支持 pgvector
  pgvector:
    index_type: hnsw                 # hnsw(推荐)或 ivfflat
    distance_metric: cosine          # cosine, l2, inner_product

pgvector 安装

向量搜索依赖 PostgreSQL 的 pgvector 扩展:

# Docker 方式(推荐)
docker run -d \
  --name postgres-pgvector \
  -e POSTGRES_PASSWORD=password \
  pgvector/pgvector:pg16

# 或在已有 PostgreSQL 中安装
CREATE EXTENSION IF NOT EXISTS vector;

索引类型选择

索引类型 适用场景 特点
HNSW 大多数场景(推荐) 查询速度快,构建较慢
IVFFlat 超大规模数据 构建快,需要训练

工作原理

  1. 文章创建/更新/发布时触发事件
  2. 系统将文章内容分块(RecursiveCharacterTextSplitter)
  3. 通过 Embedding API 将文本转换为向量
  4. 存储到 pgvector 中
  5. 搜索时将查询转换为向量,计算余弦相似度

文档级配置覆盖

每本文档可以单独配置 Embedding 参数:

  • embedding_base_url:自定义 API 地址
  • embedding_api_key:自定义 API Key
  • embedding_model:自定义模型

未配置时自动回退到全局配置。

事件队列(可选)

对于高负载场景,可启用 Redis 事件队列进行异步处理:

event_queue:
  enabled: true
  consumer_group: "mdoc-workers"
  workers: 3
  max_retries: 3
  retry_delay: 30s
  claim_interval: 5m

启用后,向量化等耗时操作将通过 Redis 队列异步处理,不阻塞主请求。