Blame view

config/config.yaml 11 KB
4d824a77   tangwang   所有租户共用一套统一配置.tena...
1
  # Unified Configuration for Multi-Tenant Search Engine
33839b37   tangwang   属性值参与搜索:
2
3
  # 统一配置文件,所有租户共用一套配置
  # 注意:索引结构由 mappings/search_products.json 定义,此文件只配置搜索行为
4d824a77   tangwang   所有租户共用一套统一配置.tena...
4
5
6
7
  
  # Elasticsearch Index
  es_index_name: "search_products"
  
86d8358b   tangwang   config optimize
8
9
10
11
  # Config assets
  assets:
    query_rewrite_dictionary_path: "config/dictionaries/query_rewrite.dict"
  
41f0b2e9   tangwang   product_enrich支持并发
12
13
14
15
  # Product content understanding (LLM enrich-content) configuration
  product_enrich:
    max_workers: 40
  
33839b37   tangwang   属性值参与搜索:
16
  # ES Index Settings (基础设置)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
17
18
19
20
21
  es_settings:
    number_of_shards: 1
    number_of_replicas: 0
    refresh_interval: "30s"
  
33839b37   tangwang   属性值参与搜索:
22
  # 字段权重配置(用于搜索时的字段boost)
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
23
24
  # 统一按“字段基名”配置;查询时按 search_langs 动态拼接 .{lang}。
  # 若需要按某个语言单独调权,也可以加显式 key(例如 title.de: 3.2)。
33839b37   tangwang   属性值参与搜索:
25
  field_boosts:
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
26
27
28
    title: 3.0
    brief: 1.5
    description: 1.0
a8261ece   tangwang   检索效果优化
29
    qanchors: 1.5
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
30
31
32
    vendor: 1.5
    category_path: 1.5
    category_name_text: 1.5
33839b37   tangwang   属性值参与搜索:
33
    tags: 1.0
e874eb50   tangwang   docs
34
35
36
    option1_values: 0.6
    option2_values: 0.4
    option3_values: 0.4
33839b37   tangwang   属性值参与搜索:
37
  
33839b37   tangwang   属性值参与搜索:
38
  # Query Configuration(查询配置)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
39
  query_config:
33839b37   tangwang   属性值参与搜索:
40
    # 支持的语言
4d824a77   tangwang   所有租户共用一套统一配置.tena...
41
42
43
    supported_languages:
      - "zh"
      - "en"
2739b281   tangwang   多语言索引调整
44
    default_language: "en"
33839b37   tangwang   属性值参与搜索:
45
    
345d960b   tangwang   1. 删除全局 enable_tr...
46
    # 功能开关(翻译开关由tenant_config控制)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
47
48
    enable_text_embedding: true
    enable_query_rewrite: true
4d824a77   tangwang   所有租户共用一套统一配置.tena...
49
  
1556989b   tangwang   query翻译等待超时逻辑
50
51
52
53
54
    # 查询解析阶段:翻译与 query 向量并发执行,共用同一等待预算(毫秒)。
    # 检测语言已在租户 index_languages 内:较短;不在索引语言内:较长(翻译对召回更关键)。
    translation_embedding_wait_budget_ms_source_in_index: 80
    translation_embedding_wait_budget_ms_source_not_in_index: 200
  
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
    # 动态多语言检索字段配置
    # multilingual_fields 会被拼成 title.{lang}/brief.{lang}/... 形式;
    # shared_fields 为无语言后缀字段。
    search_fields:
      multilingual_fields:
        - "title"
        - "brief"
        - "description"
        - "vendor"
        - "category_path"
        - "category_name_text"
      shared_fields:
        - "tags"
        - "option1_values"
        - "option2_values"
        - "option3_values"
      core_multilingual_fields:
        - "title"
        - "brief"
        - "vendor"
        - "category_name_text"
  
c90f80ed   tangwang   相关性优化
77
    # 统一文本召回策略(主查询 + 翻译查询 + 原始查询兜底)
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
78
79
80
81
82
83
84
    text_query_strategy:
      base_minimum_should_match: "75%"
      translation_minimum_should_match: "75%"
      translation_boost: 0.4
      translation_boost_when_source_missing: 1.0
      source_boost_when_missing: 0.6
      original_query_fallback_boost_when_translation_missing: 0.2
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
85
      tie_breaker_base_query: 0.9
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
86
  
33839b37   tangwang   属性值参与搜索:
87
88
89
    # Embedding字段名称
    text_embedding_field: "title_embedding"
    image_embedding_field: null
325eec03   tangwang   1. 日志、配置基础设施,使用优化
90
  
33839b37   tangwang   属性值参与搜索:
91
92
    # 返回字段配置(_source includes)
    # null表示返回所有字段,[]表示不返回任何字段,列表表示只返回指定字段
a7cc9078   tangwang   sku排序
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
    # 下列字段与 api/result_formatter.py(SpuResult 填充)及 search/searcher.py(SKU 排序/主图替换)一致
    source_fields:
      - spu_id
      - handle
      - title
      - brief
      - description
      - vendor
      - category_name
      - category_name_text
      - category_path
      - category_id
      - category_level
      - category1_name
      - category2_name
      - category3_name
      - tags
      - min_price
      - compare_at_price
      - image_url
      - sku_prices
      - sku_weights
      - sku_weight_units
      - total_inventory
      - option1_name
      - option1_values
      - specifications
      - skus
70dab99f   tangwang   add logs
121
122
123
    
    # KNN boost配置(向量召回的boost值)
    knn_boost: 0.25  # Lower boost for embedding recall
4d824a77   tangwang   所有租户共用一套统一配置.tena...
124
  
4d824a77   tangwang   所有租户共用一套统一配置.tena...
125
126
127
128
  # Function Score配置(ES层打分规则)
  function_score:
    score_mode: "sum"
    boost_mode: "multiply"
4d824a77   tangwang   所有租户共用一套统一配置.tena...
129
130
    functions: []
  
42e3aea6   tangwang   tidy
131
  # 重排配置(provider/URL 在 services.rerank)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
132
  rerank:
5f7d7f09   tangwang   性能测试报告.md
133
    enabled: true
c51d254f   tangwang   性能测试
134
    rerank_window: 384
42e3aea6   tangwang   tidy
135
    timeout_sec: 15.0
506c39b7   tangwang   feat(search): 统一重...
136
137
    weight_es: 0.4
    weight_ai: 0.6
ff32d894   tangwang   rerank
138
139
    rerank_query_template: "{query}"
    rerank_doc_template: "{title}"
4d824a77   tangwang   所有租户共用一套统一配置.tena...
140
  
42e3aea6   tangwang   tidy
141
142
143
  # 可扩展服务/provider 注册表(单一配置源)
  services:
    translation:
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
144
      service_url: "http://127.0.0.1:6006"
b754fd41   tangwang   图片向量化支持优先级参数
145
      default_model: "nllb-200-distilled-600m"
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
146
      default_scene: "general"
42e3aea6   tangwang   tidy
147
      timeout_sec: 10.0
d4cadc13   tangwang   翻译重构
148
      cache:
d4cadc13   tangwang   翻译重构
149
150
        ttl_seconds: 62208000
        sliding_expiration: true
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
151
      capabilities:
d4cadc13   tangwang   翻译重构
152
        qwen-mt:
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
153
          enabled: true
0fd2f875   tangwang   translate
154
          backend: "qwen_mt"
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
155
          model: "qwen-mt-flash"
0fd2f875   tangwang   translate
156
          base_url: "https://dashscope-us.aliyuncs.com/compatible-mode/v1"
42e3aea6   tangwang   tidy
157
          timeout_sec: 10.0
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
158
          use_cache: true
a0a173ae   tangwang   last
159
        llm:
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
160
          enabled: true
0fd2f875   tangwang   translate
161
          backend: "llm"
a0a173ae   tangwang   last
162
          model: "qwen-flash"
0fd2f875   tangwang   translate
163
          base_url: "https://dashscope-us.aliyuncs.com/compatible-mode/v1"
a0a173ae   tangwang   last
164
          timeout_sec: 30.0
cd4ce66d   tangwang   trans logs
165
          use_cache: true
d4cadc13   tangwang   翻译重构
166
        deepl:
cd4ce66d   tangwang   trans logs
167
          enabled: true
0fd2f875   tangwang   translate
168
169
          backend: "deepl"
          api_url: "https://api.deepl.com/v2/translate"
d4cadc13   tangwang   翻译重构
170
          timeout_sec: 10.0
d4cadc13   tangwang   翻译重构
171
          glossary_id: ""
cd4ce66d   tangwang   trans logs
172
          use_cache: true
0fd2f875   tangwang   translate
173
174
175
176
177
        nllb-200-distilled-600m:
          enabled: true
          backend: "local_nllb"
          model_id: "facebook/nllb-200-distilled-600M"
          model_dir: "./models/translation/facebook/nllb-200-distilled-600M"
ea293660   tangwang   CTranslate2
178
179
180
181
          ct2_model_dir: "./models/translation/facebook/nllb-200-distilled-600M/ctranslate2-float16"
          ct2_compute_type: "float16"
          ct2_conversion_quantization: "float16"
          ct2_auto_convert: true
46ce858d   tangwang   在NLLB模型的 /data/sa...
182
          ct2_inter_threads: 4
ea293660   tangwang   CTranslate2
183
          ct2_intra_threads: 0
46ce858d   tangwang   在NLLB模型的 /data/sa...
184
          ct2_max_queued_batches: 32
ea293660   tangwang   CTranslate2
185
          ct2_batch_type: "examples"
46ce858d   tangwang   在NLLB模型的 /data/sa...
186
187
188
          ct2_decoding_length_mode: "source"
          ct2_decoding_length_extra: 8
          ct2_decoding_length_min: 32
0fd2f875   tangwang   translate
189
190
          device: "cuda"
          torch_dtype: "float16"
4747e2f4   tangwang   embedding perform...
191
          batch_size: 64
0fd2f875   tangwang   translate
192
          max_input_length: 256
3eff49b7   tangwang   trans nllb-200-di...
193
          max_new_tokens: 64
0fd2f875   tangwang   translate
194
          num_beams: 1
cd4ce66d   tangwang   trans logs
195
          use_cache: true
0fd2f875   tangwang   translate
196
197
198
199
200
        opus-mt-zh-en:
          enabled: true
          backend: "local_marian"
          model_id: "Helsinki-NLP/opus-mt-zh-en"
          model_dir: "./models/translation/Helsinki-NLP/opus-mt-zh-en"
ea293660   tangwang   CTranslate2
201
202
203
204
205
206
207
208
          ct2_model_dir: "./models/translation/Helsinki-NLP/opus-mt-zh-en/ctranslate2-float16"
          ct2_compute_type: "float16"
          ct2_conversion_quantization: "float16"
          ct2_auto_convert: true
          ct2_inter_threads: 1
          ct2_intra_threads: 0
          ct2_max_queued_batches: 0
          ct2_batch_type: "examples"
0fd2f875   tangwang   translate
209
210
211
212
213
214
          device: "cuda"
          torch_dtype: "float16"
          batch_size: 16
          max_input_length: 256
          max_new_tokens: 256
          num_beams: 1
cd4ce66d   tangwang   trans logs
215
          use_cache: true
0fd2f875   tangwang   translate
216
217
218
219
220
        opus-mt-en-zh:
          enabled: true
          backend: "local_marian"
          model_id: "Helsinki-NLP/opus-mt-en-zh"
          model_dir: "./models/translation/Helsinki-NLP/opus-mt-en-zh"
ea293660   tangwang   CTranslate2
221
222
223
224
225
226
227
228
          ct2_model_dir: "./models/translation/Helsinki-NLP/opus-mt-en-zh/ctranslate2-float16"
          ct2_compute_type: "float16"
          ct2_conversion_quantization: "float16"
          ct2_auto_convert: true
          ct2_inter_threads: 1
          ct2_intra_threads: 0
          ct2_max_queued_batches: 0
          ct2_batch_type: "examples"
0fd2f875   tangwang   translate
229
230
231
232
233
234
          device: "cuda"
          torch_dtype: "float16"
          batch_size: 16
          max_input_length: 256
          max_new_tokens: 256
          num_beams: 1
cd4ce66d   tangwang   trans logs
235
          use_cache: true
42e3aea6   tangwang   tidy
236
    embedding:
950a640e   tangwang   embeddings
237
      provider: "http"  # http
42e3aea6   tangwang   tidy
238
239
      providers:
        http:
7214c2e7   tangwang   mplemented**
240
241
          text_base_url: "http://127.0.0.1:6005"
          image_base_url: "http://127.0.0.1:6008"
07cf5a93   tangwang   START_EMBEDDING=...
242
      # 服务内文本后端(embedding 进程启动时读取)
efd435cf   tangwang   tei性能调优:
243
      backend: "tei"  # tei | local_st
07cf5a93   tangwang   START_EMBEDDING=...
244
245
246
      backends:
        tei:
          base_url: "http://127.0.0.1:8080"
efd435cf   tangwang   tei性能调优:
247
          timeout_sec: 20
07cf5a93   tangwang   START_EMBEDDING=...
248
249
250
251
252
253
          model_id: "Qwen/Qwen3-Embedding-0.6B"
        local_st:
          model_id: "Qwen/Qwen3-Embedding-0.6B"
          device: "cuda"
          batch_size: 32
          normalize_embeddings: true
86d8358b   tangwang   config optimize
254
255
256
257
258
259
260
261
262
263
264
265
266
      # 服务内图片后端(embedding 进程启动时读取)
      image_backend: "clip_as_service"  # clip_as_service | local_cnclip
      image_backends:
        clip_as_service:
          server: "grpc://127.0.0.1:51000"
          model_name: "CN-CLIP/ViT-L-14"
          batch_size: 8
          normalize_embeddings: true
        local_cnclip:
          model_name: "ViT-L-14"
          device: null
          batch_size: 8
          normalize_embeddings: true
42e3aea6   tangwang   tidy
267
    rerank:
701ae503   tangwang   docs
268
      provider: "http"
42e3aea6   tangwang   tidy
269
270
271
272
      base_url: "http://127.0.0.1:6007"
      providers:
        http:
          base_url: "http://127.0.0.1:6007"
701ae503   tangwang   docs
273
          service_url: "http://127.0.0.1:6007/rerank"
86d8358b   tangwang   config optimize
274
275
276
      request:
        max_docs: 1000
        normalize: true
701ae503   tangwang   docs
277
      # 服务内后端(reranker 进程启动时读取)
00c8ddb9   tangwang   suggest rank opti...
278
      backend: "qwen3_transformers"  # bge | qwen3_vllm | qwen3_transformers | dashscope_rerank
701ae503   tangwang   docs
279
280
281
282
283
284
      backends:
        bge:
          model_name: "BAAI/bge-reranker-v2-m3"
          device: null
          use_fp16: true
          batch_size: 64
00c8ddb9   tangwang   suggest rank opti...
285
          max_length: 160
701ae503   tangwang   docs
286
287
288
289
290
          cache_dir: "./model_cache"
          enable_warmup: true
        qwen3_vllm:
          model_name: "Qwen/Qwen3-Reranker-0.6B"
          engine: "vllm"
00c8ddb9   tangwang   suggest rank opti...
291
          max_model_len: 160
701ae503   tangwang   docs
292
          tensor_parallel_size: 1
07cf5a93   tangwang   START_EMBEDDING=...
293
294
          gpu_memory_utilization: 0.36
          dtype: "float16"
bc089b43   tangwang   refactor(reranker...
295
296
          enable_prefix_caching: true
          enforce_eager: false
00c8ddb9   tangwang   suggest rank opti...
297
          infer_batch_size: 100
9f5994b4   tangwang   reranker
298
299
          sort_by_doc_length: true
          length_sort_mode: "char"  # char | token
77bfa7e3   tangwang   query translate
300
          instruction: "rank products by given query"
d31c7f65   tangwang   补充云服务reranker
301
302
        qwen3_transformers:
          model_name: "Qwen/Qwen3-Reranker-0.6B"
77bfa7e3   tangwang   query translate
303
          instruction: "rank products by given query"
d31c7f65   tangwang   补充云服务reranker
304
305
306
307
308
309
310
311
312
313
314
          max_length: 8192
          batch_size: 64
          use_fp16: true
          attn_implementation: "flash_attention_2"
        dashscope_rerank:
          model_name: "qwen3-rerank"
          # 按地域选择 endpoint:
          # 中国:   https://dashscope.aliyuncs.com/compatible-api/v1/reranks
          # 新加坡: https://dashscope-intl.aliyuncs.com/compatible-api/v1/reranks
          # 美国:   https://dashscope-us.aliyuncs.com/compatible-api/v1/reranks
          endpoint: "https://dashscope.aliyuncs.com/compatible-api/v1/reranks"
0d3e73ba   tangwang   rerank mini batch
315
316
          api_key_env: "RERANK_DASHSCOPE_API_KEY_CN"
          timeout_sec: 10.0 # 
d31c7f65   tangwang   补充云服务reranker
317
          top_n_cap: 0   # 0 表示 top_n=当前请求文档数;>0 则限制 top_n 上限
0d3e73ba   tangwang   rerank mini batch
318
          batchsize: 64 # 0 关闭;>0 启用并发小包调度(top_n/top_n_cap 仍生效,分包后全局截断)
d31c7f65   tangwang   补充云服务reranker
319
320
321
          instruct: "Given a shopping query, rank product titles by relevance"
          max_retries: 2
          retry_backoff_sec: 0.2
42e3aea6   tangwang   tidy
322
  
cadc77b6   tangwang   索引字段名、变量名、API数据结构...
323
  # SPU配置(已启用,使用嵌套skus)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
324
325
  spu_config:
    enabled: true
cadc77b6   tangwang   索引字段名、变量名、API数据结构...
326
    spu_field: "spu_id"
4d824a77   tangwang   所有租户共用一套统一配置.tena...
327
    inner_hits_size: 10
33839b37   tangwang   属性值参与搜索:
328
329
330
    # 配置哪些option维度参与检索(进索引、以及在线搜索)
    # 格式为list,选择option1/option2/option3中的一个或多个
    searchable_option_dimensions: ['option1', 'option2', 'option3']
0064e946   tangwang   feat: 增量索引服务、租户配置...
331
332
  
  # 租户配置(Tenant Configuration)
038e4e2f   tangwang   refactor(i18n): t...
333
  # 每个租户可配置主语言 primary_language 与索引语言 index_languages(主市场语言,商家可勾选)
6f7840cf   tangwang   refactor: rename ...
334
  # 默认 index_languages: [en, zh],可配置为任意 SOURCE_LANG_CODE_MAP.keys() 的子集
0064e946   tangwang   feat: 增量索引服务、租户配置...
335
  tenant_config:
0064e946   tangwang   feat: 增量索引服务、租户配置...
336
    default:
2739b281   tangwang   多语言索引调整
337
      primary_language: "en"
038e4e2f   tangwang   refactor(i18n): t...
338
      index_languages: ["en", "zh"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
339
340
341
    tenants:
      "1":
        primary_language: "zh"
038e4e2f   tangwang   refactor(i18n): t...
342
        index_languages: ["zh", "en"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
343
344
      "2":
        primary_language: "en"
038e4e2f   tangwang   refactor(i18n): t...
345
        index_languages: ["en", "zh"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
346
347
      "3":
        primary_language: "zh"
038e4e2f   tangwang   refactor(i18n): t...
348
        index_languages: ["zh", "en"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
349
350
      "162":
        primary_language: "zh"
038e4e2f   tangwang   refactor(i18n): t...
351
        index_languages: ["zh", "en"]
cff5e86f   tangwang   reindex
352
353
      "170":
        primary_language: "en"
038e4e2f   tangwang   refactor(i18n): t...
354
        index_languages: ["en", "zh"]