17 Mar, 2026
3 commits
-
- Rename indexer/product_annotator.py to indexer/product_enrich.py and remove CSV-based CLI entrypoint, keeping only in-memory analyze_products API - Introduce dedicated product_enrich logging with separate verbose log file for full LLM requests/responses - Change indexer and /indexer/enrich-content API wiring to use indexer.product_enrich instead of indexer.product_annotator, updating tests and docs accordingly - Switch translate_prompts to share SUPPORTED_INDEX_LANGUAGES from tenant_config_loader and reuse that mapping for language code → display name - Remove hard SUPPORTED_LANGS constraint from LLM content-enrichment flow, driving languages directly from tenant/indexer configuration - Redesign LLM prompt generation to support multi-round, multi-language tables: first round in English, subsequent rounds translate the entire table (headers + cells) into target languages using English instructions
16 Mar, 2026
4 commits
14 Mar, 2026
1 commit
13 Mar, 2026
10 commits
12 Mar, 2026
10 commits
11 Mar, 2026
10 commits
-
去掉 START_* 控制变量逻辑,默认只启动核心服务 backend/indexer/frontend。 可选服务改为显式命令:./scripts/service_ctl.sh start embedding translator reranker tei cnclip。 统一 translator 端口读取为 TRANSLATION_PORT(移除 TRANSLATOR_PORT 兼容)。 保留未知服务强校验。 关键文件:service_ctl.sh “重名/歧义”修复 frontend 端口命名统一:FRONTEND_PORT 为主,PORT 仅后备。 start_frontend.sh 显式导出 PORT="${FRONTEND_PORT}",避免配置了 FRONTEND_PORT 但服务仍跑 6003 的问题。 文件:start_frontend.sh、frontend_server.py、env_config.py 日志/PID 命名治理继续收口 统一规则继续落地为 logs/<service>.log、logs/<service>.pid。 cnclip 保持 logs/cnclip.log + logs/cnclip.pid。 文件:service_ctl.sh、start_cnclip_service.sh、stop_cnclip_service.sh backend/indexer 启动风格统一补齐相关项 frontend/translator 也对齐到 set -euo pipefail,并用 exec 直启主进程。 文件:start_frontend.sh、start_translator.sh、start_backend.sh、start_indexer.sh legacy 入口清理 删除:start_servers.py、stop_reranker.sh、stop_translator.sh。 reranker 停止逻辑并入 service_ctl(含 VLLM::EngineCore 清理)。 benchmark 脚本改为统一入口:service_ctl.sh stop reranker。 文件:benchmark_reranker_1000docs.sh -
- 前端 JS 不再写死后端地址:默认 API_BASE_URL 为空串,所有搜索与 suggest 请求改为同源路径 (/search/*),仅在显式注入 window.API_BASE_URL 时才覆盖,避免 .env 中旧的 http://43.166.252.75:6002 等配置污染浏览器请求。 - 在 scripts/frontend_server.py 上实现轻量级反向代理:拦截 /search/、/admin/、/indexer/ 的 GET/POST/OPTIONS 请求,服务端将请求转发到本机 6002 (BACKEND_PROXY_URL,默认 http://127.0.0.1:6002),并把响应原样返回前端。 - 通过“浏览器 → web服务器:6003(认证) → GPU:6003(本项目前端) → GPU 本机:6002(后端)”这条链路,彻底绕开 web 服务器 6002 上单独的 Basic Auth,解决了外网访问时前端能打开但搜索请求被 web:6002 拦截的问题。 - frontend_server 默认不再注入 window.API_BASE_URL,只有在设置 FRONTEND_INJECT_API_BASE_URL=1 且 API_BASE_URL 有值时才向 HTML 注入脚本,确保默认行为始终是同源调用,由 6003 统一代理后端。 - 更新 frontend/index.html 中的静态 JS 版本号(tenant_facets_config.js 和 app.js),强制浏览器拉取最新脚本,避免旧版前端继续使用硬编码的后端地址。 Made-with: Cursor
-
Made-with: Cursor
-
补充之前两个git commit的注释: `be3f0d4` **Indexer:补齐内容富化链路与批处理能力,完善契约/回归测试** - **新增富化流程**:在 `document_transformer` / `spu_transformer` 中加入面向 SPU 的内容富化(enrich-content)处理与字段组装逻辑。 - **增强增量索引**:`incremental_service` 增加富化相关的处理分支与必要的边界/兼容逻辑。 - **批处理与稳定性**:`process_products` 调整处理节奏/批次边界,降低大批量处理时的失败率与抖动。 - **测试补齐**:新增 CI 级接口契约测试与批处理/富化相关单测,覆盖服务行为与关键路径回归。 --- `9f5994b` **Reranker 微服务:上线与调优文档 + 批处理后端改造 + 性能基准脚本** - **文档体系完善**:补充 `reranker/DEPLOYMENT_AND_TUNING.md`、更新 `reranker/README.md`,沉淀部署、参数选择、性能调优方法。 - **后端能力增强**:新增/完善批处理工具 `batching_utils`,并对 `qwen3_vllm` 后端进行批量推理/吞吐相关优化与适配。 - **压测与报告**:新增 `scripts/benchmark_reranker_1000docs.sh` 与对应 `perf_reports/.../report.md`,可复现实测吞吐与延迟数据。 - **对外/集成入口**:补充 `api/routes/indexer.py` 相关路由能力,为索引/服务侧集成 reranker 提供接口支撑。 - **回归测试**:新增批处理工具相关单测,确保 batching 行为稳定、可回归。
-
./scripts/start_tei_service.sh START_TEI=0 ./scripts/service_ctl.sh restart embedding curl -sS -X POST "http://127.0.0.1:6005/embed/text" \ -H "Content-Type: application/json" \ -d '["芭比娃娃 儿童玩具", "纯棉T恤 短袖"]'
10 Mar, 2026
2 commits
-
和微服务(embedding/translate/rerank)。 **新增文件** - 压测主脚本:[perf_api_benchmark.py](/data/saas-search/scripts/perf_api_benchmark.py:1) - 自定义用例模板:[perf_cases.json.example](/data/saas-search/scripts/perf_cases.json.example:1) **文档更新** - 在接口对接文档增加“接口级压测脚本”章节:[搜索API对接指南.md](/data/saas-search/docs/搜索API对接指南.md:2089) **支持的场景** - `backend_search` -> `POST /search/` - `backend_suggest` -> `GET /search/suggestions` - `embed_text` -> `POST /embed/text` - `translate` -> `POST /translate` - `rerank` -> `POST /rerank` - `all` -> 依次执行上述全部场景 **你可以直接执行的命令** 1. `./.venv/bin/python scripts/perf_api_benchmark.py --scenario backend_suggest --tenant-id 162 --duration 30 --concurrency 50` 2. `./.venv/bin/python scripts/perf_api_benchmark.py --scenario backend_search --tenant-id 162 --duration 30 --concurrency 20` 3. `./.venv/bin/python scripts/perf_api_benchmark.py --scenario all --tenant-id 162 --duration 60 --concurrency 30 --output perf_reports/all.json` 4. `./.venv/bin/python scripts/perf_api_benchmark.py --scenario all --tenant-id 162 --cases-file scripts/perf_cases.json.example --duration 60 --concurrency 40 --output perf_reports/custom_all.json` **可选参数** - `--backend-base` `--embedding-base` `--translator-base` `--reranker-base`:切到你的实际服务地址 - `--max-requests`:限制总请求数 - `--max-errors`:错误达到阈值提前停止 - `--pause`:`all` 模式下场景间暂停 **本地已验证** - `backend_suggest` 小规模并发压测成功(200,成功率 100%) - `backend_search` 小规模并发压测成功(200,成功率 100%) - `translate` 小规模并发压测成功(200,成功率 100%)