Danbooru标签搜索引擎更新

Danbooru标签搜索引擎更新:支持 MCP 接入,让 AI 直接调用搜索能力

距离上次发文已经过去了一段时间,这期间工具做了不少改动,挑几个值得说的讲一下。


最大的更新:MCP 接口

这次更新里影响最大的,是加了 MCP(Model Context Protocol)接口

简单说,MCP 是一个让大模型客户端「调用外部工具」的协议。接入之后,Claude Desktop、Cursor、Cherry Studio 这类支持 MCP 的客户端,可以在对话过程中直接调用 Danbooru 标签搜索引擎,不需要你手动打开网页复制粘贴,AI 会在需要的时候自己去查。

接入方式很简单,在客户端的 MCP 配置里加一条:

1
2
3
4
5
6
7
{
"mcpServers": {
"danbooru-searcher": {
"url": "https://sakizuki-danboorusearch.hf.space/mcp/mcp"
}
}
}

目前提供两个工具:

  • search_tags:自然语言搜索标签,接受中英文描述,返回匹配标签列表和可直接用于 AI 绘画的 prompt 字符串
  • get_related_tags:给定已选标签列表,基于共现数据推荐搭配标签

工具的参数设计上做了比较仔细的场景化区分,比如 use_segmentation 控制是否拆词(完整画面描述开,精确查词关),top_k 针对不同场景给了推荐值,文档里都有说明。


为什么 MCP 比直接把标签集合塞给 AI 更好用?

这个问题我做了一个量化测试。

实验设计:底模统一使用 DeepSeek-V3-0324(无思考模式)。方案 A 是接入本项目的 MCP 接口,让模型按需调用检索工具;方案 B 是利用该模型的 1M 上下文窗口,直接将完整的 tags_enhanced.csv 标签数据库塞入 prompt,让模型在静态上下文中直接回答。两组输入的 Prompt 完全相同,只有信息获取方式不同。评测模型选用 Gemini 2.5 Pro,对两组输出隐去来源后进行盲评打分,满分 100 分。

测试共 17 组,覆盖完整画面描述(含人设还原)、关联推荐、概念扩展、角色识别、角色特征搜索等五类场景。

得分汇总如下:

# 任务类型 A(MCP) B(静态注入) 差值
1 原创人设还原 95 72 +23
2 完整画面描述 94 74 +20
3 关联推荐 100 96 +4
4 概念扩展(武装JK) 90 40 +50
5 角色识别(星穹铁道) 95 20 +75
6 完整画面描述(夜景) 90 40 +50
7 哥特洛丽塔场景 95 85 +10
8 深夜便利店场景 92 65 +27
9 图书馆阅读场景 92 72 +20
10 角色描述搜索(SAO) 85 40 +45
11 角色识别(原神) 95 45 +50
12 角色识别(石之门) 90 85 +5
13 角色特征(初音未来) 100 40 +60
14 概念扩展(透视感) 95 75 +20
15 意境扩展(异国街道) 95 90 +5
16 关联推荐(blood+sword) 98 80 +18
17 关联推荐(cake+maid) 98 82 +16
均值 93.5 64.8 +28.7

17 组测试 A 全部高于 B。A 均值 94.1(标准差 3.9),B 均值 64.8(标准差 22.5),平均差值 29.3 分(95% CI:[18.3, 40.3])。

以下是各统计指标的计算方式与结果。设 \(n = 17\)\(d_i = A_i - B_i\) 为第 \(i\) 组的得分差值,\(\bar{d}\)\(s_d\) 分别为差值的均值与标准差。

配对 t 检验检验「两组得分均值是否存在显著差异」的假设,适用于同一批任务上的两种方案对比。统计量为:

\[t = \frac{\bar{d}}{s_d / \sqrt{n}}\]

代入数据:\(\bar{d} = 29.3\)\(s_d = 21.5\),得 \(t(16) = 5.63\)\(p = 3.8 \times 10^{-5}\)

Wilcoxon 符号秩检验是配对 t 检验的非参数替代,不假设差值服从正态分布,对小样本更稳健。它对所有差值 \(d_i\) 按绝对值排秩,统计量 \(W\) 为正差值对应秩次之和:

\[W = \sum_{i: d_i > 0} R_i\]

其中 \(R_i\)\(|d_i|\) 的秩次。本次 \(W = 153\)(即全部 17 个正差值的秩次之和,等于 \(1+2+\cdots+17 = 153\),意味着没有任何一组 B 优于 A),\(p = 1.4 \times 10^{-4}\)

符号检验是最简单的非参数检验,仅统计 A 优于 B 的组数,原假设为「A 优于 B 的概率等于 0.5」。若 17 组全部 A 优于 B,在原假设下出现此结果的概率为:

\[p = \left(\frac{1}{2}\right)^{17} \approx 7.6 \times 10^{-6}\]

效应量 Cohen's d衡量两组差异的实际大小,与样本量无关,消除了「样本足够大时任何微小差异都显著」的问题。配对场景下的公式为:

\[d = \frac{\bar{d}}{s_d} = \frac{29.3}{21.5} = 1.37\]

按惯例,\(d > 0.8\) 即为大效应。1.37 表明两种方案的差距在实践中是可以明显感知的,不只是统计上显著。

95% 置信区间给出了均值差的估计范围,基于 \(t\) 分布构造:

\[\bar{d} \pm t_{0.975,\, n-1} \cdot \frac{s_d}{\sqrt{n}} = 29.3 \pm 2.12 \times 5.21 = [18.3,\ 40.3]\]

即在 95% 的置信水平下,MCP 方案相对于静态注入方案的得分优势在 18.3 到 40.3 分之间。

B 的标准差(22.5)远高于 A(3.9),说明静态注入方案的表现高度依赖任务类型,在部分场景下尚可(关联推荐类最高 96 分),在另一些场景下几乎完全失效(角色识别类最低 20 分);MCP 方案在所有任务类型上均保持稳定。

失败模式上,B 的问题在不同任务类型里有明显规律:

角色识别类(第 5、10、11 组) 是差距最大的场景,B 得分分别为 20、40、45。B 在第 5 组(缇宝识别)直接把有三个分身的黄金裔角色答成了「阿格莱雅」,导致整组输出失效;在第 10 组(刀剑神域系统管理员)把正确答案「神代凛子」认成了「桐谷直叶」;在第 11 组(原神厨师香菱)虽然答对角色,但只能提供 cooking 这一个相关特征标签,而 A 命中了 guoba_(genshin_impact)holding_cooking_potchili_pepper 等十余个精确标签。

概念扩展与领域专有标签(第 4 组) 差距达 50 分。B 只能做到 weapon + school_uniform 的字面组合,无法命中 tactical_school_uniform 这个专门描述「战术校服」的领域标签,而这正是语义检索 + 共现索引的核心优势所在。

角色识别(第 5 组) 差距最大,达 75 分。题目是「星穹铁道里有三个分身的可玩黄金裔角色」,B 直接把答案给成了「阿格莱雅」,角色认错导致后续所有特征标签全部失效,得分 20。A 通过检索工具定位到正确角色「缇宝」,命中了 tribbie_(honkai:_star_rail)tripletschrysos_heirs_(honkai:_star_rail)cross-shaped_pupilslaurel_crown 等核心标签,还区分出了三个分身各自的独立标签(trianne_trinnon_tribios_)。

完整画面描述类(第 1、2 组) 的差距相对小一些(20~23 分),主要问题是 B 凭空添加未指定的属性(如 blue_eyeslong_sleeves),以及属性降级(high_ponytail 被简化为 ponytail)。

关联推荐类(第 3、16、17 组)两者差距较小,这符合预期——关联推荐本质上是标签推荐而非精确匹配,B 依靠模型自身的语言知识仍能给出合理结果,只是覆盖度和精确度略低。

核心差距不来自模型参数能力,而来自 信息获取方式:实时检索可以访问标签共现结构和角色映射关系,静态数据集注入受限于词表边界,越是依赖图谱关联理解的任务,差距越大。特别是角色识别类任务,B 在这类高度依赖专有知识库的任务上几乎没有胜算。


其他主要更新

推荐打分算法升级

共现推荐的打分从原来的 TF-IDF 惩罚归一化换成了 NPMI(归一化点互信息)。旧方案只惩罚目标标签的热度,不考虑种子标签本身的频率,会导致高频种子标签(如 1girl)推荐出大量只是因为高频而共现的无关标签。NPMI 同时归一化两端,有效过滤掉这类热度驱动的伪相关结果。

意图检测与层权重动态分配

搜索时会先检测输入的语言特征:是中文还是英文、是长句还是短词。根据检测结果,四个检索视图(英文标签、中文扩展词、维基释义、中文核心词)各自分配不同的 top_k 配额。比如输入是长中文句子,释义视图权重会更高;输入是英文短词,英文视图优先。这个逻辑原来是等权处理的,现在按意图动态分配。

REST API 完善

/api/search/api/related 两个端点已经是正式可用的状态,有完整的 Swagger 文档(访问 /api/docs 可查看)。


当前运行数据

工具上线至今运行约 4 个月,累计搜索量 17,000+,累计访问量 33,000+,HuggingFace Space 收到 24 个 Like,GitHub 23 个 Star


工具地址:https://huggingface.co/spaces/SAkizuki/DanbooruSearch

ComfyUI 插件版:https://github.com/SuzumiyaAkizuki/ComfyUI-DanbooruSearcher

MCP 接入文档:https://github.com/SuzumiyaAkizuki/DanbooruSearchOnline#mcp-接口

如果觉得有用,欢迎点个 Like 或 Star,也可以把链接分享给需要的人。有问题或反馈可以直接在评论区说。


Danbooru标签搜索引擎更新
https://suzumiyaakizuki.github.io/2026/04/28/标签搜索引擎更新/
作者
SuzumiyaAkizuki
发布于
2026年4月28日
许可协议