
# 配置模型服务
搜索大模型插件通过模型服务将AI能力集成到Elasticsearch集群中，实现语义向量搜索、语义排序等高级功能。其核心流程是基于业务需求（如语义搜索、智能推荐）定义模型类型（Embedding/Rerank等），并绑定对应的AI服务地址，确保上层应用能通过向量索引正确调用服务接口。
典型应用场景：
- 语义搜索：依赖Embedding模型服务，将文本转换为向量，实现相似性检索。
- 智能推荐：组合使用Embedding模型服务（生成用户/物品向量）和Rerank模型服务，优化推荐结果排序。
 
#### 前提条件
确认Elasticsearch集群已启用搜索大模型插件，操作指导请参见[开启搜索大模型插件](https://support.huaweicloud.com/usermanual-css/css_01_0272.html)。
#### 支持的模型服务
搜索大模型插件支持接入多种模型服务，具体支持的模型服务清单如[表1 支持的模型服务]所示。
 表1支持的模型服务 
| 模型服务          | 模型类型            | 模型服务的功能介绍                |
|:---|:---|:---|
| Embedding模型服务 | semantic_vector | 搜索语义向量化模型，提供将文本转换为向量的功能。 |
| Rerank模型服务    | reorder         | 搜索精排模型，提供对语义查询结果进行精排的功能。 |
   
 #### 获取独享版集群的访问地址
配置模型服务时，会用到搜索大模型的endpoint，即独享版集群的访问地址。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"搜索大模型 \> 独享版集群"。
3. 在集群列表，选择目标集群，在"内网访问地址"列获取并记录集群的内网IP地址，后续配置模型服务需要使用。 一般是"\<host\>:\<port\>"或"\<host\>:\<port\>,\<host\>:\<port\>"样式。
   图1获取集群访问地址   
   ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002477835644.png "点击放大") 
 
#### 登录Kibana
登录Kibana进入命令执行页面。Elasticsearch集群支持多种客户端访问，本文仅以CSS服务集成的Kibana为例介绍配置指导。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"集群管理 \> Elasticsearch"。
3. 在集群列表，选择目标集群，单击操作列的"Kibana"，登录Kibana。
4. 在Kibana左侧导航栏选择"Dev Tools"，进入操作页面。 控制台左侧是命令输入框，其右侧的三角形图标为执行按钮，右侧区域则显示执行结果。
   
 
#### 配置模型服务
当模型创建完成后，根据业务需要配置模型服务。下面介绍了各类模型服务的配置指导。
#### 配置Embedding模型服务
在Kibana中执行以下命令，配置Embedding模型服务。其中，模型类型必须是semantic_vector。
```
PUT _inference/model_service/{service_name}
{
  "description": "搜索大模型-语义向量化",
  "service_config": {
    "semantic_vector": {
      "service_urls" : ["http://{endpoint}/app/search/v1/vector"],
      "algorithm": "GRAPH",
      "metric": "inner_product",
      "dimension": "768",
      "timeout_ms": 30000
    }
  }
}
```
表2参数说明 
| 参数             | 是否必选 | 参数类型           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| service_name   | 是    | String         | 模型服务的名称。自定义，如pangu_vector。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| service_urls   | 是    | List\<String\> | 访问模型服务的接口URL。 支持配置多个访问地址，用逗号分隔。 配置格式：http://{endpoint}/app/search/v1/vector，endpoint参考[获取独享版集群的访问地址]获取。 举例：http://192.168.0.85:18088/app/search/v1/vector                                                                                                                                                                                                                                                                                            |
| method         | 否    | String         | 模型服务的访问方法。 由Embedding模型服务决定，搜索大模型使用的是POST，保持默认值即可。 取值范围：POST、GET、PUT 默认值：POST                                                                                                                                                                                                                                                                                                                                                                                                                       |
| algorithm      | 否    | String         | 模型服务支持的向量索引算法。 取值范围： - FLAT：暴力计算，目标向量依次和所有向量进行距离计算，此方法计算量大，召回率100%。适用于对召回准确率要求极高的场景。  - GRAPH：图索引，内嵌深度优化的HNSW算法，主要应用在对性能和精度均有较高要求且单shard中文档数量在千万个以内的场景。   默认值：GRAPH                                                                                                                                |
| metric         | 否    | String         | 计算向量之间距离的度量方式。 取值范围： - euclidean：欧式距离  - inner_product：内积距离  - cosine：余弦距离  - hamming：汉明距离   默认值：inner_product |
| dimension      | 否    | String         | 向量数据维度。 由Embedding模型服务决定，必须配置为768，保持默认值即可。 取值范围：1\~4096 默认值：768                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| timeout_ms     | 否    | int            | 访问模型服务的超时时间，超时会请求失败。 单位：ms（毫秒） 最小值：3000 默认值：10000                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| content_length | 否    | int            | 模型服务支持单个文档属性的最大值，超过最大值将进行文本截断。 默认值：-1（小于0代表不进行长度截断）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| embedding_type | 否    | String         | 配置Embedding模型的查询类型。 取值范围： - query2doc：相似问题搜索问题和答案。  - query2query：相似问题只搜索问题。在FAQ短文本召回场景中，当query召回相似query时，doc不参与检索，建议使用query2query的查询类型。   默认值：query2doc                                                                                                                                                                                                 |
   
#### 配置Rerank模型服务
在Kibana中执行以下命令，配置Rerank模型服务。其中，模型类型必须是reorder。
```
PUT _inference/model_service/{service_name}
{
  "description": "搜索大模型-精排模型",
  "service_config": {
    "reorder": {
      "service_urls": ["http://{endpoint}/app/search/v1/rerank"],
      "timeout_ms": 60000
    }
  }
}
```
表3参数说明 
| 参数             | 是否必选 | 参数类型           | 描述                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| service_name   | 是    | String         | 模型服务的名称。自定义，如pangu_ranking。                                                                                                                                                                                                                                                                                                                               |
| service_urls   | 是    | List\<String\> | 访问模型服务的接口URL。 支持配置多个访问地址，用逗号分隔。 配置格式：http://{endpoint}/app/search/v1/rerank，endpoint参考[获取独享版集群的访问地址]获取。 举例：http://192.168.0.85:18088/app/search/v1/rerank |
| method         | 否    | String         | 模型服务的访问方法。 由Rerank模型服务决定，搜索大模型使用的是POST，保持默认值即可。 取值范围：POST、GET、PUT 默认值：POST                                                                                                                                    |
| timeout_ms     | 否    | int            | 访问模型服务的超时时间，超时会请求失败。 单位：ms（毫秒） 最小值：3000 默认值：10000                                                                                                                                                                |
| content_length | 否    | int            | 模型服务支持单个文档属性的最大值，超过最大值将进行文本截断。 默认值：-1（小于0代表不进行长度截断）                                                                                                                                                                                                                                                        |
   
#### 管理模型服务
搜索大模型插件深度集成Kibana命令行界面（CLI），支持对模型服务进行更新、监控、扩缩容等全生命周期管理。如[表4]所示，可以通过标准CLI命令执行更新（update）、删除（delete）等核心操作管理模型服务。
 表4模型服务管理的核心操作 
| 操作类型                       | API命令                                                                                                                                                                                                                                                                                                                                                                  | 请求示例                                                                                                                                                                                                                                                                                         | 响应示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| 更新模型服务                     | ``` POST  _inference/model_service/{service_name}/update ```                                                                                                                                                                                                                                                                                                           | 更新Embedding模型服务： ``` POST  _inference/model_service/pangu_vector/update { "description": "搜索大模型-语义向量化模型更新", "service_config": { "semantic_vector": { "service_urls": ["http://{endpoint}/app/search/v1/vector"], "timeout_ms": 60000 } } } ``` | 返回更新后的模型服务信息： ``` { "service_name" : "pangu_vector", "service_type" : "remote", "description" : "搜索大模型-语义向量化模型更新", "create_time" : 1747966388508, "service_config" : { "semantic_vector" : { "embedding_type" : "query2doc", "service_urls" : [ "http://{endpoint}/app/search/v1/vector"], "method" : "POST", "timeout_ms" : 60000, "max_conn" : 200, "security" : false, "dimension" : "768", "algorithm" : "GRAPH", "metric" : "inner_product" } } } ```                                         |
| 检查模型服务连通性                  | ``` GET _inference/model_service/{service_name}/check ```                                                                                                                                                                                                                                                                                                              | 检查Embedding模型服务的连通性： ``` GET _inference/model_service/pangu_vector/check ```                                                                                                                                                                  | ``` { "acknowledged" : true } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 查看模型服务                     | - 查看全部模型服务的配置信息 ``` GET _inference/model_service ```   - 查看单个模型服务的配置信息 ``` GET _inference/model_service/{service_name} ```    | 查看Embedding模型服务的配置信息： ``` GET _inference/model_service/pangu_vector ```                                                                                                                                                                         | 返回模型服务信息： ``` { "count" : 1, "model_service_configs" : [ { "service_name" : "pangu_vector", "service_type" : "remote", "description" : "搜索大模型-语义向量化模型", "create_time" : 1747966388508, "service_config" : { "semantic_vector" : { "embedding_type" : "query2doc", "service_urls" : ["http://{endpoint}/app/search/v1/vector"], "method" : "POST", "timeout_ms" : 60000, "max_conn" : 200, "security" : false, "dimension" : "768", "algorithm" : "GRAPH", "metric" : "inner_product" } } } ] } ``` |
| 删除模型服务配置（删除后，索引将无法使用该模型服务） | ``` DELETE _inference/model_service/{service_name} ```                                                                                                                                                                                                                                                                                                                 | 删除Embedding模型服务配置： ``` DELETE _inference/model_service/pangu_vector ```                                                                                                                                                                       | ``` { "acknowledged" : true } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 设置模型服务的数量上限（最多支持创建几个模型服务）  | ``` PUT _cluster/settings { "transient": { "pg_search.inference.max_inference_model_service": 100  //最大值是1000，最小值是1，默认值是100。 } } ```                                                                                                                                                                                                                                   | 设置模型服务的数量上限为10： ``` PUT _cluster/settings { "transient": { "pg_search.inference.max_inference_model_service": 10 } } ```                                                                                                                      | ``` { "acknowledged" : true, "persistent" : { }, "transient" : { "pg_search" : { "inference" : { "max_inference_model_service" : "10" } } } } ```                                                                                                                                                                                                                                                                                                                                                                                                 |
   
