全部产品
Search
文档中心

人工智能平台 PAI:AI 对话式推荐(AI 导购)

更新时间:Jul 13, 2026

本文为您介绍如何基于 PAI-FeatureStore、大模型服务和搜索召回引擎,在 PAI-Rec 推荐引擎上搭建一条 AI 导购(对话式推荐)链路,涵盖物品表数据准备、商品索引与会话存储配置、模型接入以及配置发布的完整流程。

背景信息

AI 对话推荐是面向自然语言的推荐场景。本文以商品导购作为具体案例来说明改产品的用法。用户不再只输入明确关键词,而是会用“通勤穿、显瘦一点、预算别太高、换成短袖”等口语化方式表达需求。用户可以多轮对话来明确自己的需求。 本产品可以适配不同的 AI对话推荐场景,如各种电商场景、婚纱定制、艺术品推荐,商品导购等场景。并且支持各种小语种,对于跨境业务很友好。

下图给出 AI 导购的三大核心场景,帮助建立整体直观印象:

ai_shopping_intro

图 1:AI 导购三大核心场景——场景化对话购物(“下周去海边度假,推荐一套防晒服穿搭”)、多条件智能筛选(“送女朋友的礼物,预算 200,粉色裙子”)、图文混合搜索(“有类似这种风格的裙子吗?”+上传图片)。每个场景都遵循“用户口语化表达 → AI 理解并匹配真实商品 → 给出带推荐理由的商品”的模式。

一条 AI 导购链路通常包含三步:

  1. 理解用户需求:从自然语言中识别品类、颜色、材质、风格、场景、价格等条件。

  2. 检索真实商品:基于物品表构建检索索引,只从真实商品中选择候选。

  3. 生成导购回复:结合商品信息、历史对话和 prompt,输出推荐理由和商品卡片引用。

从系统实现看,这条链路可以拆成四层,自上而下分工明确:

pairec_infra

图 2:基于 PAI-Rec 的 AI 导购系统分层架构。用户交互层(Web Chat / App 内嵌 / 小程序 / API)、LLM 对话层(意图抽取、受约束召回、推荐编排、多轮状态;function-calling·agent loop·AND-first·场景化分组·ChatSearch API)、PAI-Rec 引擎层(多路召回、曝光过滤、精排打分、重排策略)、数据与模型层(FeatureStore、EasyRec、Search/Recall Engine、LLM/Embedding)。

进一步看在线运行时,用户的一句话是如何在各模块间流转的:

ai_shopping_infra

图 3:在线链路架构总览。左侧用户购物需求经对话入口进入 LLM 编排中枢,依次完成 ① 意图抽取(关键词·反选·价格区间)、② 受约束召回检索(调用搜索召回接口·AND-first 策略)、③ 推荐编排(按场景/人群/面料分组讲解),并由多轮对话状态管理维护上下文记忆、约束缓存与候选集跟踪;右侧 PAI-REC 推荐引擎 提供 FeatureStore、搜索召回接口、商品索引与排序/重排能力。

下面用一次具体对话,串起 LLM 对话层与 PAI-Rec 推荐引擎的协作:

llm_pairec_line

图 4:LLM 对话层 + PAI-Rec 推荐引擎协作流程示例。以“想买一件 200 元以下、不要红色的衬衫”为例,后台依次完成 ① LLM 意图抽取(融合多轮历史·关键词:衬衫、反选:红色、≤200)、② 多通道召回(搜索/个性化/多模态·AND-first)、③ PAI-Rec 排序重排(用户画像偏好·多样性打散)、④ LLM 推荐编排(按场景/风格/面料分组讲解),最终以“分两组、每组附卖点”的方式回复,避免“十几件并列”的决策瘫痪。

因此,数据准备的重点不是“把数据库所有字段都导进去”,而是从用户会怎么描述商品出发,准备能被模型检索到的商品文本。当前链路支持关键词检索、排除关键词和价格区间过滤。

整条链路依赖三类资源:

  • 搜索召回引擎:承载商品索引,负责关键词检索、排除关键词和价格区间过滤。

  • PAI-FeatureStore:保存多轮对话上下文,支持“换成短袖”“预算再低一点”等连续追问。

  • 大模型服务(阿里云 PAI-Token):负责需求理解和导购回复生成。

前提条件

在开始前,请确认已完成以下准备:

  • 已开通并创建智能开放搜索 OpenSearch 召回引擎版实例。

  • 已开通 PAI-FeatureStore 并创建项目,且已配置 FeatureDB 在线存储。

  • 已准备 MaxCompute 项目,用于承载商品物品表,并作为 OpenSearch 召回引擎版的导入数据源。

  • 已在阿里云 PAI-Token 服务获取可用的模型 API Key,并确认模型名称与服务地域。

  • 已部署 PAI-Rec 推荐引擎服务,并可访问引擎配置发布页面。

步骤一:准备物品表数据

AI 导购链路需要准备一张物品表:

表

是否必备

作用

物品表

必备

用于构建搜索召回引擎商品索引,支持商品检索和商品卡片展示

会话存储不需要单独准备业务表,可在 PAI-FeatureStore 中手动创建一个会话特征视图,详见步骤三。

1.1 物品表字段

物品表建议以“一个可售商品 / SKU 一行”为粒度,并先落到 MaxCompute,作为后续导入搜索召回引擎的数据源。字段名不要求与下表完全一致,但需要能映射到对应含义。

字段

是否必备

用途

类型建议

示例值

配置建议

item_id 或 id

必备

商品唯一标识,用于商品卡片引用、更新和去重

string

sku_10001

必须唯一且非空

title

必备

商品标题,用于展示和语义理解

string

蓝色纯棉长袖衬衫

作为返回字段,也建议进入检索文本

default

必备

主检索字段,承载可被搜索的综合文本,可以将所有的商品描述字段合并在该字段中

string

Blue Cotton Long Sleeve Shirt, Commuting, Slim Fit

配置为搜索召回引擎默认检索字段

content_desc 或 content

推荐

商品详情、卖点、材质、版型、适用场景

string

纯棉面料,微宽松版型,适合通勤和日常穿搭

进入检索文本,也作为返回信息

price

推荐

支持价格过滤和预算类需求

number

299.00

配置为价格字段,类型保持数值

category

推荐

品类

string

女装/衬衫/长袖衬衫

建议拼入 default

brand

推荐

品牌

string

ExampleBrand

建议拼入 default

color

推荐

颜色

string

blue

建议拼入 default

material

推荐

材质

string

cotton

建议拼入 default

style_tags

推荐

风格、场景、人群、季节等描述

array/string

["commute", "minimal", "spring"]

建议拼入 default

image_url

可选

前端商品卡片展示图片

string

https://example.com/images/sku_10001.jpg

如商品卡片需要图片则返回该字段

sale_status

可选

标识商品是否可售

string

on_sale

建议只把可售商品导入当前索引

1.2 数据准备建议

  1. 不要直接全量导入业务数据库字段,优先保留用户会感知、会搜索的字段;价格字段单独保留为数值,用于价格区间过滤。

  2. 删除冗长 HTML、重复文案、无搜索价值的大字段,避免影响索引质量和响应耗时。

  3. 同一字段的数据类型必须一致,例如 price 不要有的行是数字、有的行是字符串。

  4. 正式全量导入前,先准备 50-100 条代表性商品跑通字段配置、索引构建和搜索体验。

商品样例:

{
  "item_id": "sku_10001",
  "title": "蓝色纯棉长袖衬衫",
  "default": "Blue Cotton Long Sleeve Shirt, Commuting, Slim Fit",
  "content_desc": "纯棉面料,微宽松版型,适合通勤和日常穿搭。",
  "price": 299.00,
  "category": "女装/衬衫/长袖衬衫",
  "brand": "ExampleBrand",
  "color": "blue",
  "material": "cotton",
  "style_tags": ["commute", "minimal", "spring"],
  "image_url": "https://example.com/images/sku_10001.jpg",
  "sale_status": "on_sale"
}

步骤二:在 OpenSearch 召回引擎版导入并配置商品索引

本步骤将物品表从 MaxCompute 导入智能开放搜索 OpenSearch 召回引擎版,并配置检索字段、模糊分析器、价格过滤和返回字段,使 AI 导购可以从真实商品中检索候选。更多操作详情,请参见 OpenSearch 文档:表管理, 表配置。

2.1 准备 MaxCompute 商品表

将步骤一整理好的物品表写入 MaxCompute 表。请确保用于导入的账号对该表具备 describe、select、download 权限,字段类型使用 OpenSearch 召回引擎版支持的 STRING、BIGINT、DOUBLE 等类型。

2.2 新建 MaxCompute 数据源

  1. 进入 OpenSearch 召回引擎版实例的配置中心,选择数据源配置,单击添加数据源。

  2. 数据源类型选择 MaxCompute,并填写:

    • 数据源名称:遵循“实例名称_自定义名称”格式。

    • MaxCompute Project、AccessKey ID、AccessKey Secret。

    • 表名及分区(Partition)。

    • 是否开启自动索引重建。

  3. 单击校验,校验通过后保存数据源。

说明:如需增量更新并自动触发索引重建,可按控制台指引创建 [表名]_done 辅助表标记数据变更。

2.3 配置索引表结构和模糊分析器配置

为数据源新增索引表结构和模糊分析器配置,确保 AI 导购可以按 default 字段检索商品。

配置示例如下:

opensearch_table_config

如上图所示,导入表后,配置主键,属性字段,搜索结果展示字段,以及分析方式。

其中主键和价格要设置为属性字段,方便后续检索过滤使用。搜索结果展示字段建议包含商品的一些基本信息,这样方便后续大模型根据这些信息进行推荐和聚合分组回复。default 字段设置模糊分析器,该字段主要用来做关键词检索。

2.4 推送配置并重建索引

完成字段、索引、属性、返回字段和分析器配置后,推送配置并触发索引重建。等待索引构建完成后,再进行检索和导购体验测试。

2.5 在 PAI-Rec 中引用召回配置

索引就绪后,在 PAI-Rec 引擎配置中引用该 OpenSearch 召回引擎版实例与索引。

配置示例:

{
  "RecallConfs": [
    {
      "Name": "opensearch_chat_recall",
      "RecallType": "HA3_CHAT_RECALL",
      "Ha3ChatRecallConf": {
        "EngineName": "opensearch_aishopping",
        "IndexName": "ai_guide_goods_simple_v2",
        "DefaultField": "default",
        "Analyzer": "fuzzy_search_analyzer",
        "PriceField": "price"
      }
    }
  ],
  "Ha3EngineConfs": {
    "opensearch_aishopping": {
      "Endpoint": "ha-cn-xxxx.public.ha.aliyuncs.com",
      "Username": "ha_user_example",
      "Password": "example-ha-password",
      "InstanceId": "ha-cn-xxxx",
      "Timeout": 3000
    }
  }
}

字段说明:

字段名

类型

是否必填

描述

Name

string

是

召回配置名称,需与 AIChatConfig.RecallName 保持一致。

RecallType

string

是

召回类型,按示例固定填写。

EngineName

string

是

OpenSearch 召回引擎版数据源名称,需与数据源配置中的 key 一致。

IndexName

string

是

商品索引名称。

DefaultField

string

是

默认检索字段,当前链路按该字段进行关键词检索。

Analyzer

string

是

OpenSearch 召回引擎版查询分析器名称,与索引侧模糊分析器配置对应。

PriceField

string

是

价格字段名称,用于 min_price、max_price 价格区间过滤,需为数值属性字段。

Endpoint

string

是

OpenSearch 召回引擎版 endpoint。

Username

string

是

OpenSearch 召回引擎版用户名。

Password

string

是

OpenSearch 召回引擎版密码。

InstanceId

string

是

OpenSearch 召回引擎版实例 ID。

Timeout

integer

是

OpenSearch 召回引擎版请求超时时间,单位为毫秒;示例值 3000。

步骤三:在 FeatureStore 手动创建会话特征视图

如果还没有开通过 PAI-FeatureStore,请先开通并创建项目,参考文档:https://www.alibabacloud.com/help/zh/pai/configure-data-sources/?spm=a2c4g.11186623.help-menu-30347.d_7_2_1.63f99d0cKT8v4A

AI 导购运行时通过 PAI-FeatureStore 在线存储读写多轮对话上下文,支持“换成短袖”“预算再低一点”等连续追问。会话特征视图需手动创建,且必须开启在线特征表(FeatureDB)同步。更多操作详情,请参见配置FeatureStore项目。

3.1 创建特征实体与会话特征视图

  1. 登录 PAI 控制台,进入 FeatureStore,选择或创建项目(项目需关联 MaxCompute 项目与 FeatureDB 在线库)。

  2. 在特征实体页签,单击新建特征实体,创建会话实体,例如名称 session,Join Id 设置为 session_id。

  3. 在特征视图页签,单击新建特征视图,按如下方式配置:

    • 名称:ai_shopping_session_batch。

    • 类型:离线特征视图。

    • 表结构:选择自定义 Schema(自定义表结构),按下表逐个添加字段。或者可以直接复制以下的 json schema 到自定义 Schema 中。

    [
     {
         "Type": "STRING",
         "Attributes": [
             "PrimaryKey"
         ],
         "Name": "session_id"
     },
     {
         "Type": "STRING",
         "Name": "session_blob"
     },
     {
         "Type": "STRING",
         "Attributes": [
             "Partition"
         ],
         "Name": "dt"
     },
     {
         "Type": "STRING",
         "Attributes": [
             "Partition"
         ],
         "Name": "hh"
     }
    ]
  • 主键:指定 session_id 为主键。

  • 在线同步:开启同步在线特征表,在线存储选择 FeatureDB。

  • 关联特征实体:选择 session。

  1. 保存特征视图。

说明:系统会自动创建对应的 MaxCompute 离线表,但会话特征视图无需离线导入业务数据,AI 导购运行时会按会话直接写入在线库。请确认服务运行环境网络可以访问 FeatureDB。
注意:生产环境建议使用 VPC 访问 FeatureDB,默认不启用 TestMode。

3.2 在 PAI-Rec 中引用会话存储配置

在 PAI-Rec 引擎配置中,将 AI 导购场景的会话存储指向上一步创建的特征视图。

配置示例:

```json
{
"SceneConfs": {
 "ai_shopping": {
   "default": {
     "AIChatConfig": {
       "SessionFeatureStoreName": "aishopping_fs",
       "SessionFeatureView": "ai_shopping_session_batch"
     }
   }
 }
},
"FeatureStoreConfs": {
 "aishopping_fs": {
   "RegionId": "cn-hangzhou",
   "ProjectName": "ai_shopping",
   "FeatureDBUsername": "featuredb_user",
   "FeatureDBPassword": "example-featuredb-password"
 }
}
}

字段说明:

字段名

类型

是否必填

描述

SessionFeatureStoreName

string

是

会话存储使用的 FeatureStore 配置名称,需与 FeatureStoreConfs 中的 key 一致。

SessionFeatureView

string

是

手动创建的会话特征视图名称。

SessionMaxTurns

integer

否

最多保留的历史对话轮数;未配置时默认 32。

SessionMaxTokens

integer

否

最多保留的历史上下文 token 数;未配置时默认 24000。

RegionId

string

是

FeatureStore 所在地域。

ProjectName

string

是

FeatureStore 项目名称。

FeatureDBUsername

string

是

FeatureDB 用户名。

FeatureDBPassword

string

是

FeatureDB 密码。

Domain

string

否

FeatureStore 服务访问域名;未配置时使用 SDK 默认域名。

TestMode

boolean

否

是否使用测试模式;未配置时默认 false。

步骤四:配置大模型

  1. 进入阿里云 PAI-Token 服务,确认可用的 API Key。

  2. 确认模型名称和模型服务地域。

  3. 在 PAI-Rec 引擎配置中替换模型配置。

配置示例:

{
  "AlgoConfs": [
    {
      "Name": "ai_chat_qwen",
      "Type": "PAI_CHAT",
      "PAIModelConf": {
        "APIKey": "example-pai-model-api-key",
        "Model": "qwen3.7-plus"
      }
    }
  ]
}

字段说明:

字段名

类型

是否必填

描述

Name

string

是

模型配置名称,需与 AIChatConfig.LLMAlgoName 保持一致。

Type

string

是

算法类型,固定为 PAI_CHAT。

APIKey

string

是

PAI-Token / PAI Model API Key。

Model

string

是

模型名称。

Region

string

否

模型服务地域;未配置时默认 cn-beijing。

Timeout

integer

否

模型请求超时时间,单位为毫秒;未配置时默认 60000。

步骤五:组装并发布完整推荐配置

页面发布时粘贴的是一份完整 JSON,不是分别发布 OpenSearch 召回引擎版、FeatureStore 或模型配置。下面示例只保留 AI 导购生效所需的必填配置;RunMode、ListenConf 等通用引擎字段按模板保留即可,字段含义可参考引擎配置文档。

5.1 完整配置示例

{
  "RunMode": "product",
  "ListenConf": {
    "HttpAddr": "",
    "HttpPort": 8000
  },
  "SceneConfs": {
    "ai_shopping": {
      "default": {
        "AIChatConfig": {
          "DefaultLanguage": "zh",
          "OutputLanguages": [
            "zh",
            "en",
            "ar"
          ],
          "PlannerPromptTemplates": {
            "zh": "${AIShoppingPlannerPromptZh}",
            "en": "${AIShoppingPlannerPromptEn}",
            "ar": "${AIShoppingPlannerPromptAr}"
          },
          "ReplyPromptTemplates": {
            "zh": "${AIShoppingReplyPromptZh}",
            "en": "${AIShoppingReplyPromptEn}",
            "ar": "${AIShoppingReplyPromptAr}"
          },
          "FallbackTemplates": {
            "zh": {
              "rate_limit": "${AIShoppingFallbackRateLimitZh}",
              "timeout": "${AIShoppingFallbackTimeoutZh}",
              "empty_after_tools": "${AIShoppingFallbackEmptyAfterToolsZh}",
              "generic": "${AIShoppingFallbackGenericZh}"
            },
            "en": {
              "rate_limit": "${AIShoppingFallbackRateLimitEn}",
              "timeout": "${AIShoppingFallbackTimeoutEn}",
              "empty_after_tools": "${AIShoppingFallbackEmptyAfterToolsEn}",
              "generic": "${AIShoppingFallbackGenericEn}"
            },
            "ar": {
              "rate_limit": "${AIShoppingFallbackRateLimitAr}",
              "timeout": "${AIShoppingFallbackTimeoutAr}",
              "empty_after_tools": "${AIShoppingFallbackEmptyAfterToolsAr}",
              "generic": "${AIShoppingFallbackGenericAr}"
            }
          },
          "LLMAlgoName": "ai_chat_qwen",
          "RecallName": "opensearch_chat_recall",
          "SessionFeatureStoreName": "aishopping_fs",
          "SessionFeatureView": "ai_shopping_session_batch"
        }
      }
    }
  },
  "AlgoConfs": [
    {
      "Name": "ai_chat_qwen",
      "Type": "PAI_CHAT",
      "PAIModelConf": {
        "APIKey": "example-pai-model-api-key",
        "Model": "qwen3.7-plus"
      }
    }
  ],
  "RecallConfs": [
    {
      "Name": "opensearch_chat_recall",
      "RecallType": "HA3_CHAT_RECALL",
      "Ha3ChatRecallConf": {
        "EngineName": "opensearch_aishopping",
        "IndexName": "ai_guide_goods_simple_v2",
        "DefaultField": "default",
        "Analyzer": "fuzzy_search_analyzer",
        "PriceField": "price"
      }
    }
  ],
  "FeatureStoreConfs": {
    "aishopping_fs": {
      "RegionId": "cn-hangzhou",
      "ProjectName": "ai_shopping",
      "FeatureDBUsername": "featuredb_user",
      "FeatureDBPassword": "example-featuredb-password"
    }
  },
  "Ha3EngineConfs": {
    "opensearch_aishopping": {
      "Endpoint": "ha-cn-xxxx.public.ha.aliyuncs.com",
      "Username": "ha_user_example",
      "Password": "example-ha-password",
      "InstanceId": "ha-cn-xxxx",
      "Timeout": 3000
    }
  }
}

本流程需要关注的字段如下;其他通用引擎字段按示例保留,不在这里重复介绍。

字段名

类型

是否必填

描述

DefaultLanguage

string

是

默认回复语言;示例值 zh。

OutputLanguages

array

是

允许输出的语言列表;示例值 ["zh", "en", "ar"]。

PlannerPromptTemplates

object

是

规划 prompt 模板,按语言配置;发布前复制当前线上稳定配置。

ReplyPromptTemplates

object

是

回复 prompt 模板,按语言配置;发布前复制当前线上稳定配置。

FallbackTemplates

object

是

兜底回复模板,按语言和兜底类型配置;发布前复制当前线上稳定配置。

LLMAlgoName

string

是

大模型配置名称,需与 `AlgoConfs[].Name` 一致。

RecallName

string

是

商品召回配置名称,需与 `RecallConfs[].Name` 一致。

SessionFeatureStoreName

string

是

会话存储配置名称,需与 FeatureStoreConfs 中的 key 一致。

SessionFeatureView

string

是

会话特征视图名称,需要与手动创建的特征视图一致。

APIKey

string

是

PAI-Token / PAI Model API Key。

Model

string

是

模型名称。

IndexName

string

是

OpenSearch 召回引擎版商品索引名称。

DefaultField

string

是

商品主检索字段,建议使用物品表中的 default 字段。

Analyzer

string

是

OpenSearch 召回引擎版查询分析器名称。

PriceField

string

是

价格字段名称,用于预算和价格区间过滤。

RegionId

string

是

FeatureStore 所在地域。

ProjectName

string

是

FeatureStore 项目名称。

FeatureDBUsername

string

是

FeatureDB 用户名。

FeatureDBPassword

string

是

FeatureDB 密码。

Endpoint

string

是

OpenSearch 召回引擎版 endpoint。

Username

string

是

OpenSearch 召回引擎版用户名。

Password

string

是

OpenSearch 召回引擎版密码。

InstanceId

string

是

OpenSearch 召回引擎版实例 ID。

Timeout

integer

是

OpenSearch 召回引擎版请求超时时间,单位为毫秒;示例值 3000。

ToolMaxRounds

integer

否

最多工具调用轮数;未配置时默认 5。

DisplayItemCountMax

integer

否

最多展示商品数量;未配置时默认 12。

5.2 新建预发配置

  1. 进入引擎配置页面。

  2. 选择预发环境,示例:prepub。

  3. 单击新建配置。

  4. 填写配置名称 config_name,示例:pairec_config。

  5. 填写配置说明,例如 AI 导购配置,YYYY-MM-DD。

  6. 将替换完成的完整 JSON 粘贴到配置内容区域。

  7. 保存预发配置。

config_name 必须和服务使用的配置名保持一致。

5.3 确认发布

  1. 在预发配置详情页确认环境、配置名称和配置内容。

  2. 确认 OpenSearch 召回引擎版、FeatureStore、模型和 prompt 占位都已替换为实际值。

  3. 单击确认发布。

  4. 发布完成后,使用 AI 导购发起一次正常推荐请求,确认可以返回推荐结果。

如果服务没有按预期生效,优先确认 config_name 是否一致,再查看服务配置刷新周期和服务日志。

5.4 调用测试

5.4.1 curl 调用测试

AI 导购接口 /api/chat_search 采用 SSE(text/event-stream)流式返回。可用如下 curl 命令直接发起一次对话请求,-N 关闭缓冲以实时查看流式输出:

curl -N -X POST \
  "<EAS_URL>/api/chat_search" \
  -H "Content-Type: application/json" \
  -H "Authorization: <EAS_TOKEN>" \
  -d '{
    "scene_id": "ai_shopping",
    "session_id": "chat-search-smoke-001",
    "uid": "test_user",
    "language": "zh",
    "input_message": {
      "content": [
        { "type": "text", "text": "帮我推荐衬衫" }
      ]
    }
  }'

请求参数说明:

参数

是否必填

描述

<EAS_URL>

是

EAS 服务调用地址,形如 http://<eas-host>/api/predict/<service_name>,示例:http://1157703270994901.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/ai_shopping_prepub;接口路径 /api/chat_search 已在 curl 中拼好。

Authorization

否

EAS 服务访问 Token;本地未开启鉴权时可省略该 header。

scene_id

是

场景名,需与引擎配置 SceneConfs 的 key 一致,默认 ai_shopping。

session_id

是

会话唯一标识,同一会话的多轮追问需复用同一取值。

uid

是

用户标识,会话按 uid:session_id 隔离存储。

language

否

回复语言,需在 OutputLanguages 列表内;缺省用 DefaultLanguage。

input_message.content

是

用户输入内容,当前仅支持 type=text 的文本。

返回为 SSE 事件流。

说明:多轮追问(如“换成短袖”“预算再低一点”)只需复用同一个 uid 和 session_id 再次调用即可,服务会自动带上历史上下文。

5.4.2 EAS 专有网络设置

EAS 服务部署好后,需要额外配置专有网络来支持以 vpc 连接 OpenSearch 实例

配置示例如下

    "cloud": {
        "networking": {
            "destination_cidrs": "100.103.xx.xxx/32",
            "security_group_id": "sg-bpxxx",
            "vpc_id": "vpc-bpxxx",
            "vswitch_id": "vsw-bpxxx"
        }
    },

其中 vpc_id, vswitch_id, security_group_id 为对应的 OpenSearch 实例 vpc 网络信息。destination_cidrs 可以通过 ping OpenSearch 实例地址得到。

为了避免调用超时, EAS 服务中最好还要增加下面配置:

    "metadata": {
        "rpc": {
            "keepalive": 6000000
        }
    },

5.4.2 页面调用测试

将物品表注册到 FeatureStore 中

为了接口中的 item_id 能够和物品的 title、image_url、price 等信息对应起来,需要在 FeatureStore 中注册物品表。注册后,展示的结果可以关联这些信息,获得更好的测试体验。

参考 配置FeatureStore项目

在 PAI-REC 页面中进行调试
FeatureStore 视图注册

在 PAI-REC 页面中,左侧进入 AI对话推荐 标签,进入数据注册页面,将上述的 FeatureStore 视图在 PAI-REC 中进行注册。

调试

进入 AI导购页面,左侧选择好环境,AI 对话推荐服务,FeatureStore 视图,点击右侧示例进行调试

常见问题

问题

排查方向

服务读不到新配置

检查 config_name 是否和服务使用的配置名一致

提示 prompt 缺失

检查对应语言的 planner、reply、fallback 是否已从稳定配置复制完整

语言不支持

检查 OutputLanguages 是否包含请求语言

商品无结果

检查 OpenSearch 召回引擎版 index、default field、analyzer、价格字段

检索召回明显偏少

检查 default 字段索引侧是否配置了 fuzzy 分析器、查询侧 Analyzer 是否为 fuzzy_search_analyzer 且两侧一致

价格过滤不生效

检查 price 是否配置为数值属性字段(attribute),PriceField 是否与索引字段一致

商品卡片缺信息

检查物品表是否返回 item_id、title、image_url、price 等展示字段(需在 summary 返回字段中)

会话不能保存

检查会话特征视图是否开启在线同步(FeatureDB)、FeatureStore 名称、FeatureView、FeatureDB 账号密码和网络

MaxCompute 导入失败

检查导入账号是否具备源表的 describe、select、download 权限

生产访问异常

FeatureStore 生产环境应走 VPC,避免开启 TestMode