Commit 3b35f139cb67b5c0f1c5427728555eea350647a3

Authored by tangwang
1 parent 1c5366f5

search evalution

config/config.yaml
... ... @@ -512,7 +512,7 @@ services:
512 512 dtype: "float16"
513 513 enable_prefix_caching: true
514 514 enforce_eager: false
515   - infer_batch_size: 84
  515 + infer_batch_size: 80
516 516 sort_by_doc_length: true
517 517 # 默认 standard 与 vLLM 官方 Qwen3 reranker 前缀一致
518 518 instruction_format: standard # compact standard
... ...
scripts/evaluation/README.md 0 → 100644
... ... @@ -0,0 +1,124 @@
  1 +参考资料:
  2 +
  3 +1. 搜索接口:
  4 +
  5 +```bash
  6 +export BASE_URL="${BASE_URL:-http://localhost:6002}"
  7 +export TENANT_ID="${TENANT_ID:-163}" # 改成你的租户ID
  8 +```
  9 +```bash
  10 +curl -sS "$BASE_URL/search/" \
  11 + -H "Content-Type: application/json" \
  12 + -H "X-Tenant-ID: $TENANT_ID" \
  13 + -d '{
  14 + "query": "芭比娃娃",
  15 + "size": 20,
  16 + "from": 0,
  17 + "language": "zh"
  18 + }'
  19 +```
  20 +
  21 +response:
  22 +{
  23 + "results": [
  24 + {
  25 + "spu_id": "12345",
  26 + "title": "芭比时尚娃娃",
  27 + "brief": "高品质芭比娃娃",
  28 + "description": "详细描述...",
  29 + "vendor": "美泰",
  30 + "category": "玩具",
  31 + "category_path": "玩具/娃娃/时尚",
  32 + "category_name": "时尚",
  33 + "category_id": "cat_001",
  34 + "category_level": 3,
  35 + "category1_name": "玩具",
  36 + "category2_name": "娃娃",
  37 + "category3_name": "时尚",
  38 + "tags": ["娃娃", "玩具", "女孩"],
  39 + "price": 89.99,
  40 + "compare_at_price": 129.99,
  41 + "currency": "USD",
  42 + "image_url": "https://example.com/image.jpg",
  43 + "in_stock": true,
  44 + "sku_prices": [89.99, 99.99, 109.99],
  45 + "sku_weights": [100, 150, 200],
  46 + "sku_weight_units": ["g", "g", "g"],
  47 + "total_inventory": 500,
  48 + "option1_name": "color",
  49 + "option2_name": "size",
  50 + "option3_name": null,
  51 +
  52 +2. 重排服务:
  53 +curl -X POST "http://localhost:6007/rerank" \
  54 + -H "Content-Type: application/json" \
  55 + -d '{
  56 + "query": "玩具 芭比",
  57 + "docs": ["12PCS 6 Types of Dolls with Bottles", "纯棉T恤 短袖"],
  58 + "top_n":386,
  59 + "normalize": true
  60 + }'
  61 +
  62 +
  63 +3. 基于指定字段查询:es_debug_search.py
  64 +
  65 +
  66 +主要任务:
  67 +1. 评估工具的建立:
  68 +注意判断结果好坏,要用统一的评估工具,不要对每个query设定关键词匹配的规则来判断是否符合要求,这样不可扩展,这种方式且容易有误判还是复杂,并且不好扩展到其他搜索词。
  69 +因此要做一个搜索结果评估工具、多个结果对比的工具,供后面的标注集合构建工具调用。工具内部实现可以是调用大模型来判断,说清楚什么叫高相关、基本相关、不相关:
  70 +
  71 +prompt:
  72 +```bash
  73 +你是一个电商搜索结果相关性评估助手。请根据用户查询(query)和每个商品的信息,输出该商品的相关性等级。
  74 +
  75 +## 相关性等级标准
  76 +Exact 完全相关 — 完全匹配用户搜索需求。
  77 +Partial 部分相关 — 主意图满足(同品类或相近用途),但次要属性(如颜色、风格、尺码等)有偏差或无法确认。
  78 +Irrelevant 不相关 — 品类或用途不符,主诉求未满足。
  79 +
  80 +
  81 +1. {title1} | {option1_value1}, {option2_value1}, {option3_value1}
  82 +2. {title2} | {option1_value2}, {option2_value2}, {option3_value2}
  83 +...
  84 +50. {title50} | {option1_value50}, {option2_value50}, {option3_value50}
  85 +
  86 +## 输出格式
  87 +严格输出 {input_nums} 行,每行仅Exact / Partial / Irrelevant三者之一。按顺序对应上述 50 个商品。不要输出任何其他任何信息
  88 +```
  89 +
  90 +
  91 +2. 测试集(结果标注)建立:
  92 +@queries/queries.txt
  93 +
  94 +对其中每一个query:
  95 +1. 召回:
  96 +1)参考搜索接口 召回1k结果。
  97 +2)遍历全库,得到每个spu的title,请求重排模型,进行全排序,得到top1w结果。注意重排模型打分一定要做缓存(本地文件缓存即可。query+title->rerank_score)。
  98 +2. 对以上结果,拆分batch请求llm,进行结果标注。
  99 +3. 请你思考如何存储结果、并利于以后的对比、使用、展示。
  100 +
  101 +
  102 +3. 评估工具页面:
  103 +请你设计一个搜索评估交互页面。端口6010。
  104 +页面主题:上方是搜索框,如果发起搜索,那么下方给出本次结果的总体指标以及top100结果(允许翻页)
  105 +
  106 +总体指标:
  107 +| 指标 | 含义 |
  108 +|------|------|
  109 +| **P@5, P@10, P@20, P@50** | 前 K 个结果中「仅 3 相关」的精确率 |
  110 +| **P@5_2_3 ~ P@50_2_3** | 前 K 个结果中「2 和 3 都算相关」的精确率 |
  111 +| **MAP_3** | 仅 3 相关时的 Average Precision(单 query) |
  112 +| **MAP_2_3** | 2 和 3 都相关时的 Average Precision |
  113 +
  114 +结果列表:
  115 +按行列下来,每行左侧给每个结果找到标注值(三个等级。对结果也可以颜色标记),展示图片,title.en+title.en+首个sku的option1/2/3_value(分三行展示,这三行和左侧的图片并列)
  116 +
  117 +
  118 +评测页面最左侧:
  119 +queries默认是queries/queries.txt,填入左侧列表框,点击其中任何一个发起搜索。
  120 +
  121 +4. 批量评估工具脚本
  122 +给一个批量执行脚本,跑完所有query,进行各维度结果的汇总,生成报告,报告名称带上时间标记和一些关键信息。
  123 +
  124 +
... ...
scripts/evaluation/ff.md deleted
... ... @@ -1,22 +0,0 @@
1   -
2   -
3   -
4   -- R3 完全相关:该结果的核心意图被满足,标题/副标题/类目/属性不违背意图。
5   -- R2 部分相关:同品类或相近用途,但规格/材质/年龄段/场景等维度的要求有偏差。
6   -- R1 不相关:品类/用途不符,或明显错误/违禁/空结果。
7   -
8   -
9   -## 指标说明
10   -
11   -- **相关性**:1=低,2=中,3=高。
12   -- **「仅 3 相关」**:只把打分 3 视为相关;**「2_3 相关」**:把 2 和 3 都视为相关。
13   -
14   -| 指标 | 含义 |
15   -|------|------|
16   -| **P@5, P@10, P@20, P@50** | 前 K 个结果中「仅 3 相关」的精确率 |
17   -| **P@5_2_3 ~ P@50_2_3** | 前 K 个结果中「2 和 3 都算相关」的精确率 |
18   -| **MAP_3** | 仅 3 相关时的 Average Precision(单 query) |
19   -| **MAP_2_3** | 2 和 3 都相关时的 Average Precision |
20   -| **AUC_3** | 仅 3 相关、1/2 不相关时,随机相关项排在随机不相关项前的概率 |
21   -| **AUC_2_3** | 2 和 3 相关、1 不相关时的同上 AUC |
22   -
scripts/evaluation/queries/queries.txt
... ... @@ -11,33 +11,40 @@ vacation outfit dress
11 11 minimalist top
12 12 streetwear t-shirt
13 13 office casual blouse
14   -街头风T恤
15   -宽松T恤
16   -复古印花T恤
17   -Y2K上衣
18   -情侣T恤
19   -美式复古T恤
20   -重磅棉T恤
21   -修身打底衫
22   -辣妹风短袖
23   -纯欲上衣
24   -正肩白T恤
25 14 波西米亚花朵衬衫
26 15 泡泡袖短袖
27 16 扎染字母T恤
28   -T-shirt Dress
29   -Crop Top
30   -Lace Undershirt
31   -Leopard Print Ripped T-shirt
32   -Breton Stripe T-shirt
33 17 V-Neck Cotton T-shirt
34   -Sweet & Cool Bow T-shirt
35   -Vacation Style T-shirt
36   -Commuter Casual Top
37   -Minimalist Solid T-shirt
38   -Band T-shirt
39 18 Athletic Gym T-shirt
40 19 Plus Size Loose T-shirt
41 20 Korean Style Slim T-shirt
42 21 Basic Layering Top
43   -
  22 +shawl collar cardigan
  23 +swim dress
  24 +毕业典礼定制西装
  25 +colorblock hoodie
  26 +sock boots
  27 +旅行服装
  28 +khaki green backpack
  29 +皱边裙
  30 +高跟鞋
  31 +图案连身衣
  32 +天鹅绒鸡尾酒会礼服
  33 +Wearing small clothes
  34 +gingham dress
  35 +海滩度假装
  36 +vacation outfits
  37 +running shorts
  38 +pink sweater aesthetic
  39 +hiking boots
  40 +宽松开襟羊毛衫
  41 +business casual women
  42 +a-line dress
  43 +涤纶短裤
  44 +哺乳文胸
  45 +Compression Top Spandex
  46 +skiing trip insulated base layer
  47 +high waisted jeans
  48 +无袖夏装
  49 +雪纺衬衫
  50 +convertible zip-off hiking pants
44 51 \ No newline at end of file
... ...