Blame view

config/config.yaml 13.7 KB
4d824a77   tangwang   所有租户共用一套统一配置.tena...
1
  # Unified Configuration for Multi-Tenant Search Engine
33839b37   tangwang   属性值参与搜索:
2
3
  # 统一配置文件,所有租户共用一套配置
  # 注意:索引结构由 mappings/search_products.json 定义,此文件只配置搜索行为
86d0e83d   tangwang   query翻译,根据源语言是否在索...
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
  #
  # 约定:下列键为必填;进程环境变量可覆盖 infrastructure / runtime 中同名语义项
  #(如 ES_HOST、API_PORT 等),未设置环境变量时使用本文件中的值。
  
  # Process / bind addresses (环境变量 APP_ENV、RUNTIME_ENV、ES_INDEX_NAMESPACE 可覆盖前两者的语义)
  runtime:
    environment: "prod"
    index_namespace: ""
    api_host: "0.0.0.0"
    api_port: 6002
    indexer_host: "0.0.0.0"
    indexer_port: 6004
    embedding_host: "0.0.0.0"
    embedding_port: 6005
    embedding_text_port: 6005
    embedding_image_port: 6008
    translator_host: "127.0.0.1"
    translator_port: 6006
    reranker_host: "127.0.0.1"
    reranker_port: 6007
  
  # 基础设施连接(敏感项优先读环境变量:ES_*、REDIS_*、DB_*、DASHSCOPE_API_KEY、DEEPL_AUTH_KEY)
  infrastructure:
    elasticsearch:
      host: "http://localhost:9200"
      username: null
      password: null
    redis:
      host: "localhost"
      port: 6479
      snapshot_db: 0
      password: null
      socket_timeout: 1
      socket_connect_timeout: 1
      retry_on_timeout: false
      cache_expire_days: 720
      embedding_cache_prefix: "embedding"
      anchor_cache_prefix: "product_anchors"
      anchor_cache_expire_days: 30
    database:
      host: null
      port: 3306
      database: null
      username: null
      password: null
    secrets:
      dashscope_api_key: null
      deepl_auth_key: null
4d824a77   tangwang   所有租户共用一套统一配置.tena...
52
53
54
55
  
  # Elasticsearch Index
  es_index_name: "search_products"
  
86d0e83d   tangwang   query翻译,根据源语言是否在索...
56
57
58
  # 检索域 / 索引列表(可为空列表;每项字段均需显式给出)
  indexes: []
  
86d8358b   tangwang   config optimize
59
60
61
62
  # Config assets
  assets:
    query_rewrite_dictionary_path: "config/dictionaries/query_rewrite.dict"
  
41f0b2e9   tangwang   product_enrich支持并发
63
64
65
66
  # Product content understanding (LLM enrich-content) configuration
  product_enrich:
    max_workers: 40
  
33839b37   tangwang   属性值参与搜索:
67
  # ES Index Settings (基础设置)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
68
69
70
71
72
  es_settings:
    number_of_shards: 1
    number_of_replicas: 0
    refresh_interval: "30s"
  
33839b37   tangwang   属性值参与搜索:
73
  # 字段权重配置(用于搜索时的字段boost)
0536222c   tangwang   query parser优化
74
  # 统一按“字段基名”配置;查询时按实际检索语言动态拼接 .{lang}。
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
75
  # 若需要按某个语言单独调权,也可以加显式 key(例如 title.de: 3.2)。
33839b37   tangwang   属性值参与搜索:
76
  field_boosts:
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
77
    title: 3.0
69881ecb   tangwang   相关性调参、enrich内容解析优化
78
79
80
81
    qanchors: 2.5
    tags: 2.0
    category_name_text: 2.0
    category_path: 2.0
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
82
    brief: 1.5
69881ecb   tangwang   相关性调参、enrich内容解析优化
83
84
85
86
    description: 1.5
    option1_values: 1.5
    option2_values: 1.5
    option3_values: 1.5
33839b37   tangwang   属性值参与搜索:
87
  
33839b37   tangwang   属性值参与搜索:
88
  # Query Configuration(查询配置)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
89
  query_config:
33839b37   tangwang   属性值参与搜索:
90
    # 支持的语言
4d824a77   tangwang   所有租户共用一套统一配置.tena...
91
92
93
    supported_languages:
      - "zh"
      - "en"
2739b281   tangwang   多语言索引调整
94
    default_language: "en"
33839b37   tangwang   属性值参与搜索:
95
    
345d960b   tangwang   1. 删除全局 enable_tr...
96
    # 功能开关(翻译开关由tenant_config控制)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
97
98
    enable_text_embedding: true
    enable_query_rewrite: true
4d824a77   tangwang   所有租户共用一套统一配置.tena...
99
  
86d0e83d   tangwang   query翻译,根据源语言是否在索...
100
101
102
103
104
105
106
107
108
109
110
111
112
    # 查询翻译模型(须与 services.translation.capabilities 中某项一致)
    # 源语种在租户 index_languages 内:主召回可打在源语种字段,用下面三项。
    # zh_to_en_model: "opus-mt-zh-en"
    # en_to_zh_model: "opus-mt-en-zh"
    # default_translation_model: "nllb-200-distilled-600m"
    zh_to_en_model: "deepl"
    en_to_zh_model: "deepl"
    default_translation_model: "deepl"
    # 源语种不在 index_languages:翻译对可检索文本更关键,可单独指定(缺省则与上一组相同)
    zh_to_en_model__source_not_in_index: "deepl"
    en_to_zh_model__source_not_in_index: "deepl"
    default_translation_model__source_not_in_index: "deepl"
  
1556989b   tangwang   query翻译等待超时逻辑
113
114
    # 查询解析阶段:翻译与 query 向量并发执行,共用同一等待预算(毫秒)。
    # 检测语言已在租户 index_languages 内:较短;不在索引语言内:较长(翻译对召回更关键)。
86d0e83d   tangwang   query翻译,根据源语言是否在索...
115
116
    translation_embedding_wait_budget_ms_source_in_index: 500 # 80
    translation_embedding_wait_budget_ms_source_not_in_index: 500 #200
1556989b   tangwang   query翻译等待超时逻辑
117
  
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
118
119
120
121
122
123
    # 动态多语言检索字段配置
    # multilingual_fields 会被拼成 title.{lang}/brief.{lang}/... 形式;
    # shared_fields 为无语言后缀字段。
    search_fields:
      multilingual_fields:
        - "title"
69881ecb   tangwang   相关性调参、enrich内容解析优化
124
        - "qanchors"
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
125
126
        - "category_path"
        - "category_name_text"
69881ecb   tangwang   相关性调参、enrich内容解析优化
127
128
        - "brief"
        - "description"
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
129
130
131
132
133
134
135
136
      shared_fields:
        - "tags"
        - "option1_values"
        - "option2_values"
        - "option3_values"
      core_multilingual_fields:
        - "title"
        - "brief"
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
137
138
        - "category_name_text"
  
0536222c   tangwang   query parser优化
139
    # 统一文本召回策略(主查询 + 翻译查询)
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
140
141
142
    text_query_strategy:
      base_minimum_should_match: "75%"
      translation_minimum_should_match: "75%"
69881ecb   tangwang   相关性调参、enrich内容解析优化
143
144
      translation_boost: 0.75
      tie_breaker_base_query: 0.5
bd96cead   tangwang   1. 动态多语言字段与统一策略配置
145
  
33839b37   tangwang   属性值参与搜索:
146
147
148
    # Embedding字段名称
    text_embedding_field: "title_embedding"
    image_embedding_field: null
325eec03   tangwang   1. 日志、配置基础设施,使用优化
149
  
33839b37   tangwang   属性值参与搜索:
150
151
    # 返回字段配置(_source includes)
    # null表示返回所有字段,[]表示不返回任何字段,列表表示只返回指定字段
a7cc9078   tangwang   sku排序
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
    # 下列字段与 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
180
181
    
    # KNN boost配置(向量召回的boost值)
ef5baa86   tangwang   混杂语言处理
182
    knn_boost: 2.0  # Lower boost for embedding recall
4d824a77   tangwang   所有租户共用一套统一配置.tena...
183
  
4d824a77   tangwang   所有租户共用一套统一配置.tena...
184
185
186
187
  # Function Score配置(ES层打分规则)
  function_score:
    score_mode: "sum"
    boost_mode: "multiply"
4d824a77   tangwang   所有租户共用一套统一配置.tena...
188
189
    functions: []
  
42e3aea6   tangwang   tidy
190
  # 重排配置(provider/URL 在 services.rerank)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
191
  rerank:
5f7d7f09   tangwang   性能测试报告.md
192
    enabled: true
fb973d19   tangwang   configs
193
    rerank_window: 400
42e3aea6   tangwang   tidy
194
    timeout_sec: 15.0
506c39b7   tangwang   feat(search): 统一重...
195
196
    weight_es: 0.4
    weight_ai: 0.6
ff32d894   tangwang   rerank
197
198
    rerank_query_template: "{query}"
    rerank_doc_template: "{title}"
4d824a77   tangwang   所有租户共用一套统一配置.tena...
199
  
42e3aea6   tangwang   tidy
200
201
202
  # 可扩展服务/provider 注册表(单一配置源)
  services:
    translation:
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
203
      service_url: "http://127.0.0.1:6006"
b754fd41   tangwang   图片向量化支持优先级参数
204
      default_model: "nllb-200-distilled-600m"
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
205
      default_scene: "general"
42e3aea6   tangwang   tidy
206
      timeout_sec: 10.0
d4cadc13   tangwang   翻译重构
207
      cache:
d4cadc13   tangwang   翻译重构
208
209
        ttl_seconds: 62208000
        sliding_expiration: true
8140e942   tangwang   translator model ...
210
211
212
213
214
215
216
217
218
219
220
        # When false, cache keys are exact-match per request model only (ignores model_quality_tiers for lookups).
        enable_model_quality_tier_cache: true
        # Higher tier = better quality. Multiple models may share one tier (同级).
        # A request may reuse Redis keys from models with tier > A or tier == A (not from lower tiers).
        model_quality_tiers:
          deepl: 30
          qwen-mt: 30
          llm: 30
          nllb-200-distilled-600m: 20
          opus-mt-zh-en: 10
          opus-mt-en-zh: 10
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
221
      capabilities:
d4cadc13   tangwang   翻译重构
222
        qwen-mt:
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
223
          enabled: true
0fd2f875   tangwang   translate
224
          backend: "qwen_mt"
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
225
          model: "qwen-mt-flash"
0fd2f875   tangwang   translate
226
          base_url: "https://dashscope-us.aliyuncs.com/compatible-mode/v1"
42e3aea6   tangwang   tidy
227
          timeout_sec: 10.0
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
228
          use_cache: true
a0a173ae   tangwang   last
229
        llm:
5e4dc8e4   tangwang   翻译架构按“一个翻译服务 +
230
          enabled: true
0fd2f875   tangwang   translate
231
          backend: "llm"
a0a173ae   tangwang   last
232
          model: "qwen-flash"
0fd2f875   tangwang   translate
233
          base_url: "https://dashscope-us.aliyuncs.com/compatible-mode/v1"
a0a173ae   tangwang   last
234
          timeout_sec: 30.0
cd4ce66d   tangwang   trans logs
235
          use_cache: true
d4cadc13   tangwang   翻译重构
236
        deepl:
cd4ce66d   tangwang   trans logs
237
          enabled: true
0fd2f875   tangwang   translate
238
239
          backend: "deepl"
          api_url: "https://api.deepl.com/v2/translate"
d4cadc13   tangwang   翻译重构
240
          timeout_sec: 10.0
d4cadc13   tangwang   翻译重构
241
          glossary_id: ""
cd4ce66d   tangwang   trans logs
242
          use_cache: true
0fd2f875   tangwang   translate
243
244
245
246
247
        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
248
249
250
251
          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...
252
          ct2_inter_threads: 4
ea293660   tangwang   CTranslate2
253
          ct2_intra_threads: 0
46ce858d   tangwang   在NLLB模型的 /data/sa...
254
          ct2_max_queued_batches: 32
ea293660   tangwang   CTranslate2
255
          ct2_batch_type: "examples"
46ce858d   tangwang   在NLLB模型的 /data/sa...
256
257
258
          ct2_decoding_length_mode: "source"
          ct2_decoding_length_extra: 8
          ct2_decoding_length_min: 32
0fd2f875   tangwang   translate
259
260
          device: "cuda"
          torch_dtype: "float16"
4747e2f4   tangwang   embedding perform...
261
          batch_size: 64
0fd2f875   tangwang   translate
262
          max_input_length: 256
3eff49b7   tangwang   trans nllb-200-di...
263
          max_new_tokens: 64
0fd2f875   tangwang   translate
264
          num_beams: 1
cd4ce66d   tangwang   trans logs
265
          use_cache: true
0fd2f875   tangwang   translate
266
267
268
269
270
        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
271
272
273
274
275
276
277
278
          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
279
280
281
282
283
284
          device: "cuda"
          torch_dtype: "float16"
          batch_size: 16
          max_input_length: 256
          max_new_tokens: 256
          num_beams: 1
cd4ce66d   tangwang   trans logs
285
          use_cache: true
0fd2f875   tangwang   translate
286
287
288
289
290
        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
291
292
293
294
295
296
297
298
          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
299
300
301
302
303
304
          device: "cuda"
          torch_dtype: "float16"
          batch_size: 16
          max_input_length: 256
          max_new_tokens: 256
          num_beams: 1
cd4ce66d   tangwang   trans logs
305
          use_cache: true
42e3aea6   tangwang   tidy
306
    embedding:
950a640e   tangwang   embeddings
307
      provider: "http"  # http
42e3aea6   tangwang   tidy
308
309
      providers:
        http:
7214c2e7   tangwang   mplemented**
310
311
          text_base_url: "http://127.0.0.1:6005"
          image_base_url: "http://127.0.0.1:6008"
07cf5a93   tangwang   START_EMBEDDING=...
312
      # 服务内文本后端(embedding 进程启动时读取)
efd435cf   tangwang   tei性能调优:
313
      backend: "tei"  # tei | local_st
07cf5a93   tangwang   START_EMBEDDING=...
314
315
316
      backends:
        tei:
          base_url: "http://127.0.0.1:8080"
efd435cf   tangwang   tei性能调优:
317
          timeout_sec: 20
07cf5a93   tangwang   START_EMBEDDING=...
318
319
320
321
322
323
          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
324
325
326
327
328
329
330
331
332
333
334
335
336
      # 服务内图片后端(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
337
    rerank:
701ae503   tangwang   docs
338
      provider: "http"
42e3aea6   tangwang   tidy
339
340
341
342
      base_url: "http://127.0.0.1:6007"
      providers:
        http:
          base_url: "http://127.0.0.1:6007"
701ae503   tangwang   docs
343
          service_url: "http://127.0.0.1:6007/rerank"
86d8358b   tangwang   config optimize
344
345
346
      request:
        max_docs: 1000
        normalize: true
701ae503   tangwang   docs
347
      # 服务内后端(reranker 进程启动时读取)
fb973d19   tangwang   configs
348
      backend: "qwen3_vllm"  # bge | qwen3_vllm | qwen3_transformers | dashscope_rerank
701ae503   tangwang   docs
349
350
351
352
353
354
      backends:
        bge:
          model_name: "BAAI/bge-reranker-v2-m3"
          device: null
          use_fp16: true
          batch_size: 64
00c8ddb9   tangwang   suggest rank opti...
355
          max_length: 160
701ae503   tangwang   docs
356
357
358
359
360
          cache_dir: "./model_cache"
          enable_warmup: true
        qwen3_vllm:
          model_name: "Qwen/Qwen3-Reranker-0.6B"
          engine: "vllm"
00c8ddb9   tangwang   suggest rank opti...
361
          max_model_len: 160
701ae503   tangwang   docs
362
          tensor_parallel_size: 1
ef5baa86   tangwang   混杂语言处理
363
          gpu_memory_utilization: 0.20
07cf5a93   tangwang   START_EMBEDDING=...
364
          dtype: "float16"
bc089b43   tangwang   refactor(reranker...
365
366
          enable_prefix_caching: true
          enforce_eager: false
00c8ddb9   tangwang   suggest rank opti...
367
          infer_batch_size: 100
9f5994b4   tangwang   reranker
368
          sort_by_doc_length: true
fb973d19   tangwang   configs
369
370
371
          # "rank products by given query" 比 “Given a query, score the product for relevance” 更好点
          instruction: "rank products by given query" 
          # instruction: "Given a query, score the product for relevance"
d31c7f65   tangwang   补充云服务reranker
372
373
        qwen3_transformers:
          model_name: "Qwen/Qwen3-Reranker-0.6B"
77bfa7e3   tangwang   query translate
374
          instruction: "rank products by given query"
fb973d19   tangwang   configs
375
          # instruction: "Score the product’s relevance to the given query"
d31c7f65   tangwang   补充云服务reranker
376
377
378
          max_length: 8192
          batch_size: 64
          use_fp16: true
fb973d19   tangwang   configs
379
380
          # sdpa:默认无需 flash-attn;若已安装 flash_attn 可改为 flash_attention_2
          attn_implementation: "sdpa"
d31c7f65   tangwang   补充云服务reranker
381
382
383
384
385
386
387
        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
388
389
          api_key_env: "RERANK_DASHSCOPE_API_KEY_CN"
          timeout_sec: 10.0 # 
d31c7f65   tangwang   补充云服务reranker
390
          top_n_cap: 0   # 0 表示 top_n=当前请求文档数;>0 则限制 top_n 上限
0d3e73ba   tangwang   rerank mini batch
391
          batchsize: 64 # 0 关闭;>0 启用并发小包调度(top_n/top_n_cap 仍生效,分包后全局截断)
d31c7f65   tangwang   补充云服务reranker
392
393
394
          instruct: "Given a shopping query, rank product titles by relevance"
          max_retries: 2
          retry_backoff_sec: 0.2
42e3aea6   tangwang   tidy
395
  
cadc77b6   tangwang   索引字段名、变量名、API数据结构...
396
  # SPU配置(已启用,使用嵌套skus)
4d824a77   tangwang   所有租户共用一套统一配置.tena...
397
398
  spu_config:
    enabled: true
cadc77b6   tangwang   索引字段名、变量名、API数据结构...
399
    spu_field: "spu_id"
4d824a77   tangwang   所有租户共用一套统一配置.tena...
400
    inner_hits_size: 10
33839b37   tangwang   属性值参与搜索:
401
402
403
    # 配置哪些option维度参与检索(进索引、以及在线搜索)
    # 格式为list,选择option1/option2/option3中的一个或多个
    searchable_option_dimensions: ['option1', 'option2', 'option3']
0064e946   tangwang   feat: 增量索引服务、租户配置...
404
405
  
  # 租户配置(Tenant Configuration)
038e4e2f   tangwang   refactor(i18n): t...
406
  # 每个租户可配置主语言 primary_language 与索引语言 index_languages(主市场语言,商家可勾选)
6f7840cf   tangwang   refactor: rename ...
407
  # 默认 index_languages: [en, zh],可配置为任意 SOURCE_LANG_CODE_MAP.keys() 的子集
0064e946   tangwang   feat: 增量索引服务、租户配置...
408
  tenant_config:
0064e946   tangwang   feat: 增量索引服务、租户配置...
409
    default:
2739b281   tangwang   多语言索引调整
410
      primary_language: "en"
038e4e2f   tangwang   refactor(i18n): t...
411
      index_languages: ["en", "zh"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
412
413
414
    tenants:
      "1":
        primary_language: "zh"
038e4e2f   tangwang   refactor(i18n): t...
415
        index_languages: ["zh", "en"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
416
417
      "2":
        primary_language: "en"
038e4e2f   tangwang   refactor(i18n): t...
418
        index_languages: ["en", "zh"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
419
420
      "3":
        primary_language: "zh"
038e4e2f   tangwang   refactor(i18n): t...
421
        index_languages: ["zh", "en"]
0064e946   tangwang   feat: 增量索引服务、租户配置...
422
423
      "162":
        primary_language: "zh"
038e4e2f   tangwang   refactor(i18n): t...
424
        index_languages: ["zh", "en"]
cff5e86f   tangwang   reindex
425
426
      "170":
        primary_language: "en"
038e4e2f   tangwang   refactor(i18n): t...
427
        index_languages: ["en", "zh"]