Blame view

README.md 7.17 KB
7299bae6   tangwang   tests
1
  # 电商搜索引擎 SaaS
9c712e64   tangwang   增加索引字段qanchors ke...
2
  
7299bae6   tangwang   tests
3
  多租户、可配置、可扩展的电商搜索平台(Shoplazza 等独立站场景)。
9c712e64   tangwang   增加索引字段qanchors ke...
4
  
7299bae6   tangwang   tests
5
  README 用于给后续开发者建立统一认知:**系统框架、模块边界、设计原则、研发流程与 CI 测试入口**,帮助持续迭代时避免分叉设计与冗余代码。
768ad710   tangwang   MySQL到ES字段映射说明-业务...
6
  
7299bae6   tangwang   tests
7
  ---
be52af70   tangwang   first commit
8
  
7299bae6   tangwang   tests
9
  ## 1) 项目目标与边界
be52af70   tangwang   first commit
10
  
41345271   tangwang   文档更新
11
  - **目标**:在统一架构下支持关键词检索、语义检索、分面过滤、多语言、分层排序(粗排 / 可选精排 fine rank / 重排)、图片检索。
7299bae6   tangwang   tests
12
13
14
15
16
  - **边界**:本仓库负责搜索核心能力与服务编排;业务方通过标准 HTTP API 对接。
  - **核心约束**
    - 调用方稳定(API/Provider 契约优先)
    - 配置单一来源(`config/config.yaml` + `.env` 覆盖)
    - 扩展优先走插件化(provider/backend),避免散落式分叉实现
a10a89a3   tangwang   构造测试数据用于测试分类 和 三种...
17
  
7299bae6   tangwang   tests
18
  ---
a7920e17   tangwang   项目名称和部署路径修改
19
  
7299bae6   tangwang   tests
20
  ## 2) 快速开始
a7920e17   tangwang   项目名称和部署路径修改
21
22
  
  ```bash
7299bae6   tangwang   tests
23
  # 首次创建环境(默认基础依赖)
484adbfe   tangwang   adapt ubuntu; con...
24
  ./scripts/create_venv.sh
c7e80cc2   tangwang   新的 .env 管理机制如下:
25
  ./scripts/init_env.sh   # 从 .env.example 生成本地 .env(若不存在)
a7920e17   tangwang   项目名称和部署路径修改
26
  source activate.sh
a7920e17   tangwang   项目名称和部署路径修改
27
  
7913e2fb   tangwang   服务管理和监控
28
29
  # 推荐:一键拉起全部服务(含监控守护)
  ./run.sh all    # 薄封装:等价于 ./scripts/service_ctl.sh up all
acf1349c   tangwang   fake 批量导入数据的脚步 ( ...
30
  
c6da6bca   tangwang   add status.sh
31
32
  # 查看状态 + 健康检查(含 monitor daemon 状态)
  ./status.sh          # 薄封装:等价于 ./scripts/service_ctl.sh status
7913e2fb   tangwang   服务管理和监控
33
34
35
36
37
38
  
  # 重启指定服务集合(示例:全部)
  ./restart.sh all    # 薄封装:等价于 ./scripts/service_ctl.sh restart all
  
  # 一键停止(含 monitor daemon)
  ./scripts/stop.sh all    # 薄封装:等价于 ./scripts/service_ctl.sh down all
7299bae6   tangwang   tests
39
  ```
a10a89a3   tangwang   构造测试数据用于测试分类 和 三种...
40
  
af7ee060   tangwang   service_ctl 简化为“显...
41
42
43
  服务管理全盘说明(入口职责、默认行为、全量启停方式)见:
  - `docs/Usage-Guide.md` -> `服务管理总览`
  
7299bae6   tangwang   tests
44
  核心端口:
e50924ed   tangwang   1. tags -> enrich...
45
  - `6001` qp
7299bae6   tangwang   tests
46
  - `6002` backend(`/search/*`, `/admin/*`
7299bae6   tangwang   tests
47
  - `6003` frontend
e50924ed   tangwang   1. tags -> enrich...
48
  - `6004` indexer(`/indexer/*`
41345271   tangwang   文档更新
49
  - `6005` embedding-text(可选,`POST /embed/text`;常见后端为 TEI,默认 `8080`
7299bae6   tangwang   tests
50
  - `6006` translator(可选)
41345271   tangwang   文档更新
51
  - `6007` reranker(可选,`POST /rerank`;精排可与主重排分 `service_profile`,见 `config.yaml` → `fine_rank` / `services.rerank`
e50924ed   tangwang   1. tags -> enrich...
52
53
  - `6008` embedding-image(可选,`POST /embed/image` 等)
  - `6010` eval-web(搜索评估 UI,`./scripts/service_ctl.sh` 服务名 `eval-web`
148ab60d   tangwang   docs
54
  
7299bae6   tangwang   tests
55
  更完整示例见 `docs/QUICKSTART.md`
f3c11fef   tangwang   亚马逊格式数据 导入店匠
56
  
7299bae6   tangwang   tests
57
  ---
a10a89a3   tangwang   构造测试数据用于测试分类 和 三种...
58
  
7299bae6   tangwang   tests
59
  ## 3) 总体架构(开发者视角)
a10a89a3   tangwang   构造测试数据用于测试分类 和 三种...
60
  
7299bae6   tangwang   tests
61
  - `api/`:统一 API 入口(search/admin/indexer app)
41345271   tangwang   文档更新
62
  - `search/`:召回、分层排序与结果组织(ES 召回 → `coarse_rank` 融合文本/KNN → 可选 `fine_rank` 轻量精排 → `rerank` 融合模型分与 ES 信号;`debug=true` 时返回各阶段 rank / fusion 调试字段)
7299bae6   tangwang   tests
63
64
  - `query/`:查询解析、多语言处理、改写
  - `indexer/`:MySQL 行数据 -> ES 文档的转换与索引流程
0fd2f875   tangwang   translate
65
66
  - `providers/`:能力调用抽象(embedding/rerank)
  - `translation/`:翻译服务客户端、服务编排与后端实现
7299bae6   tangwang   tests
67
68
69
  - `reranker/`:重排服务及后端实现
  - `embeddings/`:向量服务(文本/图像)
  - `config/`:配置加载与服务配置解析
a10a89a3   tangwang   构造测试数据用于测试分类 和 三种...
70
  
0fd2f875   tangwang   translate
71
72
73
74
  关键设计:
  
  - embedding / rerank 继续采用 **Provider(调用方式)与 Backend(推理实现)分离**
  - translation 采用 **一个 translator service + 多个 capability backend**,业务侧统一调用 6006,不再做翻译 provider 选择
a10a89a3   tangwang   构造测试数据用于测试分类 和 三种...
75
  
7299bae6   tangwang   tests
76
  ---
be52af70   tangwang   first commit
77
  
7299bae6   tangwang   tests
78
  ## 4) 设计原则(避免后续分叉)
be52af70   tangwang   first commit
79
  
7299bae6   tangwang   tests
80
81
82
  - **单一配置源**:服务地址、provider 选择、后端参数统一在 `config/config.yaml`,环境变量仅做覆盖。
  - **接口契约优先**:外部 API 契约与 provider 契约稳定,内部重构不影响调用方。
  - **扩展走工厂**:新增 provider/backend 必须在工厂函数中显式注册,禁止旁路分支。
c7e80cc2   tangwang   新的 .env 管理机制如下:
83
  - **简洁和规范优先**:对待异常情况,分情况而定,如果是系统启动期间、加载资源/配置等出错,可以尽早暴露问题,不要fallback走一套跟配置不符合的另外一套机制,即尽量保证逻辑清晰、简洁;但是线上的服务如果遇到异常情况可以根据最佳实践选取应对方法,比如记录错误日志并且保证服务正常运行。规范优先,尽量用一套机制满足需求,而不是兼容各种不合理的情况,对于不合理的内容优先清理、重构,而不是兼容,以保证代码是简洁的。
7299bae6   tangwang   tests
84
85
  - **可观测性优先**:健康检查、关键日志、请求上下文必须可追踪。
  - **测试优先保障契约**:CI 首先保证接口契约和核心路径可用,再逐步扩展性能与业务测试。
be52af70   tangwang   first commit
86
  
7299bae6   tangwang   tests
87
  ---
701ae503   tangwang   docs
88
  
7299bae6   tangwang   tests
89
  ## 5) 文档入口(建议阅读顺序)
a5a3856d   tangwang   店匠体系数据的搜索:mock da...
90
  
42e3aea6   tangwang   tidy
91
92
  | 步骤 | 文档 |
  |------|------|
7299bae6   tangwang   tests
93
94
95
  | 0. 全局规范(首读) | `docs/DEVELOPER_GUIDE.md` |
  | 1. 开发与配置 | `docs/QUICKSTART.md` |
  | 2. 运行与排障 | `docs/Usage-Guide.md` |
41345271   tangwang   文档更新
96
97
  | 3. 搜索 API(已拆分为多篇,从总览进入) | `docs/搜索API对接指南-00-总览与快速开始.md` |
  | 4. 快速参数速查 | `docs/搜索API对接指南-速查表.md` |
0fd2f875   tangwang   translate
98
99
100
101
  | 5. 翻译专项 | `docs/翻译模块说明.md` |
  | 6. 首次环境搭建、生产凭证 | `docs/QUICKSTART.md` §1.4–1.8 |
  | 7. TEI 文本向量专项 | `docs/TEI_SERVICE说明文档.md` |
  | 8. CN-CLIP 图片向量专项 | `docs/CNCLIP_SERVICE说明文档.md` |
41345271   tangwang   文档更新
102
103
104
105
106
107
108
109
110
111
112
  | 9. 相关性检索与融合(含 fine rank / rerank) | `docs/相关性检索优化说明.md` |
  | 10. 调参与评估工作流 | `docs/检索调参与LTR工作流.md` |
  | 11. 微服务性能与架构摘要 | `docs/工作总结-微服务性能优化与架构.md` |
  
  **搜索 API 拆分目录**(与总览中列表一致,按需查阅):
  
  | 分册 | 内容 |
  |------|------|
  | `搜索API对接指南-01-搜索接口.md` | `POST /search/` 请求与响应 |
  | `搜索API对接指南-02-搜索建议与即时搜索.md` | 建议 / 即时搜索 |
  | `搜索API对接指南-03-获取文档.md` | `GET /search/{doc_id}` |
a3275468   tangwang   已把本仓库里的 `/indexer...
113
  | `搜索API对接指南-05-索引接口(Indexer).md` | 索引与 `build-docs` 等(`enrich-content` 已迁出) |
41345271   tangwang   文档更新
114
115
116
117
  | `搜索API对接指南-06-管理接口(Admin).md` | `/admin/*` |
  | `搜索API对接指南-07-微服务接口(Embedding-Reranker-Translation).md` | 6005/6006/6007/6008 等直连说明 |
  | `搜索API对接指南-08-数据模型与字段速查.md` | 字段与数据模型 |
  | `搜索API对接指南-10-接口级压测脚本.md` | 压测脚本与用法 |
be52af70   tangwang   first commit
118
  
7299bae6   tangwang   tests
119
  ---
a5a3856d   tangwang   店匠体系数据的搜索:mock da...
120
  
7299bae6   tangwang   tests
121
  ## 6) 持续集成测试(推荐最小集)
be52af70   tangwang   first commit
122
  
7299bae6   tangwang   tests
123
  本仓库提供一套轻量、稳定、易维护的 CI 测试入口,覆盖以下服务契约:
a5a3856d   tangwang   店匠体系数据的搜索:mock da...
124
  
7299bae6   tangwang   tests
125
126
127
128
129
  - 搜索接口(search API)
  - 索引接口(indexer API)
  - 向量服务(embedding service)
  - 翻译服务(translator service)
  - 重排服务(reranker service)
be52af70   tangwang   first commit
130
  
7299bae6   tangwang   tests
131
  本地运行:
7bfb9946   tangwang   向量化模块
132
  
7299bae6   tangwang   tests
133
134
135
  ```bash
  source activate.sh
  python -m pytest tests/ci -q
a5a3856d   tangwang   店匠体系数据的搜索:mock da...
136
137
  ```
  
7299bae6   tangwang   tests
138
  该测试集采用 mock/stub,**不依赖真实 ES/MySQL/大模型服务**,适合作为 PR 级快速回归门禁。
42e3aea6   tangwang   tidy
139
  
7299bae6   tangwang   tests
140
  ---
be52af70   tangwang   first commit
141
  
41345271   tangwang   文档更新
142
  ## 7) 代码质量与持续集成要求
7299bae6   tangwang   tests
143
144
145
146
  
  - 新增功能必须补最小测试(至少覆盖 1 条成功路径 + 1 条参数异常路径)
  - 修改公共协议时必须同步更新:
    - `docs/QUICKSTART.md`
41345271   tangwang   文档更新
147
148
    - 对应分册:`docs/搜索API对接指南-*.md`(及速查表)
    - 对应服务 README / 专项文档
7299bae6   tangwang   tests
149
150
151
    - `tests/ci` 契约用例
  - 禁止新增“临时分支逻辑”绕过 provider/backend 工厂
  - 优先减少重复实现,复用现有转换链路与配置解析入口