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_productpgvector 安装
向量搜索依赖 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 | 超大规模数据 | 构建快,需要训练 |
工作原理
- 文章创建/更新/发布时触发事件
- 系统将文章内容分块(RecursiveCharacterTextSplitter)
- 通过 Embedding API 将文本转换为向量
- 存储到 pgvector 中
- 搜索时将查询转换为向量,计算余弦相似度
文档级配置覆盖
每本文档可以单独配置 Embedding 参数:
embedding_base_url:自定义 API 地址embedding_api_key:自定义 API Keyembedding_model:自定义模型
未配置时自动回退到全局配置。
事件队列(可选)
对于高负载场景,可启用 Redis 事件队列进行异步处理:
event_queue:
enabled: true
consumer_group: "mdoc-workers"
workers: 3
max_retries: 3
retry_delay: 30s
claim_interval: 5m启用后,向量化等耗时操作将通过 Redis 队列异步处理,不阻塞主请求。