阿里云开源的AI网关Higress通过集成搜索引擎的实时结果,增强AI模型的回答准确性和时效性。基于Higress构建的MSE云原生网关,为大量企业客户提供了全托管、免运维的高可用网关服务。本文介绍如何基于MSE云原生网关实现ACS集群中自建DeepSeek推理服务的联网搜索能力。
背景介绍
Higress是一款阿里云开源的AI网关,支持国内外主流模型供应商和基于vLLM/ollama等自建的DeepSeek模型,同时支持Kubernetes的Ingress API和Gateway API标准。
Higress提供了大量AI插件,可以一站式增强自建DeepSeek的能力,例如:
- 支持对接夸克/Google/Bing/ElasticSearch等多种搜索引擎来源,实现联网搜索能力。Higress通过集成搜索引擎的实时结果,增强AI模型的回答准确性和时效性。插件会自动将搜索结果注入到提示模板中,并根据配置决定是否在最终回答中添加引用来源。 
- 支持基于Token的限流防护能力,避免自建模型被突发流量打挂,导致长时间不可服务。 
- 支持基于阿里云内容安全服务对大模型输入输出内容进行安全对齐,同时支持数据脱敏功能。 
- 支持基于语义缓存,降低大模型资源开销,并提高响应速度。 
前提条件
- 已创建MSE云原生网关,网关类型为普通实例,支持插件市场功能。 
- 已在ACS集群安装MSE Ingress Controller,由于ACS自动新建的MSE云原生网关为Serverless实例,需要手动选择使用已创建的普通实例。 
- 已使用ACS GPU算力构建DeepSeek推理服务,例如使用以下三种方式中的一种: 
操作步骤
步骤一:创建Ingress资源
- Ingress配置和Service的配置密切相关,具体Service名称可在容器计算服务控制台,进入目标集群后选择查询。以下为在ACS上部署DeepSeek所使用的Service配置示例: - apiVersion: v1 kind: Service metadata: name: deepseek-r1 spec: type: ClusterIP selector: app: deepseek-r1 ports: - protocol: TCP port: 8000 targetPort: 8000
- 则在相同命名空间下,可以创建如下Ingress配置: - apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: deepseek-r1 spec: ingressClassName: mse rules: - http: paths: - backend: service: name: deepseek-r1 port: number: 8000 path: /v1/chat/completions pathType: Exact
您可以通过Kubernetes官方文档查看更多Ingress字段配置说明。
步骤二:配置搜索引擎服务
在MSE云原生网关控制台创建各个搜索引擎API域名对应的服务,以配置Higress对接夸克、Google、Bing等搜索引擎。
- 登录MSE网关管理控制台。 
- 在左侧导航栏选择云原生网关 > 网关列表。 
- 在网关列表页面,单击已经关联ACS的目标网关名称,然后在左侧导航栏,选择路由管理。 
- 在路由管理页面,选择服务标签,并点击创建服务按钮,如下图所示。  
创建夸克搜索引擎对应的服务
夸克搜索引擎API需要API Key才可以使用,可以参考阿里云IQS服务进行申请。
按如下方式进行对应字段配置:
- 服务来源:DNS 域名 
- 服务名称:quark 
- 服务端口:443 
- 域名列表: - cloud-iqs.aliyuncs.com
- TLS 模型:单向 TLS 
- 服务名称标识: - cloud-iqs.aliyuncs.com
创建Google搜索引擎对应的服务
Google搜索引擎API需要API Key才可以使用,需要自行申请。
按如下方式进行对应字段配置:
- 服务来源:DNS 域名 
- 服务名称:google 
- 服务端口:443 
- 域名列表: - customsearch.googleapis.com
- TLS 模型:单向 TLS 
- 服务名称标识: - customsearch.googleapis.com
创建Bing搜索引擎对应的服务
Bing搜索引擎API需要API Key才可以使用,需要自行申请。
按如下方式进行对应字段配置:
- 服务来源:DNS 域名 
- 服务名称:bing 
- 服务端口:443 
- 域名列表: - api.bing.microsoft.com
- TLS 模型:单向 TLS 
- 服务名称标识: - api.bing.microsoft.com
步骤三:配置AI搜索增强插件
您可以在MSE云原生网关的控制台的插件市场中开启AI搜索增强插件:
- 在网关列表页面,单击目标网关名称,然后在左侧导航栏,选择插件市场。 
- 在插件市场页面,搜索框中输入“ai-search”,点击卡片进入。  
- 在ai-search插件页面,标签页选中插件配置,即可通过YAML方式进行配置,具体的配置字段说明可以点击插件文档标签页进行查看。  - 夸克配置- searchFrom: - apiKey: your-quark-api-key # <<< 替换成你自己的 quark api key servicePort: 443 type: quark serviceName: quark.dns needReference: true- 其他搜索引擎配置- searchFrom: - apiKey: your-quark-api-key # <<< 替换成你自己的 quark api key servicePort: 443 type: quark serviceName: quark.dns - apiKey: your-google-api-key # <<< 替换成你自己的 google api key cx: your-search-engine-id servicePort: 443 type: google serviceName: google.dns - apiKey: bing-key # <<< 替换成你自己的 bing api key servicePort: 443 type: bing serviceName: bing.dns # 设置为 true,则会在回答结果中标注引用来源 needReference: true- 完成上述配置后,您可以将自建的DeepSeek模型接入联网搜索。然而此时所有用户请求将原封不动地发给搜索引擎,返回的搜索结果可能并不满足预期。您可以通过开启插件的搜索改写功能,从而获得两大额外附加能力: - 搜索引擎优化:根据原始问题,智能生成一条或多条经过优化的搜索查询语句,以提高搜索引擎的响应质量和相关性。 
- 查询需求识别:智能识别问题是否需要通过搜索引擎来回答,例如需求是翻译文档,系统将自动避免向搜索引擎发起请求,从而提升响应速度和准确性。 
 - 搜索改写的配置方式如下: - searchFrom: - apiKey: your-quark-api-key servicePort: 443 type: quark serviceName: quark.dns needReference: true # ↓ 下面是搜索改写配置 searchRewrite: # 这里复用了上面部署的 r1 模型,搜索重写更建议使用 deepseek-v3 等非推理模型 llmServiceName: deepseek-r1.default.svc.cluster.local llmServicePort: 8000 llmUrl: /v1/chat/completions llmModelName: deepseek-r1
步骤四:验证搜索效果
- 在网关实例的基本概览页面,可以看到网关的入口地址(NLB是域名,CLB是IP)。  
- 获取入口地址后,可以直接使用 - curl命令进行测试:- curl http://<入口地址>/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-r1", "messages": [ { "role": "user", "content": "Is it possible to train an LLM with small dataset and low cost?" } ], "max_tokens": 1024, "temperature": 0.7, "top_p": 0.9, "seed": 10 }'- 以下是使用LobeChat聊天工具对接的效果: 