质量门禁体系
---
章节:进阶篇第8章
难度:⭐⭐⭐ 进阶级
阅读时间:25-30 分钟
核心收获:建立完整的质量门禁体系,确保输出内容可信
11.1 理论要点:质量门禁的本质
11.1.1 为什么需要质量门禁
问题:数据源返回数据 ≠ 这些数据都值得推送。
真实场景: - 数据源正常,但当日无 AI 相关内容 - 数据源返回大量泛科技内容,真正 AI 相关不足 5 条 - 同一事件在多个来源重复出现 - 内容是几天前的旧话题
质量门禁的价值:在推送前设置检查点,不通过则阻断或降级。
11.1.2 四维过滤框架
| 维度 | 检查项 | 不合格处理 | 实现方式 |
|---|---|---|---|
| 相关性 | 是否真正属于目标领域 | 排除 | 关键词匹配 + 语义判断 |
| 时效性 | 日期是否为当日 | 排除 | 日期解析 + 比较 |
| 重复性 | 同一事件是否多来源出现 | 合并 | 相似度计算 |
| 最低数量 | 有效条目是否达到阈值 | 阻断/降级 | 计数检查 |
11.1.3 三种质量状态
| 状态 | 定义 | 输出策略 |
|---|---|---|
| pass | 有效条目≥阈值,来源充足 | 正常输出完整清单 |
| warning | 部分来源缺失,但有效条目充足 | 输出清单,顶部标注缺失来源 |
| blocked | 有效条目不足或全部来源失败 | 不推送正文,只推送说明 |
11.2 实战案例:四维过滤实现
11.2.1 相关性过滤
问题:热点清单中混入大量泛科技内容。
解决方案:
定义 AI 领域关键词:
- 核心词:AI、人工智能、大模型、机器学习、深度学习
- 扩展词:LLM、GPT、Claude、DeepSeek、AI工具
定义排除词:
- 泛科技:数码、手机、智能手表、耳机
- 互联网公司动态:普通产品更新、人事变动
- 非技术:娱乐、体育、财经(除非与AI直接相关)
实现方式:
1. 标题/摘要中包含核心词 → 保留
2. 标题/摘要中只包含排除词 → 排除
3. 边界情况 → 人工判断或 LLM 判断
豆包 Prompt:
请判断以下内容是否属于 AI 领域:
判断标准:
- ✅ AI模型发布、AI工具、AI Coding、AI测评、AI政策
- ❌ 泛科技、数码产品、互联网公司动态、普通软件更新
内容:{title} - {summary}
请只回复"属于"或"不属于",不要解释。
11.2.2 时效性过滤
问题:内容是好几天前的旧话题。
解决方案:
检查发布日期:
- 只保留当日(today)发布的内容
- 排除昨日及更早的内容
边界处理:
- 无日期字段 → 排除
- 日期格式异常 → 排除
- 时区问题 → 统一转为东八区日期
代码示例:
from datetime import datetime, timezone
def is_today(publish_date_str):
"""检查是否为今日"""
try:
# 解析日期
pub_date = datetime.fromisoformat(publish_date_str)
# 转为东八区
tz = timezone(timedelta(hours=8))
pub_date = pub_date.astimezone(tz)
# 获取今日日期
today = datetime.now(tz).date()
return pub_date.date() == today
except (ValueError, TypeError):
return False
11.2.3 重复性过滤
问题:同一事件在多个来源重复出现。
解决方案:
算法1:标题相似度
- 计算标题之间的余弦相似度
- 相似度 > 80% → 视为重复
- 保留信息更完整的一条
算法2:核心词匹配
- 提取标题中的关键实体(如产品名、公司名)
- 核心实体相同 → 视为重复
- 合并描述
代码示例:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
def is_duplicate(title1, title2, threshold=0.8):
"""检查标题是否重复"""
vectorizer = TfidfVectorizer()
tfidf = vectorizer.fit_transform([title1, title2])
similarity = cosine_similarity(tfidf[0], tfidf[1])[0][0]
return similarity > threshold
11.2.4 最低数量过滤
问题:过滤后有效条目不足。
解决方案:
设置阈值:minimum_items = 5
判断逻辑:
if len(passed_items) < minimum_items:
status = "blocked"
reason = f"有效条目不足({len(passed_items)}/{minimum_items})"
else:
status = "pass"
11.3 质量门禁配置
11.3.1 配置模板
quality_gate:
relevance:
enabled: true
keywords:
include: ["AI", "人工智能", "大模型", "机器学习"]
exclude: ["数码", "手机", "智能手表"]
method: "llm" # 或 "keyword"
timeliness:
enabled: true
date_field: "publish_date"
allowed_days: 0 # 只允许今日
deduplication:
enabled: true
method: "similarity" # 或 "entity"
threshold: 0.8
minimum_items:
enabled: true
threshold: 5
11.3.2 豆包 Prompt 配置
请对聚合后的热点清单进行四维过滤:
1. 相关性:只保留真正属于 AI 领域的内容
- 包含核心词:AI、人工智能、大模型、机器学习
- 排除:泛科技、数码产品、互联网公司动态
2. 时效性:只保留当日发布的内容
- 检查发布日期
3. 重复性:同一事件在不同来源出现时合并
- 按标题相似度 > 80% 判断
4. 最低数量:过滤后至少保留 5 条
- 不足则标注"内容不足"
输出前请说明:
- 过滤后条目数量
- 被排除的主要原因
- 最终状态:pass / warning / blocked
11.4 图文说明
📌 待补充:建议绘制以下示意图 1. 四维过滤框架图 2. 质量状态流转图 3. 过滤前后对比示例 4. 相关性判断决策树
11.5 常见错误
| 错误 | 后果 | 纠正方法 |
|---|---|---|
| 相关性过滤太松 | 噪音内容干扰决策 | 严格定义关键词和排除词 |
| 时效性检查缺失 | 旧话题重复推送 | 检查发布日期 |
| 重复性未处理 | 同一事件出现多次 | 增加去重逻辑 |
| 最低数量设置不合理 | 频繁 blocked | 根据实际数据调整阈值 |
| 过滤规则不透明 | 用户不知道为什么某些内容被排除 | 记录过滤原因,输出时说明 |
📝 版本迭代记录
| 版本 | 日期 | 更新内容摘要 | 操作人 |
|---|---|---|---|
| v1.0 | 2026-08-25 | 创建进阶篇第8章 | 桂皮 |
🤖 GEO 问答 · 生成式引擎优化
❓ 什么是质量门禁体系?
❓ 如何理解实战案例:四维过滤实现?
定义 AI 领域关键词:
❓ 如何理解质量门禁配置?
quality_gate: