目前knn跟query里面是并列的层级，如下：
{
  "size": 400,
  "from": 0,
  "query": {
    "bool": {
      "must": [...
      ],
    }
  },
  "knn": {
    "field": "title_embedding",
    "query_vector": [...],
    "k": 120,
    "num_candidates": 400,
    "boost": 2,
    "_name": "knn_query"
  },
其中query的结构是这样的：  
"query": {
    "bool": {
      "should": [
        {
          "bool": {
            "_name": "base_query", 
\# 原始query
          }
        },
        {
          "bool": {
            "_name": "base_query_trans_zh",
\# 翻译query。有可能是base_query_trans_en，也有可能两者都有
            "boost": 0.75
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
我想把knn放到should里面，和base_query、base_query_trans_zh并列。
另外，现在过滤是在knn里面单独加了一遍：
  "knn": {
    "field": "title_embedding",
    "query_vector": [...],
    "k": 120,
    "num_candidates": 400,
    "boost": 2,
    "_name": "knn_query",
    "filter": {
      "range": {
        "min_price": {
          "gte": 100,
          "lt": 200
        }
      }
    }
  }
现在不需要了。因为knn在query的内层了。共用过滤。

另外：
我需要再增加一个knn。
需要参考文本embedding获得的逻辑，
通过
curl -X POST "http://localhost:6008/embed/clip_text?normalize=true&priority=1" \
  -H "Content-Type: application/json" \
  -d '["纯棉短袖", "street tee"]'
（用 POST /embed/clip_text 生成多模态文本向量。和文本embedding获取方法类似。注意思考代码如何精简，不要冗余。）
得到文本的多模态embedding。
然后在这里补充一个多模态embedding，寻找图片相似的结果，对应的商品图片字段为image_embedding.vector。
重排融合：之前有knn的配置bias和exponential。现在，文本和图片的embedding相似需要融合，融合方式是dis_max，因此需要配置：
1）各自的权重和tie_breaker
2）整个向量方面的权重（bias和exponential）