File size: 4,804 Bytes
b8a3ef1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
node_lines:
- node_line_name: retrieve_node_line  # Arbitrary node line name
  nodes:
    - node_type: retrieval
      strategy:
        metrics: [ retrieval_f1, retrieval_recall, retrieval_precision,
                   retrieval_ndcg, retrieval_map, retrieval_mrr ]
        speed_threshold: 10
      top_k: 10
      modules:
        - module_type: bm25
          bm25_tokenizer: [ ko_kiwi ]
        - module_type: vectordb
          embedding_model: openai
          embedding_batch: 256
        - module_type: hybrid_rrf
          weight_range: (4,80)
        - module_type: hybrid_cc
          normalize_method: [ mm, tmm, z, dbsf ]
          weight_range: (0.0, 1.0)
          test_weight_size: 101
    - node_type: passage_augmenter
      strategy:
        metrics: [ retrieval_f1, retrieval_recall, retrieval_precision ]
        speed_threshold: 5
      top_k: 5
      embedding_model: openai
      modules:
        - module_type: pass_passage_augmenter
        - module_type: prev_next_augmenter
          mode: next
    - node_type: passage_reranker
      strategy:
        metrics: [ retrieval_f1, retrieval_recall, retrieval_precision ]
        speed_threshold: 10
      top_k: 5
      modules:
        - module_type: pass_reranker
        - module_type: tart
        - module_type: monot5
        - module_type: upr
        - module_type: rankgpt
        - module_type: colbert_reranker
        - module_type: sentence_transformer_reranker
        - module_type: flag_embedding_reranker
        - module_type: flag_embedding_llm_reranker
        - module_type: openvino_reranker
    - node_type: passage_filter
      strategy:
        metrics: [ retrieval_f1, retrieval_recall, retrieval_precision ]
        speed_threshold: 5
      modules:
        - module_type: pass_passage_filter
        - module_type: similarity_threshold_cutoff
          threshold: 0.85
        - module_type: similarity_percentile_cutoff
          percentile: 0.6
        - module_type: threshold_cutoff
          threshold: 0.85
        - module_type: percentile_cutoff
          percentile: 0.6
    - node_type: passage_compressor
      strategy:
        metrics: [retrieval_token_f1, retrieval_token_recall, retrieval_token_precision]
        speed_threshold: 10
      modules:
        - module_type: pass_compressor
        - module_type: tree_summarize
          llm: openai
          model: gpt-4o-mini
          prompt: | 
            ์—ฌ๋Ÿฌ ๋ฌธ๋งฅ ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.\n
            ---------------------\n
            {context_str}\n
            ---------------------\n
             ์‚ฌ์ „ ์ง€์‹์ด ์•„๋‹Œ ์—ฌ๋Ÿฌ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์Šต๋‹ˆ๋‹ค,
            ์งˆ๋ฌธ์— ๋Œ€๋‹ตํ•˜์„ธ์š”.\n
            ์งˆ๋ฌธ: {query_str}\n
            ๋‹ต๋ณ€:
        - module_type: refine
          llm: openai
          model: gpt-4o-mini
          prompt: |
            ์›๋ž˜ ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: {query_str}
            ๊ธฐ์กด ๋‹ต๋ณ€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: {existing_answer}
            ์•„๋ž˜์—์„œ ๊ธฐ์กด ๋‹ต๋ณ€์„ ์ •์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 
            (ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ) ์•„๋ž˜์— ๋ช‡ ๊ฐ€์ง€ ๋งฅ๋ฝ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ธฐ์กด ๋‹ต๋ณ€์„ ์ •์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
            ------------
            {context_msg}
            ------------
            ์ƒˆ๋กœ์šด ๋ฌธ๋งฅ์ด ์ฃผ์–ด์ง€๋ฉด ๊ธฐ์กด ๋‹ต๋ณ€์„ ์ˆ˜์ •ํ•˜์—ฌ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ •์ œํ•ฉ๋‹ˆ๋‹ค. 
            ๋งฅ๋ฝ์ด ์“ธ๋ชจ ์—†๋‹ค๋ฉด, ๊ธฐ์กด ๋‹ต๋ณ€์„ ๊ทธ๋Œ€๋กœ ๋‹ต๋ณ€ํ•˜์„ธ์š”.
            ์ •์ œ๋œ ๋‹ต๋ณ€:
        - module_type: longllmlingua
- node_line_name: post_retrieve_node_line  # Arbitrary node line name
  nodes:
    - node_type: prompt_maker
      strategy:
        metrics:
          - metric_name: bleu
          - metric_name: meteor
          - metric_name: rouge
          - metric_name: sem_score
            embedding_model: openai
        speed_threshold: 10
        generator_modules:
          - module_type: llama_index_llm
            llm: openai
            model: [gpt-4o-mini]
      modules:
        - module_type: fstring
          prompt: ["์ฃผ์–ด์ง„ passage๋งŒ์„ ์ด์šฉํ•˜์—ฌ question์— ๋”ฐ๋ผ ๋‹ตํ•˜์‹œ์˜ค passage: {retrieved_contents} \n\n Question: {query} \n\n Answer:"]
        - module_type: long_context_reorder
          prompt: ["์ฃผ์–ด์ง„ passage๋งŒ์„ ์ด์šฉํ•˜์—ฌ question์— ๋”ฐ๋ผ ๋‹ตํ•˜์‹œ์˜ค passage: {retrieved_contents} \n\n Question: {query} \n\n Answer:"]
    - node_type: generator
      strategy:
        metrics:
          - metric_name: bleu
          - metric_name: meteor
          - metric_name: rouge
          - metric_name: sem_score
            embedding_model: openai
        speed_threshold: 10
      modules:
        - module_type: llama_index_llm
          llm: [openai]
          model: [gpt-4o-mini]
          temperature: [0.5, 1.0]