SAP 垂直在线搜索框架¶
2026-07-22 | 来源:Kabin Su 与 AI 联合设计
整体定位¶
面向 SAP 开发/实施/Basis 人员的领域专用混合检索框架,融合「内网私有知识库 + 外网多站点并行检索」,内置 SAP 领域分词、来源权重打分、场景化检索路由,适配 Hermes 服务架构。
架构分层(自上而下)¶
前端交互层
↓
API 接入网关(Hermes Search Service)
↓
1. 查询预处理模块(分词、识别、路由、扩词)
↓
2. 多路并行召回模块(内网库 + 外网搜索引擎通道)
↓
3. 结果统一聚合、去重、打分重排模块
↓
4. 过滤、标签、摘要渲染模块
↓
前端结构化结果返回
↑↓
全局缓存层(Redis)+ 持久化存储(MySQL/ES)
各层详细设计¶
1. API 接入网关层¶
统一入参:
{
"query": "CDS视图关联两张表 S/4HANA",
"version": "S4HANA2024",
"module": "ABAP",
"scene": "default/note/table/local",
"page": 1,
"size": 20,
"onlyInternal": false
}
能力:权限校验、限流、全链路日志。
2. 查询预处理核心模块¶
SAP 领域实体识别(模式匹配,无需维护词典)¶
实体识别已从词典维护切换为正则模式自动匹配,不再需要人工添加新词:
| 实体类型 | 匹配方式 | 示例 |
|---|---|---|
| 版本 | 正则:S4HANA\d* / ECC\d* / BTP |
S/4HANA2026 自动识别 |
| 模块 | 白名单(稳定,不变) | MM/SD/FICO/ABAP/Basis |
| 事务码 | 正则 [a-z]{2}\d{2} + 前缀白名单 + 全字母特例 |
ME23N、VA01、MIGO、FBL1N |
| 技术对象 | 正则:CDS/AMDP/RFC/BAPI/BAdI 等 | CDS、BAPI、User-Exit |
| 表名 | 常见表名字典(MARA/EKKO/VBAK 等) | MARA、EKKO |
| 报错 | 正则:ST22 / CX_* 异常类 |
ST22、CX_STATIC_CHECK |
新版本 SAP、新事务码、新概念——符合命名模式的自动识别,无需手动添加。仅模块和表名用白名单(稳定且数量有限)。
语种判定¶
- 含 CDS/OData/CAP/SE 事务码/英文报错 → en_priority
- 含金税、开票、本土化、凭证 → cn_only
场景路由¶
| 识别条件 | 优先召回站点 |
|---|---|
| scene=note / 消息号/Dump | support.sap.com |
| scene=table / 表名 Tcode | saptables.org + help.sap.com |
| scene=local / 本土化关键词 | itpub、91sap、CSDN |
| 识别 CAP/BTP/Fiori | developers.sap.com |
| 默认通用 | L1 官方全量 + 社区补充 |
site 检索语句自动拼接¶
主查询1(官方):{query} site:help.sap.com OR site:support.sap.com OR site:developers.sap.com
主查询2(社区):{query} site:community.sap.com
中文通道:{query} site:itpub.net OR site:91sap.com OR site:csdn.net
同义词扩写¶
S4 = S/4HANA、ABAP Cloud = 云ABAP、CDS view = CDS 视图
3. 多路并行召回层¶
双来源并发,互不阻塞,外网超时熔断:
| 通道 | 目标 | 超时 | 权重 |
|---|---|---|---|
| A:内网 ES | 公司内部实施文档/需求/方案 | — | 120 |
| B1:L1 官方 | help/support/developers | 1.5s | 100-95 |
| B2:社区速查 | community.sap.com + saptables.org | 2s | 80-65 |
| B3:中文论坛 | itpub/91sap/CSDN/博客园 | 3s | 55-40 |
4. 聚合去重 & 重排打分¶
去重规则¶
- 相同 URL 去重,保留权重高的
- 摘要重合度 >80% 判定搬运,删除低权重来源
- 内网文档全部保留
综合打分公式¶
total_score = source_base_weight + entity_match_score + version_match_bonus - age_penalty - low_quality_penalty
内网文档搜索采用双通道并查:
| 通道 | 方式 | 得分 |
|---|---|---|
| rg 关键词 | 实体匹配命中 + 文件实体计数分级 | 95~125 |
| 向量语义 | 智谱 embedding-3 2048维,余弦相似度转分 | 80~135 |
两路去重合并,统一打分排序。文档入库时自动算好向量,新增文档索引缺失时实时计算。互不替代——关键词保证精确,向量补足语义。
权重表¶
| 数据源 | 基础分 | 标签 |
|---|---|---|
| 内网私有文档 | 120 | ✅ 内部文档·最高可信 |
| help.sap.com | 100 | ✅ SAP 官方标准文档 |
| support.sap.com Notes | 98 | ✅ SAP 官方 Note/故障修复 |
| developers.sap.com | 95 | ✅ SAP 开发官方 |
| community.sap.com | 80 | ⚠️ SAP 官方社区 |
| saptables.org | 65 | ⚠️ 表/事务码速查 |
| itpub/91sap | 55 | ⚠️ 国内实施论坛 |
| CSDN/博客园 | 40 | ⚠️ 个人技术博客 |
| 文库类低质 | 10 | ❌ 兜底低参考 |
加分/扣分¶
- 标题命中表名/事务码/CDS:+20
- 正文含报错消息号:+10
- 版本与用户输入一致:+15
- 查 S4 但文档仅 ECC:-30
- 文档 >10年:-25
- 文库/付费/广告:-40
分层排序¶
- 置顶区:内网文档 + L1 官方(≥90)
- 推荐区:社区、专业速查(50-89)
- 折叠兜底区:低分博客、文库(<50),默认收起
5. 结果渲染与过滤¶
统一输出字段:
{
"title": "",
"url": "",
"summary": "关键词高亮摘要",
"source_type": "internal/official/note/community/cn_forum",
"score": 96,
"tags": ["S/4HANA","CDS","权威推荐"],
"publish_year": 2022,
"trust_tips": "可用于生产配置参考"
}
可信度提示:≥90 ✅ / 50-89 ⚠️ / <50 ❗
前端快捷筛选:来源 / 版本 / 模块。
6. 缓存 & 持久化¶
- Redis:key
{query}_{version}_{scene},内网 24h / SAP 官方 7d / 国内博客 3d - MySQL:搜索日志、高频 query、点击埋点 → 迭代权重
落地实现¶
对应的 Hermes 落地脚本:/opt/data/scripts/sap_search.py(v1,Python)
已实现:
- ✅ SAP 实体识别(正则模式匹配,无需维护词典)
- ✅ 多通道 Firecrawl 并行搜索(官方/社区/速查/中文论坛)
- ✅ 内网 _wiki 知识库检索(含真实标题提取 + 实体命中分级评分)
- ✅ 向量语义搜索(双通道:rg 关键词 + 向量语义,合并去重统一打分)
- ✅ 来源权重打分 + 实体加分 + 时效扣分
- ✅ 内网文档分级评分(标题命中 > 120 / 多实体命中 > 115 / 通用词降级 95)
- ✅ 三层结果展示(置顶/推荐/折叠)
- ✅ Redis 缓存层(容器 redis:7-alpine,128MB LRU,TTL 3~7天)
- ✅ Hermes skill search/sap-search
- ✅ 场景路由中文支持(报错/错误/故障→note 通道,表/字段→table 通道)
- ✅ 中文混排兼容(事务码和技术对象在中文前后无需空格也能识别)
未实现(规划): - ⏳ 外网搜索超时熔断差异化(目前统一 8s) - ⏳ 版本匹配加分(查 S4 命中 ECC 文档 -30 分) - ⏳ 同义词扩写(S4↔S/4HANA 等) - ⏳ 点击埋点 + 权重自动迭代 - ⏳ 前端展示 UI(Hermes Web Dashboard) - ⏳ 向量检索增强
关联¶
- [[sap-search]] — Hermes skill
scripts/sap_search.py— 搜索脚本- 02-Reference/Hermes产出/Agent-Reach+Firecrawl搭配指南 — 工具链说明