Blame view

scripts/evaluation/README_Requirement_zh.md 5.93 KB
267920e5   tangwang   eval docs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
  参考资料:
  
  1. 搜索接口:
  
  ```bash
  export BASE_URL="${BASE_URL:-http://localhost:6002}"
  export TENANT_ID="${TENANT_ID:-163}"   # 改成你的租户ID
  ```
  ```bash
  curl -sS "$BASE_URL/search/" \
    -H "Content-Type: application/json" \
    -H "X-Tenant-ID: $TENANT_ID" \
    -d '{
      "query": "芭比娃娃",
      "size": 20,
      "from": 0,
      "language": "zh"
    }'
  ```
  
  response:
  {
    "results": [
      {
        "spu_id": "12345",
        "title": "芭比时尚娃娃",
        "image_url": "https://example.com/image.jpg",
        "specifications":[],
        "skus":[{"sku_id":" ...
  ...
  
  2. 重排服务:
  curl -X POST "http://localhost:6007/rerank" \
    -H "Content-Type: application/json" \
    -d '{
      "query": "玩具 芭比",
      "docs": ["12PCS 6 Types of Dolls with Bottles", "纯棉T恤 短袖"],
      "top_n":386,
      "normalize": true
    }'
  
  
  3. 基于指定字段查询:es_debug_search.py
  
  
  主要任务:
  1. 评估工具的建立:
  注意判断结果好坏,要用统一的评估工具,不要对每个query设定关键词匹配的规则来判断是否符合要求,这样不可扩展,这种方式且容易有误判还是复杂,并且不好扩展到其他搜索词。
  因此要做一个搜索结果评估工具、多个结果对比的工具,供后面的标注集合构建工具调用。工具内部实现可以是调用大模型来判断,说清楚什么叫高相关、基本相关、不相关:
  
  prompt:
  ```bash
  你是一个电商搜索结果相关性评估助手。请根据用户查询(query)和每个商品的信息,输出该商品的相关性等级。
  
  ## 相关性等级标准
  Exact 完全相关 — 完全匹配用户搜索需求。
  Partial 部分相关 — 主意图满足(同品类或相近用途,基本上符合搜索意图),但次要属性(如颜色、风格、尺码等)跟用户需求有偏差或无法确认。
  Irrelevant 不相关 — 品类或用途不符,主诉求未满足。
  
  1. {title1} {option1_value1} {option2_value1} {option3_value1}
  2. {title2} {option1_value2} {option2_value2}, {option3_value2}
  ...
  50. {title50} {option1_value50} {option2_value50} {option3_value50}
  
  ## 输出格式
  严格输出 {input_nums} 行,每行仅Exact / Partial / Irrelevant三者之一。按顺序对应上述 50 个商品。不要输出任何其他任何信息
  ```
  
  
  2. 测试集(结果标注)建立:
  @queries/queries.txt
  
  对其中每一个query:
  1. 召回:
  1)参考搜索接口 召回1k结果。
  2)遍历全库,得到每个spu的title,请求重排模型,进行全排序,得到top1w结果。注意重排模型打分一定要做缓存(本地文件缓存即可。query+title->rerank_score)。
  2. 对以上结果,拆分batch请求llm,进行结果标注。
  3. 请你思考如何存储结果、并利于以后的对比、使用、展示。
  
  
  3. 评估工具页面:
  请你设计一个搜索评估交互页面。端口6010。
  页面主题:上方是搜索框,如果发起搜索,那么下方给出本次结果的总体指标以及top100结果(允许翻页)
  
  总体指标:
  | 指标 | 含义 |
  |------|------|
  | **P@5, P@10, P@20, P@50** | 前 K 个结果中「仅 3 相关」的精确率 |
  | **P@5_2_3 ~ P@50_2_3** | 前 K 个结果中「2 和 3 都算相关」的精确率 |
  | **MAP_3** | 仅 3 相关时的 Average Precision(单 query) |
  | **MAP_2_3** | 2 和 3 都相关时的 Average Precision |
  
  结果列表:
  按行列下来,每行左侧给每个结果找到标注值(三个等级。对结果也可以颜色标记),展示图片,title.en+title.en+首个sku的option1/2/3_value(分三行展示,这三行和左侧的图片并列)
  
  
  评测页面最左侧:
  queries默认是queries/queries.txt,填入左侧列表框,点击其中任何一个发起搜索。
  
  4. 批量评估工具
  
  给一个批量执行脚本,
  
  这里要新增一个批量评估的页面。点击批量评估的按钮,对所有搜索词依次发起搜索,最后汇总总体的评估指标,生成报告,报告名称带上时间标记和一些关键信息。并且记录当时的主搜索程序的config.yaml。
  你需要精心地设计如何切换两种模式,通过同一个端口承载这两种不同交互的内容。
  批量评估关注的是所有搜索词总体的评估指标。
  需要记录测试环境时间以及当时的配置文件,以及对应的结果。要保存历次的评估记录,并能查到每一次评估结果对应的配置文件有相关的指标
  
432d1c88   tangwang   评估框架
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
  以上是我的总体设计,但有不周全的地方。你要站在更高的层次理解我的需求,你有足够的自由可以适当调整设计,基于你所了解的自动化搜索评估框架的最佳实践,做出更优秀的设计和更好的实现。
  
  
  
  
  
  
  
  
  
  1. 请仔细检验这个标注集的质量,如果质量不符合要求,那么你要优化工具,迭代直至标注集的结果质量足够高,可以以此为自动化工具来评估检索效果,对检索效果形成指导性意见。
  2. 在结果标注集的质量足够好,批量评估工具足够好用,并且经过你的试用,能判断出搜索质量好坏的情况下,开始真正的动手检索效果调优:基于这个50条query的结果标注集和批量评估工具,对融合公式进行调参。请你先精心地设计实验,设计几组参数,对几组参数分别修改config.yaml、重启(./restart.sh backend)、跑批量评估、收集结果。
  注意评估的过程中,如果发现工具不好用,发现日志不全,发现可以通过修改工具或者日志来提高效率,都可以先做这些,根据完善。
  注意你是代码的总负责人,你有任何权限来满足你进行检索效果调优的需要。你如果发现有其他可能带来更大提升的点,也可以进行实验,你甚至可以修改融合、重排漏斗的代码,来进行实验,以追求更好的结果指标。
  但是注意,因为收到性能和耗时的约束,不要调大reranker模型的输入条数、不要打开精排,耗时方面无法承受两轮reranker模型的调用。