Commit 223145fe165efeed8b4e8540cf01a709bd00aaee
1 parent
c59dd0b0
补充部分任务明文版本输出
Showing
6 changed files
with
0 additions
and
877 deletions
Show diff stats
offline_tasks/CHANGELOG_DEBUG_MODE.md deleted
| @@ -1,176 +0,0 @@ | @@ -1,176 +0,0 @@ | ||
| 1 | -# 离线推荐任务 - Debug模式功能更新 | ||
| 2 | - | ||
| 3 | -## 更新日期 | ||
| 4 | -2025-10-22 | ||
| 5 | - | ||
| 6 | -## 更新内容 | ||
| 7 | - | ||
| 8 | -为所有离线推荐任务添加了debug模式支持,使得所有任务都能够生成明文可读文件,方便查看推荐效果。 | ||
| 9 | - | ||
| 10 | -## 修改的文件 | ||
| 11 | - | ||
| 12 | -### 1. 脚本文件 | ||
| 13 | - | ||
| 14 | -#### ✅ 新增debug支持的脚本 | ||
| 15 | - | ||
| 16 | -1. **scripts/i2i_content_similar.py** | ||
| 17 | - - 添加 `--debug` 参数支持 | ||
| 18 | - - 添加 `--top_n` 参数支持 | ||
| 19 | - - 导入 `save_readable_index` 和 `fetch_name_mappings` 函数 | ||
| 20 | - - 修改 `generate_similarity_index` 函数,支持传入 `top_n` 参数 | ||
| 21 | - - 在debug模式下生成两个可读文件: | ||
| 22 | - - `output/debug/i2i_content_name_YYYYMMDD_readable.txt` | ||
| 23 | - - `output/debug/i2i_content_pic_YYYYMMDD_readable.txt` | ||
| 24 | - | ||
| 25 | -2. **scripts/i2i_item_behavior.py** | ||
| 26 | - - 导入 `save_readable_index` 函数 | ||
| 27 | - - 在debug模式下生成可读文件: | ||
| 28 | - - `output/debug/i2i_item_behavior_YYYYMMDD_readable.txt` | ||
| 29 | - | ||
| 30 | -#### ✅ 已有debug支持的脚本(保持不变) | ||
| 31 | - | ||
| 32 | -以下脚本已经支持debug模式,无需修改: | ||
| 33 | - | ||
| 34 | -1. **scripts/i2i_swing.py** ✓ | ||
| 35 | -2. **scripts/i2i_session_w2v.py** ✓ | ||
| 36 | -3. **scripts/i2i_deepwalk.py** ✓ | ||
| 37 | -4. **scripts/interest_aggregation.py** ✓ | ||
| 38 | -5. **scripts/tag_category_similar.py** ✓ (有自己的实现) | ||
| 39 | - | ||
| 40 | -### 2. 调度脚本 | ||
| 41 | - | ||
| 42 | -#### run.sh | ||
| 43 | -- 更新 Task 4 (内容相似度),添加 `--top_n $TOP_N $DEBUG_MODE` 参数 | ||
| 44 | -- 确保所有任务都统一使用 `$DEBUG_MODE` 变量 | ||
| 45 | - | ||
| 46 | -### 3. 文档文件 | ||
| 47 | - | ||
| 48 | -#### 新增文档 | ||
| 49 | - | ||
| 50 | -1. **DEBUG_MODE_USAGE.md** | ||
| 51 | - - 完整的debug模式使用说明 | ||
| 52 | - - 包含所有支持debug模式的任务列表 | ||
| 53 | - - 使用方法和示例 | ||
| 54 | - - 性能影响说明 | ||
| 55 | - - 故障排查指南 | ||
| 56 | - | ||
| 57 | -2. **CHANGELOG_DEBUG_MODE.md** (本文件) | ||
| 58 | - - 记录此次更新的详细内容 | ||
| 59 | - | ||
| 60 | -## 功能特性 | ||
| 61 | - | ||
| 62 | -### Debug模式输出格式 | ||
| 63 | - | ||
| 64 | -所有任务在开启debug模式后,都会在 `output/debug/` 目录生成对应的可读文件,格式统一为: | ||
| 65 | - | ||
| 66 | -``` | ||
| 67 | -================================================================================ | ||
| 68 | -明文索引文件 | ||
| 69 | -生成时间: 2025-10-22 14:30:25 | ||
| 70 | -描述: i2i:task_name | ||
| 71 | -总索引数: XXXXX | ||
| 72 | -================================================================================ | ||
| 73 | - | ||
| 74 | -[1] i2i:task_name:item_id (商品名称) | ||
| 75 | --------------------------------------------------------------------------------- | ||
| 76 | - 1. ID:similar_id_1(相似商品1名称) - Score:0.8520 | ||
| 77 | - 2. ID:similar_id_2(相似商品2名称) - Score:0.7845 | ||
| 78 | - 3. ID:similar_id_3(相似商品3名称) - Score:0.7321 | ||
| 79 | - ... | ||
| 80 | -``` | ||
| 81 | - | ||
| 82 | -### 现在所有任务都支持的可读文件 | ||
| 83 | - | ||
| 84 | -| 任务 | 标准输出文件 | 可读文件 | | ||
| 85 | -|------|-------------|---------| | ||
| 86 | -| Swing算法 | `i2i_swing_YYYYMMDD.txt` | `debug/i2i_swing_YYYYMMDD_readable.txt` | | ||
| 87 | -| Session W2V | `i2i_session_w2v_YYYYMMDD.txt` | `debug/i2i_session_w2v_YYYYMMDD_readable.txt` | | ||
| 88 | -| DeepWalk | `i2i_deepwalk_YYYYMMDD.txt` | `debug/i2i_deepwalk_YYYYMMDD_readable.txt` | | ||
| 89 | -| 内容相似度(名称) | `i2i_content_name_YYYYMMDD.txt` | `debug/i2i_content_name_YYYYMMDD_readable.txt` | | ||
| 90 | -| 内容相似度(图片) | `i2i_content_pic_YYYYMMDD.txt` | `debug/i2i_content_pic_YYYYMMDD_readable.txt` | | ||
| 91 | -| Item行为相似度 | `i2i_item_behavior_YYYYMMDD.txt` | `debug/i2i_item_behavior_YYYYMMDD_readable.txt` | | ||
| 92 | -| Tag分类相似度 | `tag_category_similar_YYYYMMDD.txt` | `debug/tag_category_similar_YYYYMMDD_readable.txt` | | ||
| 93 | -| 兴趣聚合(热门) | `interest_hot_YYYYMMDD.txt` | `debug/interest_hot_YYYYMMDD_readable.txt` | | ||
| 94 | -| 兴趣聚合(购物车) | `interest_cart_YYYYMMDD.txt` | `debug/interest_cart_YYYYMMDD_readable.txt` | | ||
| 95 | -| 兴趣聚合(新品) | `interest_new_YYYYMMDD.txt` | `debug/interest_new_YYYYMMDD_readable.txt` | | ||
| 96 | -| 兴趣聚合(全局) | `interest_global_YYYYMMDD.txt` | `debug/interest_global_YYYYMMDD_readable.txt` | | ||
| 97 | - | ||
| 98 | -## 使用方法 | ||
| 99 | - | ||
| 100 | -### 全局开启/关闭debug模式 | ||
| 101 | - | ||
| 102 | -编辑 `run.sh`,修改 `DEBUG_MODE` 变量: | ||
| 103 | - | ||
| 104 | -```bash | ||
| 105 | -DEBUG_MODE="--debug" # 开启debug模式 | ||
| 106 | -# 或 | ||
| 107 | -DEBUG_MODE="" # 关闭debug模式 | ||
| 108 | -``` | ||
| 109 | - | ||
| 110 | -### 单独运行任务 | ||
| 111 | - | ||
| 112 | -```bash | ||
| 113 | -# i2i内容相似度 | ||
| 114 | -python3 scripts/i2i_content_similar.py --top_n 50 --debug | ||
| 115 | - | ||
| 116 | -# i2i行为相似度 | ||
| 117 | -python3 scripts/i2i_item_behavior.py --lookback_days 180 --top_n 50 --debug | ||
| 118 | -``` | ||
| 119 | - | ||
| 120 | -## 验证 | ||
| 121 | - | ||
| 122 | -所有修改已通过以下验证: | ||
| 123 | - | ||
| 124 | -1. ✅ Python语法检查 (`python3 -m py_compile`) | ||
| 125 | -2. ✅ Linter检查 (无错误) | ||
| 126 | -3. ✅ 代码逻辑审查 | ||
| 127 | -4. ✅ 与现有debug模式实现保持一致 | ||
| 128 | - | ||
| 129 | -## 向后兼容性 | ||
| 130 | - | ||
| 131 | -- ✅ 不传 `--debug` 参数时,行为与之前完全一致 | ||
| 132 | -- ✅ 标准输出文件格式不变 | ||
| 133 | -- ✅ 所有现有脚本和调度任务继续正常工作 | ||
| 134 | - | ||
| 135 | -## 性能影响 | ||
| 136 | - | ||
| 137 | -- 不开启debug模式:无性能影响 | ||
| 138 | -- 开启debug模式:任务时间增加约10-20%(主要用于查询商品名称) | ||
| 139 | - | ||
| 140 | -## 后续建议 | ||
| 141 | - | ||
| 142 | -1. 定期清理 `output/debug/` 目录,避免占用过多磁盘空间 | ||
| 143 | -2. 在生产环境建议关闭debug模式,仅在需要检查效果时开启 | ||
| 144 | -3. 可以考虑添加自动清理脚本,保留最近N天的debug文件 | ||
| 145 | - | ||
| 146 | -## 文件清单 | ||
| 147 | - | ||
| 148 | -### 修改的文件 | ||
| 149 | -- `scripts/i2i_content_similar.py` | ||
| 150 | -- `scripts/i2i_item_behavior.py` | ||
| 151 | -- `run.sh` | ||
| 152 | - | ||
| 153 | -### 新增的文件 | ||
| 154 | -- `DEBUG_MODE_USAGE.md` | ||
| 155 | -- `CHANGELOG_DEBUG_MODE.md` | ||
| 156 | - | ||
| 157 | -## 测试建议 | ||
| 158 | - | ||
| 159 | -运行以下命令测试debug模式是否正常工作: | ||
| 160 | - | ||
| 161 | -```bash | ||
| 162 | -# 测试i2i_content_similar | ||
| 163 | -cd /home/tw/recommendation/offline_tasks | ||
| 164 | -python3 scripts/i2i_content_similar.py --top_n 10 --debug | ||
| 165 | - | ||
| 166 | -# 测试i2i_item_behavior | ||
| 167 | -python3 scripts/i2i_item_behavior.py --lookback_days 30 --top_n 10 --debug | ||
| 168 | - | ||
| 169 | -# 检查是否生成了可读文件 | ||
| 170 | -ls -lh output/debug/*_readable.txt | ||
| 171 | -``` | ||
| 172 | - | ||
| 173 | -## 总结 | ||
| 174 | - | ||
| 175 | -此次更新确保了所有离线推荐任务都具有统一的debug模式支持,使得开发和运维人员能够更方便地查看和验证推荐效果,提高了系统的可维护性和可观测性。 | ||
| 176 | - |
offline_tasks/CHANGES_SUMMARY.md deleted
| @@ -1,102 +0,0 @@ | @@ -1,102 +0,0 @@ | ||
| 1 | -# 更新总结 - 2025-10-22 | ||
| 2 | - | ||
| 3 | -## 1. 修改 tag_category_similar.py 脚本 | ||
| 4 | - | ||
| 5 | -### 主要变更 | ||
| 6 | -- **SQL查询修改**:从只查询分类名称改为同时查询分类ID和名称 | ||
| 7 | - - 修改前:`GROUP_CONCAT(pc_1.name) AS '商品信息'` | ||
| 8 | - - 修改后:`GROUP_CONCAT(DISTINCT CONCAT(pc_1.id, ':', pc_1.name)) AS '商品信息'` | ||
| 9 | - | ||
| 10 | -- **数据处理修改**:解析ID和名称对,建立ID到名称的映射 | ||
| 11 | - ```python | ||
| 12 | - cat_id_to_name = {} | ||
| 13 | - for cat_pair in categories: | ||
| 14 | - if ':' in cat_pair: | ||
| 15 | - cat_id, cat_name = cat_pair.split(':', 1) | ||
| 16 | - cat_id_to_name[cat_id] = cat_name | ||
| 17 | - unique_cats.add(cat_id) | ||
| 18 | - ``` | ||
| 19 | - | ||
| 20 | -- **输出格式修改**: | ||
| 21 | - - **主输出文件**(`output/tag_category_similar_YYYYMMDD.txt`):只包含ID | ||
| 22 | - - 格式:`category_id \t similar_id1:score1,similar_id2:score2,...` | ||
| 23 | - - **Debug文件**(`output/debug/tag_category_similar_YYYYMMDD_readable.txt`):包含ID+名称 | ||
| 24 | - - 格式:`category_id:category_name \t similar_id1:similar_name1:score1,...` | ||
| 25 | - | ||
| 26 | -### 输出示例 | ||
| 27 | - | ||
| 28 | -**主文件(用于Redis加载):** | ||
| 29 | -``` | ||
| 30 | -123 456:0.8123,789:0.7654,234:0.6543 | ||
| 31 | -``` | ||
| 32 | - | ||
| 33 | -**Debug文件(便于人工查看):** | ||
| 34 | -``` | ||
| 35 | -================================================================================ | ||
| 36 | -明文索引文件 | ||
| 37 | -生成时间: 2025-10-22 HH:MM:SS | ||
| 38 | -描述: tag_category_similar (分类相似度) | ||
| 39 | -总索引数: 708 | ||
| 40 | -================================================================================ | ||
| 41 | - | ||
| 42 | -123:BB夹/一字夹 456:横夹:0.8123,789:橡皮筋/发圈:0.7654,234:抓夹:0.6543 | ||
| 43 | -``` | ||
| 44 | - | ||
| 45 | -## 2. 更新详细设计文档 | ||
| 46 | - | ||
| 47 | -### 修改位置 | ||
| 48 | -文件:`offline_tasks/doc/详细设计文档.md` | ||
| 49 | -章节:📊 数据量统计 | ||
| 50 | - | ||
| 51 | -### 变更内容 | ||
| 52 | -- 基于真实输出文件统计了实际数据量 | ||
| 53 | -- 更新了所有索引类型的准确数量和大小 | ||
| 54 | -- 添加了 `tag_category_similar` 索引统计 | ||
| 55 | -- 更新了Redis内存占用预估(从180MB更新为400MB) | ||
| 56 | - | ||
| 57 | -### 实际数据统计(2025-10-22) | ||
| 58 | - | ||
| 59 | -| 索引类型 | 索引数量 | 单条平均大小 | 总大小 | 更新频率 | | ||
| 60 | -|---------|---------|---------|--------|---------| | ||
| 61 | -| i2i_deepwalk | 48,376 | ~780B | 36MB | 每天 | | ||
| 62 | -| i2i_session_w2v | 50,990 | ~840B | 41MB | 每天 | | ||
| 63 | -| i2i_content_name | 127,720 | ~830B | 101MB | 每周 | | ||
| 64 | -| i2i_content_pic | 0 | - | 0 | 每周 | | ||
| 65 | -| i2i_item_behavior | 178,775 | ~750B | 128MB | 每天 | | ||
| 66 | -| interest_hot | 14,001 | ~520B | 6.9MB | 每天 | | ||
| 67 | -| interest_cart | 15,563 | ~670B | 10MB | 每天 | | ||
| 68 | -| interest_new | 6,463 | ~500B | 3.1MB | 每天 | | ||
| 69 | -| interest_global | 17,533 | ~660B | 11MB | 每天 | | ||
| 70 | -| tag_category_similar | 708 | ~930B | 630KB | 每周 | | ||
| 71 | -| **总计** | **~460,000** | - | **~338MB** | - | | ||
| 72 | - | ||
| 73 | -## 3. 需要执行的操作 | ||
| 74 | - | ||
| 75 | -要应用这些更改,需要重新运行脚本: | ||
| 76 | - | ||
| 77 | -```bash | ||
| 78 | -cd /home/tw/recommendation/offline_tasks | ||
| 79 | -python scripts/tag_category_similar.py --debug | ||
| 80 | -``` | ||
| 81 | - | ||
| 82 | -这将生成: | ||
| 83 | -- `output/tag_category_similar_20251022.txt` - ID格式的主文件 | ||
| 84 | -- `output/debug/tag_category_similar_20251022_readable.txt` - 可读格式的调试文件 | ||
| 85 | - | ||
| 86 | -## 4. 影响分析 | ||
| 87 | - | ||
| 88 | -### 向后兼容性 | ||
| 89 | -- ⚠️ **破坏性变更**:主输出文件格式从名称改为ID | ||
| 90 | -- 需要更新所有使用该文件的下游系统(特别是Redis加载脚本) | ||
| 91 | - | ||
| 92 | -### 优势 | ||
| 93 | -1. ✅ ID格式更稳定,不受名称变更影响 | ||
| 94 | -2. ✅ 数据更准确,避免名称重复问题 | ||
| 95 | -3. ✅ 保留可读版本便于调试和验证 | ||
| 96 | -4. ✅ 与其他索引文件格式保持一致 | ||
| 97 | - | ||
| 98 | -### 建议 | ||
| 99 | -- 更新Redis加载脚本,使其能够处理category ID | ||
| 100 | -- 在API层做ID到名称的转换(如需要) | ||
| 101 | -- 保持debug文件生成,便于问题排查 | ||
| 102 | - |
offline_tasks/DEBUG_MODE_USAGE.md deleted
| @@ -1,125 +0,0 @@ | @@ -1,125 +0,0 @@ | ||
| 1 | -# Debug模式使用说明 | ||
| 2 | - | ||
| 3 | -## 概述 | ||
| 4 | - | ||
| 5 | -所有推荐任务脚本都支持 `--debug` 参数,开启后会在 `output/debug/` 目录下生成可读的明文索引文件,方便查看推荐效果。 | ||
| 6 | - | ||
| 7 | -## 支持Debug模式的任务 | ||
| 8 | - | ||
| 9 | -| 任务名称 | 脚本文件 | 输出文件 | 可读文件位置 | | ||
| 10 | -|---------|---------|---------|-------------| | ||
| 11 | -| Swing算法 | `i2i_swing.py` | `i2i_swing_YYYYMMDD.txt` | `output/debug/i2i_swing_YYYYMMDD_readable.txt` | | ||
| 12 | -| Session W2V | `i2i_session_w2v.py` | `i2i_session_w2v_YYYYMMDD.txt` | `output/debug/i2i_session_w2v_YYYYMMDD_readable.txt` | | ||
| 13 | -| DeepWalk | `i2i_deepwalk.py` | `i2i_deepwalk_YYYYMMDD.txt` | `output/debug/i2i_deepwalk_YYYYMMDD_readable.txt` | | ||
| 14 | -| 内容相似度(名称) | `i2i_content_similar.py` | `i2i_content_name_YYYYMMDD.txt` | `output/debug/i2i_content_name_YYYYMMDD_readable.txt` | | ||
| 15 | -| 内容相似度(图片) | `i2i_content_similar.py` | `i2i_content_pic_YYYYMMDD.txt` | `output/debug/i2i_content_pic_YYYYMMDD_readable.txt` | | ||
| 16 | -| Item行为相似度 | `i2i_item_behavior.py` | `i2i_item_behavior_YYYYMMDD.txt` | `output/debug/i2i_item_behavior_YYYYMMDD_readable.txt` | | ||
| 17 | -| Tag分类相似度 | `tag_category_similar.py` | `tag_category_similar_YYYYMMDD.txt` | `output/debug/tag_category_similar_YYYYMMDD_readable.txt` | | ||
| 18 | -| 兴趣聚合 | `interest_aggregation.py` | `interest_*_YYYYMMDD.txt` | `output/debug/interest_*_YYYYMMDD_readable.txt` | | ||
| 19 | - | ||
| 20 | -## 使用方法 | ||
| 21 | - | ||
| 22 | -### 方法1: 通过run.sh全局开启 | ||
| 23 | - | ||
| 24 | -在 `run.sh` 中设置: | ||
| 25 | - | ||
| 26 | -```bash | ||
| 27 | -DEBUG_MODE="--debug" # 开启debug模式 | ||
| 28 | -# 或 | ||
| 29 | -DEBUG_MODE="" # 关闭debug模式 | ||
| 30 | -``` | ||
| 31 | - | ||
| 32 | -然后运行: | ||
| 33 | - | ||
| 34 | -```bash | ||
| 35 | -bash run.sh | ||
| 36 | -``` | ||
| 37 | - | ||
| 38 | -### 方法2: 单独运行某个任务 | ||
| 39 | - | ||
| 40 | -#### 示例1: 运行Session W2V (已支持debug模式) | ||
| 41 | - | ||
| 42 | -```bash | ||
| 43 | -python3 scripts/i2i_session_w2v.py --lookback_days 400 --top_n 50 --debug | ||
| 44 | -``` | ||
| 45 | - | ||
| 46 | -#### 示例2: 运行DeepWalk (已支持debug模式) | ||
| 47 | - | ||
| 48 | -```bash | ||
| 49 | -python3 scripts/i2i_deepwalk.py --lookback_days 400 --top_n 50 --debug | ||
| 50 | -``` | ||
| 51 | - | ||
| 52 | -#### 示例3: 运行内容相似度 (新增debug模式) | ||
| 53 | - | ||
| 54 | -```bash | ||
| 55 | -python3 scripts/i2i_content_similar.py --top_n 50 --debug | ||
| 56 | -``` | ||
| 57 | - | ||
| 58 | -#### 示例4: 运行Item行为相似度 (新增debug模式) | ||
| 59 | - | ||
| 60 | -```bash | ||
| 61 | -python3 scripts/i2i_item_behavior.py --lookback_days 180 --top_n 50 --debug | ||
| 62 | -``` | ||
| 63 | - | ||
| 64 | -#### 示例5: 运行兴趣聚合 (已支持debug模式) | ||
| 65 | - | ||
| 66 | -```bash | ||
| 67 | -python3 scripts/interest_aggregation.py --lookback_days 400 --top_n 1000 --debug | ||
| 68 | -``` | ||
| 69 | - | ||
| 70 | -## 可读文件格式 | ||
| 71 | - | ||
| 72 | -可读文件格式示例: | ||
| 73 | - | ||
| 74 | -``` | ||
| 75 | -================================================================================ | ||
| 76 | -明文索引文件 | ||
| 77 | -生成时间: 2025-10-22 14:30:25 | ||
| 78 | -描述: i2i:session_w2v | ||
| 79 | -总索引数: 50990 | ||
| 80 | -================================================================================ | ||
| 81 | - | ||
| 82 | -[1] i2i:session_w2v:12345 (商品名称) | ||
| 83 | --------------------------------------------------------------------------------- | ||
| 84 | - 1. ID:23456(相似商品1名称) - Score:0.8520 | ||
| 85 | - 2. ID:34567(相似商品2名称) - Score:0.7845 | ||
| 86 | - 3. ID:45678(相似商品3名称) - Score:0.7321 | ||
| 87 | - ... | ||
| 88 | -``` | ||
| 89 | - | ||
| 90 | -## 性能影响 | ||
| 91 | - | ||
| 92 | -- **不开启debug模式**: 只生成标准索引文件,速度最快 | ||
| 93 | -- **开启debug模式**: 会额外查询数据库获取商品名称,生成可读文件,任务时间会增加约10-20% | ||
| 94 | - | ||
| 95 | -## 注意事项 | ||
| 96 | - | ||
| 97 | -1. **磁盘空间**: 可读文件通常比标准索引文件大2-3倍,请确保有足够的磁盘空间 | ||
| 98 | -2. **数据库负载**: debug模式会额外查询商品名称,在高并发场景下建议关闭 | ||
| 99 | -3. **文件位置**: 所有可读文件都保存在 `output/debug/` 目录 | ||
| 100 | -4. **定期清理**: 建议定期清理旧的debug文件,避免占用过多磁盘空间 | ||
| 101 | - | ||
| 102 | -## 快速检查命令 | ||
| 103 | - | ||
| 104 | -查看最新生成的可读文件: | ||
| 105 | - | ||
| 106 | -```bash | ||
| 107 | -# 列出所有可读文件 | ||
| 108 | -ls -lh output/debug/*_readable.txt | ||
| 109 | - | ||
| 110 | -# 查看某个可读文件的前50行 | ||
| 111 | -head -50 output/debug/i2i_session_w2v_20251022_readable.txt | ||
| 112 | - | ||
| 113 | -# 统计可读文件数量 | ||
| 114 | -ls output/debug/*_readable.txt | wc -l | ||
| 115 | -``` | ||
| 116 | - | ||
| 117 | -## 故障排查 | ||
| 118 | - | ||
| 119 | -如果没有生成可读文件,检查: | ||
| 120 | - | ||
| 121 | -1. 是否传递了 `--debug` 参数 | ||
| 122 | -2. `output/debug/` 目录是否存在且有写权限 | ||
| 123 | -3. 查看日志文件确认是否有错误信息 | ||
| 124 | -4. 检查数据库连接是否正常(需要查询商品名称) | ||
| 125 | - |
offline_tasks/FIXES_SUMMARY.md deleted
| @@ -1,211 +0,0 @@ | @@ -1,211 +0,0 @@ | ||
| 1 | -# 离线任务修复总结 | ||
| 2 | - | ||
| 3 | -## 修复日期 | ||
| 4 | -2025-10-21 | ||
| 5 | - | ||
| 6 | -## 问题和解决方案 | ||
| 7 | - | ||
| 8 | -### 1. Task 5 和 Task 6: ModuleNotFoundError: No module named 'db_service' | ||
| 9 | - | ||
| 10 | -**问题**: | ||
| 11 | -- `i2i_item_behavior.py` 和 `tag_category_similar.py` 无法导入 `db_service` 模块 | ||
| 12 | -- 所有脚本都使用了丑陋的 `sys.path.append()` hack | ||
| 13 | - | ||
| 14 | -**解决方案**: | ||
| 15 | -- 将 `db_service.py` 移动到 `offline_tasks/` 根目录(Python 运行根目录) | ||
| 16 | -- 删除所有脚本中的 `sys.path.append()` 代码 | ||
| 17 | -- 在 `run.sh` 中设置 `PYTHONPATH=/home/tw/recommendation/offline_tasks` | ||
| 18 | -- 现在所有脚本都使用标准导入:`from db_service import create_db_connection` | ||
| 19 | - | ||
| 20 | -**影响的文件**: | ||
| 21 | -- `db_service.py` (移动到 offline_tasks 根目录) | ||
| 22 | -- `run.sh` (添加 PYTHONPATH 设置) | ||
| 23 | -- 所有 scripts/ 目录下的 12 个 Python 脚本 (清理了 sys.path 代码) | ||
| 24 | - | ||
| 25 | ---- | ||
| 26 | - | ||
| 27 | -### 2. Task 3: DeepWalk 内存溢出 (OOM Kill - 退出码 137) | ||
| 28 | - | ||
| 29 | -**问题**: | ||
| 30 | -- DeepWalk 在"构建物品图"步骤时被系统杀死 | ||
| 31 | -- 处理 348,043 条记录时内存消耗超过 35GB 限制 | ||
| 32 | -- 原实现使用纯 Python 构建图,效率低 | ||
| 33 | - | ||
| 34 | -**解决方案**: | ||
| 35 | -1. **复用高效实现**: 将 `graphembedding/deepwalk/` 的实现移动到 `offline_tasks/deepwalk/` | ||
| 36 | - - 使用 Alias 采样算法,比纯 Python 快 5-10 倍 | ||
| 37 | - - 使用 joblib 多进程并行,避免 GIL | ||
| 38 | - - 使用 networkx 的高效图结构 | ||
| 39 | - | ||
| 40 | -2. **完全重构** `i2i_deepwalk.py`: | ||
| 41 | - - 只负责数据适配(从数据库生成边文件) | ||
| 42 | - - 复用 `DeepWalk` 类进行随机游走 | ||
| 43 | - - 添加内存保护:限制每个用户最多 100 个物品(按权重排序) | ||
| 44 | - | ||
| 45 | -3. **流程优化**: | ||
| 46 | - ``` | ||
| 47 | - 数据库数据 → 边文件 → DeepWalk 随机游走 → Word2Vec 训练 → 相似度生成 | ||
| 48 | - ``` | ||
| 49 | - | ||
| 50 | -**新增文件**: | ||
| 51 | -- `offline_tasks/deepwalk/deepwalk.py` - DeepWalk 核心实现(Alias 采样) | ||
| 52 | -- `offline_tasks/deepwalk/alias.py` - Alias 采样算法 | ||
| 53 | - | ||
| 54 | -**性能提升**: | ||
| 55 | -- 内存使用降低 60-70% | ||
| 56 | -- 速度提升 3-5 倍 | ||
| 57 | -- 不会再被 OOM Kill | ||
| 58 | - | ||
| 59 | ---- | ||
| 60 | - | ||
| 61 | -## 最终架构 | ||
| 62 | - | ||
| 63 | -### 文件结构 | ||
| 64 | -``` | ||
| 65 | -offline_tasks/ (Python 根目录,通过 PYTHONPATH 设置) | ||
| 66 | - ├── db_service.py ✓ | ||
| 67 | - ├── config/ | ||
| 68 | - │ └── offline_config.py ✓ | ||
| 69 | - ├── deepwalk/ ✓ | ||
| 70 | - │ ├── deepwalk.py (高效实现) | ||
| 71 | - │ └── alias.py (Alias 采样) | ||
| 72 | - ├── scripts/ | ||
| 73 | - │ ├── debug_utils.py | ||
| 74 | - │ ├── fetch_item_attributes.py | ||
| 75 | - │ ├── generate_session.py | ||
| 76 | - │ ├── i2i_swing.py | ||
| 77 | - │ ├── i2i_session_w2v.py | ||
| 78 | - │ ├── i2i_deepwalk.py ✓ (重构) | ||
| 79 | - │ ├── i2i_content_similar.py | ||
| 80 | - │ ├── i2i_item_behavior.py ✓ (修复) | ||
| 81 | - │ ├── tag_category_similar.py ✓ (修复) | ||
| 82 | - │ └── interest_aggregation.py | ||
| 83 | - └── run.sh ✓ (设置 PYTHONPATH) | ||
| 84 | -``` | ||
| 85 | - | ||
| 86 | -### 导入规范 | ||
| 87 | -所有脚本使用标准导入,无 `sys.path` hack: | ||
| 88 | - | ||
| 89 | -```python | ||
| 90 | -# 标准导入 | ||
| 91 | -from db_service import create_db_connection | ||
| 92 | -from config.offline_config import DB_CONFIG, OUTPUT_DIR | ||
| 93 | -from scripts.debug_utils import setup_debug_logger | ||
| 94 | -from deepwalk.deepwalk import DeepWalk | ||
| 95 | -``` | ||
| 96 | - | ||
| 97 | -### run.sh 配置 | ||
| 98 | -```bash | ||
| 99 | -#!/bin/bash | ||
| 100 | - | ||
| 101 | -# 设置 Python 路径,让脚本能找到 db_service, config, deepwalk 等模块 | ||
| 102 | -export PYTHONPATH=/home/tw/recommendation/offline_tasks:$PYTHONPATH | ||
| 103 | - | ||
| 104 | -cd /home/tw/recommendation/offline_tasks | ||
| 105 | -# ... 其他代码 | ||
| 106 | -``` | ||
| 107 | - | ||
| 108 | ---- | ||
| 109 | - | ||
| 110 | -## 测试 | ||
| 111 | - | ||
| 112 | -### 运行测试脚本 | ||
| 113 | -```bash | ||
| 114 | -cd /home/tw/recommendation/offline_tasks | ||
| 115 | -./test_fixes.sh | ||
| 116 | -``` | ||
| 117 | - | ||
| 118 | -### 测试单个任务 | ||
| 119 | -```bash | ||
| 120 | -cd /home/tw/recommendation/offline_tasks | ||
| 121 | - | ||
| 122 | -# 测试 Task 5 | ||
| 123 | -python3 scripts/i2i_item_behavior.py --lookback_days 400 --top_n 50 --debug | ||
| 124 | - | ||
| 125 | -# 测试 Task 6 | ||
| 126 | -python3 scripts/tag_category_similar.py --lookback_days 400 --top_n 50 --debug | ||
| 127 | - | ||
| 128 | -# 测试 Task 3 (建议先用较小参数测试) | ||
| 129 | -python3 scripts/i2i_deepwalk.py --lookback_days 200 --top_n 30 --num_walks 5 --walk_length 20 --save_model --save_graph --debug | ||
| 130 | -``` | ||
| 131 | - | ||
| 132 | -### 运行完整流程 | ||
| 133 | -```bash | ||
| 134 | -cd /home/tw/recommendation/offline_tasks | ||
| 135 | -bash run.sh | ||
| 136 | -``` | ||
| 137 | - | ||
| 138 | ---- | ||
| 139 | - | ||
| 140 | -## DeepWalk 参数调优建议 | ||
| 141 | - | ||
| 142 | -### 内存充足 (>50GB 可用) | ||
| 143 | -```bash | ||
| 144 | ---lookback_days 400 | ||
| 145 | ---num_walks 10 | ||
| 146 | ---walk_length 40 | ||
| 147 | ---top_n 50 | ||
| 148 | -``` | ||
| 149 | - | ||
| 150 | -### 内存有限 (30-50GB) | ||
| 151 | -```bash | ||
| 152 | ---lookback_days 200 | ||
| 153 | ---num_walks 5 | ||
| 154 | ---walk_length 30 | ||
| 155 | ---top_n 50 | ||
| 156 | -``` | ||
| 157 | - | ||
| 158 | -### 内存紧张 (<30GB) | ||
| 159 | -```bash | ||
| 160 | ---lookback_days 100 | ||
| 161 | ---num_walks 3 | ||
| 162 | ---walk_length 20 | ||
| 163 | ---top_n 30 | ||
| 164 | -``` | ||
| 165 | - | ||
| 166 | -### run.sh 推荐配置 | ||
| 167 | -修改 `run.sh` 第 164 行(根据实际内存情况调整): | ||
| 168 | -```bash | ||
| 169 | -# 内存优化版本 (推荐) | ||
| 170 | -run_task "Task 3: DeepWalk" \ | ||
| 171 | - "python3 scripts/i2i_deepwalk.py --lookback_days 200 --top_n 50 --num_walks 5 --walk_length 30 --save_model --save_graph $DEBUG_MODE" | ||
| 172 | -``` | ||
| 173 | - | ||
| 174 | ---- | ||
| 175 | - | ||
| 176 | -## 代码质量提升 | ||
| 177 | - | ||
| 178 | -1. ✅ **移除所有 `sys.path` hack** - 使用标准 Python 模块导入 | ||
| 179 | -2. ✅ **清晰的模块结构** - offline_tasks 作为 Python 根目录 | ||
| 180 | -3. ✅ **更好的代码复用** - 复用 graphembedding/deepwalk 的高效实现 | ||
| 181 | -4. ✅ **内存优化** - 添加保护机制,避免 OOM | ||
| 182 | -5. ✅ **性能提升** - 使用 Alias 采样和多进程并行 | ||
| 183 | - | ||
| 184 | ---- | ||
| 185 | - | ||
| 186 | -## 注意事项 | ||
| 187 | - | ||
| 188 | -1. **PYTHONPATH**: 必须在 `offline_tasks/` 目录下运行脚本,或者设置 `PYTHONPATH` | ||
| 189 | -2. **临时文件**: DeepWalk 会在 `output/temp/` 生成临时文件,运行完会自动清理 | ||
| 190 | -3. **日志**: 所有 debug 日志在 `logs/debug/` 目录 | ||
| 191 | -4. **内存监控**: run.sh 会持续监控内存,超过 35GB 会自动终止进程 | ||
| 192 | - | ||
| 193 | ---- | ||
| 194 | - | ||
| 195 | -## 验证清单 | ||
| 196 | - | ||
| 197 | -✅ 所有 `sys.path.append()` 已清理 | ||
| 198 | -✅ `db_service.py` 在 offline_tasks 根目录 | ||
| 199 | -✅ `deepwalk/` 已移动到 offline_tasks | ||
| 200 | -✅ `run.sh` 设置了 PYTHONPATH | ||
| 201 | -✅ 所有脚本语法检查通过 | ||
| 202 | -✅ 所有导入语句正确 | ||
| 203 | -✅ i2i_deepwalk.py 已重构 | ||
| 204 | - | ||
| 205 | ---- | ||
| 206 | - | ||
| 207 | -## 下一步 | ||
| 208 | - | ||
| 209 | -1. 运行 `bash run.sh` 测试完整流程 | ||
| 210 | -2. 根据实际运行情况调整 DeepWalk 参数 | ||
| 211 | -3. 监控内存使用情况,必要时进一步优化 |
offline_tasks/IMPORT_FIXES.md deleted
| @@ -1,96 +0,0 @@ | @@ -1,96 +0,0 @@ | ||
| 1 | -# Import 修复报告 | ||
| 2 | - | ||
| 3 | -## 修复日期 | ||
| 4 | -2025-10-21 | ||
| 5 | - | ||
| 6 | -## 修复内容 | ||
| 7 | - | ||
| 8 | -### 添加缺失的 `import os` | ||
| 9 | - | ||
| 10 | -以下文件缺少 `import os` 导入,已全部修复: | ||
| 11 | - | ||
| 12 | -1. ✅ **add_names_to_swing.py** - 添加了 `import os` | ||
| 13 | -2. ✅ **generate_session.py** - 规范化了导入(从 `import json,os` 改为单独的 `import os`) | ||
| 14 | -3. ✅ **i2i_session_w2v.py** - 添加了 `import os` | ||
| 15 | -4. ✅ **i2i_swing.py** - 添加了 `import os` | ||
| 16 | -5. ✅ **interest_aggregation.py** - 添加了 `import os` | ||
| 17 | -6. ✅ **tag_category_similar.py** - 添加了 `import os` | ||
| 18 | - | ||
| 19 | -## 验证结果 | ||
| 20 | - | ||
| 21 | -### 所有脚本状态 | ||
| 22 | - | ||
| 23 | -``` | ||
| 24 | -✓ add_names_to_swing.py | ||
| 25 | -✓ debug_utils_backup.py | ||
| 26 | -✓ debug_utils.py | ||
| 27 | -✓ fetch_item_attributes.py | ||
| 28 | -✓ generate_session.py | ||
| 29 | -✓ i2i_content_similar.py | ||
| 30 | -✓ i2i_deepwalk.py | ||
| 31 | -✓ i2i_item_behavior.py | ||
| 32 | -✓ i2i_session_w2v.py | ||
| 33 | -✓ i2i_swing.py | ||
| 34 | -✓ interest_aggregation.py | ||
| 35 | -✓ load_index_to_redis.py | ||
| 36 | -✓ tag_category_similar.py | ||
| 37 | -``` | ||
| 38 | - | ||
| 39 | -### 编译检查 | ||
| 40 | - | ||
| 41 | -所有核心任务脚本编译通过,无语法错误。 | ||
| 42 | - | ||
| 43 | -**注意**: `test_es_connection.py` 有语法错误(第183行),但这是测试文件,不影响主要任务运行。 | ||
| 44 | - | ||
| 45 | -## 最终结构检查 | ||
| 46 | - | ||
| 47 | -``` | ||
| 48 | -✓ db_service.py 存在于 offline_tasks/ 根目录 | ||
| 49 | -✓ config/offline_config.py 存在 | ||
| 50 | -✓ deepwalk 模块完整 (deepwalk.py + alias.py) | ||
| 51 | -✓ run.sh 已设置 PYTHONPATH | ||
| 52 | -✓ 共 14 个脚本文件 | ||
| 53 | -✓ 所有使用 os 模块的文件都已正确导入 | ||
| 54 | -``` | ||
| 55 | - | ||
| 56 | -## 导入规范 | ||
| 57 | - | ||
| 58 | -所有脚本现在遵循标准导入规范: | ||
| 59 | - | ||
| 60 | -```python | ||
| 61 | -# 标准库导入 | ||
| 62 | -import os | ||
| 63 | -import json | ||
| 64 | -import argparse | ||
| 65 | -from datetime import datetime | ||
| 66 | -from collections import defaultdict | ||
| 67 | - | ||
| 68 | -# 第三方库导入 | ||
| 69 | -import pandas as pd | ||
| 70 | -import numpy as np | ||
| 71 | -from gensim.models import Word2Vec | ||
| 72 | - | ||
| 73 | -# 本地模块导入 | ||
| 74 | -from db_service import create_db_connection | ||
| 75 | -from config.offline_config import DB_CONFIG, OUTPUT_DIR | ||
| 76 | -from scripts.debug_utils import setup_debug_logger | ||
| 77 | -from deepwalk.deepwalk import DeepWalk | ||
| 78 | -``` | ||
| 79 | - | ||
| 80 | -## 完成清单 | ||
| 81 | - | ||
| 82 | -- [x] 所有缺少 `import os` 的文件已修复 | ||
| 83 | -- [x] 所有核心脚本编译通过 | ||
| 84 | -- [x] 导入语句规范化 | ||
| 85 | -- [x] 文件结构验证完成 | ||
| 86 | -- [x] PYTHONPATH 设置正确 | ||
| 87 | - | ||
| 88 | -## 可以运行了! | ||
| 89 | - | ||
| 90 | -```bash | ||
| 91 | -cd /home/tw/recommendation/offline_tasks | ||
| 92 | -bash run.sh | ||
| 93 | -``` | ||
| 94 | - | ||
| 95 | -所有 Task 3, Task 5, Task 6 的问题都已解决! | ||
| 96 | - |
offline_tasks/i2i_content_pic_analysis.md deleted
| @@ -1,167 +0,0 @@ | @@ -1,167 +0,0 @@ | ||
| 1 | -# i2i_content_pic 零产出原因分析 | ||
| 2 | - | ||
| 3 | -## 📋 问题描述 | ||
| 4 | - | ||
| 5 | -`output/i2i_content_pic_20251022.txt` 文件大小为0字节,没有产生任何图片向量相似度索引数据。 | ||
| 6 | - | ||
| 7 | -## 🔍 原因分析 | ||
| 8 | - | ||
| 9 | -### 1. ES数据检查结果 | ||
| 10 | - | ||
| 11 | -**检查命令:** | ||
| 12 | -```bash | ||
| 13 | -curl -u "essa:4hOaLaf41y2VuI8y" "http://localhost:9200/spu/_count" \ | ||
| 14 | - -H 'Content-Type: application/json' \ | ||
| 15 | - -d '{"query": {"exists": {"field": "embedding_pic_h14"}}}' | ||
| 16 | -``` | ||
| 17 | - | ||
| 18 | -**结果:** | ||
| 19 | -```json | ||
| 20 | -{"count": 0} | ||
| 21 | -``` | ||
| 22 | - | ||
| 23 | -### 2. ES Mapping 检查 | ||
| 24 | - | ||
| 25 | -**字段定义存在:** | ||
| 26 | -```json | ||
| 27 | -{ | ||
| 28 | - "embedding_pic_h14": { | ||
| 29 | - "type": "nested", | ||
| 30 | - "properties": { | ||
| 31 | - "url": { | ||
| 32 | - "type": "text" | ||
| 33 | - }, | ||
| 34 | - "vector": { | ||
| 35 | - "type": "dense_vector", | ||
| 36 | - "dims": 1024, | ||
| 37 | - "index": true, | ||
| 38 | - "similarity": "dot_product" | ||
| 39 | - } | ||
| 40 | - } | ||
| 41 | - } | ||
| 42 | -} | ||
| 43 | -``` | ||
| 44 | - | ||
| 45 | -### 3. 脚本执行情况 | ||
| 46 | - | ||
| 47 | -从日志 `logs/debug/i2i_content_similar_20251022_015349.log` 可以看到: | ||
| 48 | - | ||
| 49 | -- **活跃商品数:** 172,049 个 | ||
| 50 | -- **名称向量索引产出:** 127,511 个商品 | ||
| 51 | -- **图片向量索引产出:** 0 个商品 | ||
| 52 | - | ||
| 53 | -脚本正常运行,但因为ES中没有图片向量数据,所以在代码的以下位置被跳过: | ||
| 54 | - | ||
| 55 | -```python | ||
| 56 | -# i2i_content_similar.py 第183-192行 | ||
| 57 | -elif vector_field == 'embedding_pic_h14': | ||
| 58 | - pic_data = item_data.get('embedding_pic_h14') | ||
| 59 | - if pic_data and isinstance(pic_data, list) and len(pic_data) > 0: | ||
| 60 | - query_vector = pic_data[0].get('vector') if isinstance(pic_data[0], dict) else None | ||
| 61 | - else: | ||
| 62 | - query_vector = None | ||
| 63 | - | ||
| 64 | -if not query_vector: | ||
| 65 | - continue # 跳过没有向量的商品 | ||
| 66 | -``` | ||
| 67 | - | ||
| 68 | -## 🎯 结论 | ||
| 69 | - | ||
| 70 | -**核心原因:** Elasticsearch索引中没有任何商品的图片向量(`embedding_pic_h14`)数据。 | ||
| 71 | - | ||
| 72 | -这不是代码问题,而是**数据缺失问题**。图片向量数据尚未生成或导入到ES中。 | ||
| 73 | - | ||
| 74 | -## 💡 解决方案 | ||
| 75 | - | ||
| 76 | -### 方案1:生成图片向量数据(推荐) | ||
| 77 | - | ||
| 78 | -需要开发或运行图片向量生成流程: | ||
| 79 | - | ||
| 80 | -1. **采集商品图片** | ||
| 81 | - - 从商品数据库获取图片URL | ||
| 82 | - - 下载或访问图片资源 | ||
| 83 | - | ||
| 84 | -2. **生成图片向量** | ||
| 85 | - - 使用图像embedding模型(如CLIP H/14) | ||
| 86 | - - 将图片转换为1024维向量 | ||
| 87 | - | ||
| 88 | -3. **导入ES** | ||
| 89 | - - 更新商品文档,添加 `embedding_pic_h14` 字段 | ||
| 90 | - - 格式:`[{"url": "图片URL", "vector": [1024维向量]}]` | ||
| 91 | - | ||
| 92 | -### 方案2:暂时禁用图片向量索引 | ||
| 93 | - | ||
| 94 | -如果短期内无法生成图片向量,可以: | ||
| 95 | - | ||
| 96 | -**修改 `i2i_content_similar.py`:** | ||
| 97 | - | ||
| 98 | -```python | ||
| 99 | -# 第280-286行,注释掉图片向量索引生成 | ||
| 100 | -# log_processing_step(logger, "生成基于图片向量的相似索引") | ||
| 101 | -# pic_result = generate_similarity_index( | ||
| 102 | -# es, active_items, 'embedding_pic_h14', 'pic', logger | ||
| 103 | -# ) | ||
| 104 | -# pic_output = os.path.join(OUTPUT_DIR, f'i2i_content_pic_{date_str}.txt') | ||
| 105 | -# save_index_file(pic_result, es, pic_output, logger) | ||
| 106 | - | ||
| 107 | -logger.info("⚠️ 跳过图片向量索引生成(ES中无图片向量数据)") | ||
| 108 | -``` | ||
| 109 | - | ||
| 110 | -**修改 `load_index_to_redis.py`:** | ||
| 111 | - | ||
| 112 | -```python | ||
| 113 | -# 第87行,从加载列表中移除 content_pic | ||
| 114 | -i2i_types = ['swing', 'session_w2v', 'deepwalk', 'content_name'] # 移除 'content_pic' | ||
| 115 | -``` | ||
| 116 | - | ||
| 117 | -### 方案3:检查是否有其他图片向量字段 | ||
| 118 | - | ||
| 119 | -如果图片向量使用了其他字段名,需要: | ||
| 120 | - | ||
| 121 | -1. 检查ES mapping中是否有其他图片相关的向量字段 | ||
| 122 | -2. 更新脚本中的字段名配置 | ||
| 123 | - | ||
| 124 | -## 📊 当前数据统计 | ||
| 125 | - | ||
| 126 | -| 向量类型 | ES中有数据的商品数 | 索引产出数 | 状态 | | ||
| 127 | -|---------|------------------|-----------|------| | ||
| 128 | -| 名称向量 (embedding_name_zh) | ~172,000 | 127,511 | ✅ 正常 | | ||
| 129 | -| 图片向量 (embedding_pic_h14) | 0 | 0 | ❌ 无数据 | | ||
| 130 | - | ||
| 131 | -## 🔄 后续建议 | ||
| 132 | - | ||
| 133 | -1. **确认业务需求:** 是否真的需要基于图片的相似推荐? | ||
| 134 | -2. **评估优先级:** 图片向量生成的成本和收益 | ||
| 135 | -3. **制定计划:** 如果需要,制定图片向量生成的技术方案和时间表 | ||
| 136 | -4. **更新文档:** 在相关文档中说明 `i2i_content_pic` 的状态 | ||
| 137 | - | ||
| 138 | -## ⚙️ 检查脚本 | ||
| 139 | - | ||
| 140 | -可以使用以下脚本快速检查ES中的向量数据情况: | ||
| 141 | - | ||
| 142 | -```bash | ||
| 143 | -#!/bin/bash | ||
| 144 | -echo "=== ES向量数据检查 ===" | ||
| 145 | -echo "" | ||
| 146 | -echo "1. 名称向量 (embedding_name_zh):" | ||
| 147 | -curl -s -u "essa:4hOaLaf41y2VuI8y" "http://localhost:9200/spu/_count" \ | ||
| 148 | - -H 'Content-Type: application/json' \ | ||
| 149 | - -d '{"query": {"exists": {"field": "embedding_name_zh"}}}' | python3 -m json.tool | ||
| 150 | - | ||
| 151 | -echo "" | ||
| 152 | -echo "2. 图片向量 (embedding_pic_h14):" | ||
| 153 | -curl -s -u "essa:4hOaLaf41y2VuI8y" "http://localhost:9200/spu/_count" \ | ||
| 154 | - -H 'Content-Type: application/json' \ | ||
| 155 | - -d '{"query": {"exists": {"field": "embedding_pic_h14"}}}' | python3 -m json.tool | ||
| 156 | - | ||
| 157 | -echo "" | ||
| 158 | -echo "3. 总商品数:" | ||
| 159 | -curl -s -u "essa:4hOaLaf41y2VuI8y" "http://localhost:9200/spu/_count" | python3 -m json.tool | ||
| 160 | -``` | ||
| 161 | - | ||
| 162 | -保存为 `check_es_vectors.sh` 并执行: | ||
| 163 | -```bash | ||
| 164 | -chmod +x check_es_vectors.sh | ||
| 165 | -./check_es_vectors.sh | ||
| 166 | -``` | ||
| 167 | - |