AI 搜索
MacCMS LA 内置 AI 智能搜索,访客和管理员都可以使用自然语言同时检索本地 CMS 数据库和已配置的外部资源站。结果按语义排序,而不是简单的关键词匹配,对视频、影视、文章等大型站点尤其有用。
功能特性
- ✓CMS 数据库搜索 —— 对本地视频、文章、专题、播放器等数据进行语义搜索。
- ✓外部资源搜索 —— 在一个入口同时查询已对接的资源库 / 采集站。
工作原理
在
- 1查询扩展
LLM 会把原始查询扩展为最多 N 条更利于检索的变体(
扩展词数量 ,默认 4),包括同义词、年份、类型标签等。 - 2混合关键词召回
所有变体会并行查询
启用模块 (视频 / 文章 / 漫画 / 专题 / 演员 / 角色 / 剧情 / 网址),结合 FULLTEXT 与标签匹配。 - 3语义重排序(Embedding)
可选。候选结果使用 Embedding 与原始问题计算余弦相似度后重排,再合并为统一排序的清单。
前置条件
第 1 步 — 配置 AI 服务商
打开
服务商
服务商
服务商
第 2 步 — 启用 AI 搜索并选择模块
打开
- ✓
视频 (vod) 、文章 (art) 、漫画 (manga) 、专题 (topic) —— 主要内容模块。 - ✓
演员 (actor) 、角色 (role) 、剧情 (plot) —— 影视类扩展元数据,影视站点很有用。 - ✓
网址 (website) —— 网址导航模块,仅在你启用了它时再开启。
第 3 步 — 调优检索
这些选项控制 LLM 产生多少查询变体,以及对上游服务的等待时长:
- ⚙
扩展词数量 (默认4 ,范围 1–12)—— LLM 为每次查询生成的变体数量。数值越大命中越多,但 Token 成本也更高。 - ⚙
最小查询长度 (默认2 )—— 短于此长度的查询会跳过 AI 流水线,回退到普通 MySQL 搜索。 - ⚙
超时(秒) (默认12 )—— 单次上游请求的预算;网络较慢时调低,可让搜索体感更顺畅。
第 4 步 — 配置外部资源
同一个页面包含两类互补的外部能力:
- a在
外部资源链接 区域,打开启用外部资源链接 。设置外部链接数量 (1–10,默认3 )—— 单次回答最多附带几条建议链接。 - b在
外部站点白名单 填入英文逗号分隔的域名列表,例如wikipedia.org,imdb.com,douban.com 。只有白名单内的站点会被展示。 - c向下滚动到
外部数据源平台 并打开。决定是否启用在线实时检索 、检索缓存 ,或两者都开 —— 推荐 live + cache 组合。 - d设置
缓存有效期(秒) (默认600 )、合并结果上限 (单次回答允许加入多少外部条目)以及离线同步间隔(秒) 用于定时喂数。 - e按需启用各服务商:
TMDB (需 API Key,影视类推荐)、豆瓣 、IMDb 、AniList (漫画,无需 Key)、Google Books (需 Books API Key)。
下面是保存表单后 MacCMS 实际写入的
{
"ai_search": {
"enabled": "1",
"provider": "openai",
"model": "gpt-4o-mini",
"response_language": "auto",
"api_base": "https://api.openai.com/v1",
"api_key": "sk-***",
"timeout": "12",
"max_terms": "4",
"min_query_len": "2",
"module": {
"vod": "1", "art": "1", "manga": "0", "topic": "1",
"actor": "0", "role": "0", "plot": "0", "website": "0"
},
"external_enabled": "1",
"external_max_links": "3",
"external_domains": "wikipedia.org,imdb.com,douban.com",
"semantic_enabled": "1",
"embedding_model": "text-embedding-3-small",
"semantic_weight": "0.45",
"semantic_candidates": "40",
"rate_limit_enabled": "1",
"rate_limit_window": "60",
"rate_limit_max": "20",
"max_question_chars": "800",
"debug_log": "0"
}
}配置参数说明
| 选项 | 默认值 | 说明 |
|---|---|---|
| ai_search.enabled | 1 | AI 搜索功能的总开关。 |
| ai_search.provider | openai | 服务商,一般填 |
| ai_search.model | gpt-4o-mini | 用于扩展查询的对话补全模型。 |
| ai_search.api_base | https://api.openai.com/v1 | 兼容 OpenAI 协议的接口地址。 |
| ai_search.timeout | 12 | 单次请求上游服务的超时时间(秒)。 |
| ai_search.max_terms | 4 | 每个查询由 LLM 生成的变体数量(范围 1–12)。 |
| ai_search.min_query_len | 2 | 短于此长度的查询会回退到普通 MySQL 搜索。 |
| ai_search.module | { vod: 1, art: 1, ... } | 按模块开关: |
| ai_search.external_enabled | 0 | 在结果旁展示白名单内的外部链接建议。 |
| ai_search.external_domains | 以英文逗号分隔的域名白名单,例如 | |
| ai_search.semantic_enabled | 0 | 用 Embedding 余弦相似度对关键词召回结果做重排。 |
| ai_search.semantic_weight | 0.45 | 关键词分数与向量分数的融合比例(0…1)。 |
使用方式
访客在搜索框输入自然语言(例如:“一部 2024 年关于时间循环的科幻片”),系统会对查询进行改写,然后对本地数据库和外部资源进行混合检索,返回统一排序的结果。管理员也可以在后台列表页通过同样的方式快速定位条目。