Blame view

config/config.yaml 10.4 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
34
35
36
37
    tags: 1.0
    option1_values: 0.5
    option2_values: 0.5
    option3_values: 0.5
  
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
93
    # 返回字段配置(_source includes)
    # null表示返回所有字段,[]表示不返回任何字段,列表表示只返回指定字段
    source_fields: null
70dab99f   tangwang   add logs
94
95
96
    
    # KNN boost配置(向量召回的boost值)
    knn_boost: 0.25  # Lower boost for embedding recall
4d824a77   tangwang   所有租户共用一套统一配置.tena...
97
  
4d824a77   tangwang   所有租户共用一套统一配置.tena...
98
99
100
101
  # Function Score配置(ES层打分规则)
  function_score:
    score_mode: "sum"
    boost_mode: "multiply"
4d824a77   tangwang   所有租户共用一套统一配置.tena...
102
103
    functions: []
  
42e3aea6   tangwang   tidy
104
  # 重排配置(provider/URL 在 services.rerank)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
105
  rerank:
5f7d7f09   tangwang   性能测试报告.md
106
    enabled: true
c51d254f   tangwang   性能测试
107
    rerank_window: 384
42e3aea6   tangwang   tidy
108
    timeout_sec: 15.0
506c39b7   tangwang   feat(search): 统一重...
109
110
    weight_es: 0.4
    weight_ai: 0.6
ff32d894   tangwang   rerank
111
112
    rerank_query_template: "{query}"
    rerank_doc_template: "{title}"
4d824a77   tangwang   所有租户共用一套统一配置.tena...
113
  
42e3aea6   tangwang   tidy
114
115
116
  # 可扩展服务/provider 注册表(单一配置源)
  services:
    translation:
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
117
      service_url: "http://127.0.0.1:6006"
b754fd41   tangwang   图片向量化支持优先级参数
118
      default_model: "nllb-200-distilled-600m"
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
119
      default_scene: "general"
42e3aea6   tangwang   tidy
120
      timeout_sec: 10.0
d4cadc13   tangwang   翻译重构
121
      cache:
d4cadc13   tangwang   翻译重构
122
123
        ttl_seconds: 62208000
        sliding_expiration: true
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
124
      capabilities:
d4cadc13   tangwang   翻译重构
125
        qwen-mt:
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
126
          enabled: true
0fd2f875   tangwang   translate
127
          backend: "qwen_mt"
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
128
          model: "qwen-mt-flash"
0fd2f875   tangwang   translate
129
          base_url: "https://dashscope-us.aliyuncs.com/compatible-mode/v1"
42e3aea6   tangwang   tidy
130
          timeout_sec: 10.0
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
131
          use_cache: true
a0a173ae   tangwang   last
132
        llm:
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
133
          enabled: true
0fd2f875   tangwang   translate
134
          backend: "llm"
a0a173ae   tangwang   last
135
          model: "qwen-flash"
0fd2f875   tangwang   translate
136
          base_url: "https://dashscope-us.aliyuncs.com/compatible-mode/v1"
a0a173ae   tangwang   last
137
          timeout_sec: 30.0
cd4ce66d   tangwang   trans logs
138
          use_cache: true
d4cadc13   tangwang   翻译重构
139
        deepl:
cd4ce66d   tangwang   trans logs
140
          enabled: true
0fd2f875   tangwang   translate
141
142
          backend: "deepl"
          api_url: "https://api.deepl.com/v2/translate"
d4cadc13   tangwang   翻译重构
143
          timeout_sec: 10.0
d4cadc13   tangwang   翻译重构
144
          glossary_id: ""
cd4ce66d   tangwang   trans logs
145
          use_cache: true
0fd2f875   tangwang   translate
146
147
148
149
150
        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
151
152
153
154
          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...
155
          ct2_inter_threads: 4
ea293660   tangwang   CTranslate2
156
          ct2_intra_threads: 0
46ce858d   tangwang   在NLLB模型的 /data/sa...
157
          ct2_max_queued_batches: 32
ea293660   tangwang   CTranslate2
158
          ct2_batch_type: "examples"
46ce858d   tangwang   在NLLB模型的 /data/sa...
159
160
161
          ct2_decoding_length_mode: "source"
          ct2_decoding_length_extra: 8
          ct2_decoding_length_min: 32
0fd2f875   tangwang   translate
162
163
          device: "cuda"
          torch_dtype: "float16"
4747e2f4   tangwang   embedding perform...
164
          batch_size: 64
0fd2f875   tangwang   translate
165
          max_input_length: 256
3eff49b7   tangwang   trans nllb-200-di...
166
          max_new_tokens: 64
0fd2f875   tangwang   translate
167
          num_beams: 1
cd4ce66d   tangwang   trans logs
168
          use_cache: true
0fd2f875   tangwang   translate
169
170
171
172
173
        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
174
175
176
177
178
179
180
181
          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
182
183
184
185
186
187
          device: "cuda"
          torch_dtype: "float16"
          batch_size: 16
          max_input_length: 256
          max_new_tokens: 256
          num_beams: 1
cd4ce66d   tangwang   trans logs
188
          use_cache: true
0fd2f875   tangwang   translate
189
190
191
192
193
        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
194
195
196
197
198
199
200
201
          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
202
203
204
205
206
207
          device: "cuda"
          torch_dtype: "float16"
          batch_size: 16
          max_input_length: 256
          max_new_tokens: 256
          num_beams: 1
cd4ce66d   tangwang   trans logs
208
          use_cache: true
42e3aea6   tangwang   tidy
209
    embedding:
950a640e   tangwang   embeddings
210
      provider: "http"  # http
42e3aea6   tangwang   tidy
211
212
      providers:
        http:
7214c2e7   tangwang   mplemented**
213
214
          text_base_url: "http://127.0.0.1:6005"
          image_base_url: "http://127.0.0.1:6008"
07cf5a93   tangwang   START_EMBEDDING=...
215
      # 服务内文本后端(embedding 进程启动时读取)
efd435cf   tangwang   tei性能调优:
216
      backend: "tei"  # tei | local_st
07cf5a93   tangwang   START_EMBEDDING=...
217
218
219
      backends:
        tei:
          base_url: "http://127.0.0.1:8080"
efd435cf   tangwang   tei性能调优:
220
          timeout_sec: 20
07cf5a93   tangwang   START_EMBEDDING=...
221
222
223
224
225
226
          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
227
228
229
230
231
232
233
234
235
236
237
238
239
      # 服务内图片后端(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
240
    rerank:
701ae503   tangwang   docs
241
      provider: "http"
42e3aea6   tangwang   tidy
242
243
244
245
      base_url: "http://127.0.0.1:6007"
      providers:
        http:
          base_url: "http://127.0.0.1:6007"
701ae503   tangwang   docs
246
          service_url: "http://127.0.0.1:6007/rerank"
86d8358b   tangwang   config optimize
247
248
249
      request:
        max_docs: 1000
        normalize: true
701ae503   tangwang   docs
250
      # 服务内后端(reranker 进程启动时读取)
22ae00c7   tangwang   product_annotator
251
      backend: "qwen3_vllm"  # bge | qwen3_vllm | qwen3_transformers | dashscope_rerank
701ae503   tangwang   docs
252
253
254
255
256
257
258
259
260
261
262
263
      backends:
        bge:
          model_name: "BAAI/bge-reranker-v2-m3"
          device: null
          use_fp16: true
          batch_size: 64
          max_length: 512
          cache_dir: "./model_cache"
          enable_warmup: true
        qwen3_vllm:
          model_name: "Qwen/Qwen3-Reranker-0.6B"
          engine: "vllm"
07cf5a93   tangwang   START_EMBEDDING=...
264
          max_model_len: 256
701ae503   tangwang   docs
265
          tensor_parallel_size: 1
07cf5a93   tangwang   START_EMBEDDING=...
266
267
          gpu_memory_utilization: 0.36
          dtype: "float16"
bc089b43   tangwang   refactor(reranker...
268
269
          enable_prefix_caching: true
          enforce_eager: false
9f5994b4   tangwang   reranker
270
271
272
          infer_batch_size: 64
          sort_by_doc_length: true
          length_sort_mode: "char"  # char | token
77bfa7e3   tangwang   query translate
273
          instruction: "rank products by given query"
d31c7f65   tangwang   补充云服务reranker
274
275
        qwen3_transformers:
          model_name: "Qwen/Qwen3-Reranker-0.6B"
77bfa7e3   tangwang   query translate
276
          instruction: "rank products by given query"
d31c7f65   tangwang   补充云服务reranker
277
278
279
280
281
282
283
284
285
286
287
          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
288
289
          api_key_env: "RERANK_DASHSCOPE_API_KEY_CN"
          timeout_sec: 10.0 # 
d31c7f65   tangwang   补充云服务reranker
290
          top_n_cap: 0   # 0 表示 top_n=当前请求文档数;>0 则限制 top_n 上限
0d3e73ba   tangwang   rerank mini batch
291
          batchsize: 64 # 0 关闭;>0 启用并发小包调度(top_n/top_n_cap 仍生效,分包后全局截断)
d31c7f65   tangwang   补充云服务reranker
292
293
294
          instruct: "Given a shopping query, rank product titles by relevance"
          max_retries: 2
          retry_backoff_sec: 0.2
42e3aea6   tangwang   tidy
295
  
cadc77b6   tangwang   索引字段名、变量名、API数据结构...
296
  # SPU配置(已启用,使用嵌套skus)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
297
298
  spu_config:
    enabled: true
cadc77b6   tangwang   索引字段名、变量名、API数据结构...
299
    spu_field: "spu_id"
4d824a77   tangwang   所有租户共用一套统一配置.tena...
300
    inner_hits_size: 10
33839b37   tangwang   属性值参与搜索:
301
302
303
    # 配置哪些option维度参与检索(进索引、以及在线搜索)
    # 格式为list,选择option1/option2/option3中的一个或多个
    searchable_option_dimensions: ['option1', 'option2', 'option3']
0064e946   tangwang   feat: 增量索引服务、租户配置...
304
305
  
  # 租户配置(Tenant Configuration)
038e4e2f   tangwang   refactor(i18n): t...
306
  # 每个租户可配置主语言 primary_language 与索引语言 index_languages(主市场语言,商家可勾选)
6f7840cf   tangwang   refactor: rename ...
307
  # 默认 index_languages: [en, zh],可配置为任意 SOURCE_LANG_CODE_MAP.keys() 的子集
0064e946   tangwang   feat: 增量索引服务、租户配置...
308
  tenant_config:
0064e946   tangwang   feat: 增量索引服务、租户配置...
309
    default:
2739b281   tangwang   多语言索引调整
310
      primary_language: "en"
038e4e2f   tangwang   refactor(i18n): t...
311
      index_languages: ["en", "zh"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
312
313
314
    tenants:
      "1":
        primary_language: "zh"
038e4e2f   tangwang   refactor(i18n): t...
315
        index_languages: ["zh", "en"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
316
317
      "2":
        primary_language: "en"
038e4e2f   tangwang   refactor(i18n): t...
318
        index_languages: ["en", "zh"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
319
320
      "3":
        primary_language: "zh"
038e4e2f   tangwang   refactor(i18n): t...
321
        index_languages: ["zh", "en"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
322
323
      "162":
        primary_language: "zh"
038e4e2f   tangwang   refactor(i18n): t...
324
        index_languages: ["zh", "en"]
cff5e86f   tangwang   reindex
325
326
      "170":
        primary_language: "en"
038e4e2f   tangwang   refactor(i18n): t...
327
        index_languages: ["en", "zh"]