You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于C#的SemanticKernel结合向量数据库优化酒店AI助手问询

酒店AI助手Token优化与向量数据库整合方案

一、数据拆分策略

  • 动态数据:保留在API返回结果中,仅包含核心字段:房间ID、查询日期、实时价格、可用状态,彻底精简JSON结构,直接降低单次请求的Token消耗。
  • 静态数据:将房间详情、套餐说明、酒店常识(退房时间、泳池配置等)拆分为独立文本条目,每条数据绑定唯一标识(如房间ID、常识分类ID),用于后续向量检索关联。

二、向量数据库数据加载流程

  1. 数据预处理:将静态数据整理为结构化格式,每条条目包含:
    • 核心文本内容(如"豪华套房:50㎡,带落地窗,含双早")
    • 元数据(唯一ID、分类标签:「房间详情」/「酒店常识」)
  2. 生成向量嵌入:使用Azure OpenAI的text-embedding-ada-002模型,将每条文本转换为向量表示。
  3. 批量导入向量库:
    • 开源向量库(如Chroma、Pinecone):调用对应SDK,上传向量、文本内容及元数据。
    • Azure OpenAI Vector Store:直接在Studio界面上传CSV/JSON文件,或通过API批量导入,关联指定的嵌入模型部署。

三、与SemanticKernel架构整合步骤

  1. 配置嵌入服务:在Kernel中绑定Azure OpenAI嵌入模型,为向量检索提供基础能力:
    var kernel = Kernel.CreateBuilder()
        .AddAzureOpenAIChatCompletion("<chat-deployment>", "<endpoint>", "<api-key>")
        .AddAzureOpenAIEmbedding("<embedding-deployment>", "<endpoint>", "<api-key>")
        .Build();
    
  2. 新增向量检索函数:编写Kernel函数,根据动态数据中的标识(如房间ID)或用户查询关键词,从向量库获取对应静态内容:
    [KernelFunction("get_static_content")]
    public async Task<string> GetStaticContentAsync(
        [KernelFunctionParameter(Name = "query")] string query,
        [KernelFunctionParameter(Name = "top")] int top = 1)
    {
        // 初始化向量存储连接(以Azure Vector Store为例)
        var vectorStore = new AzureVectorStore(
            new AzureOpenAIClient("<api-key>", new Uri("<endpoint>")),
            "<vector-store-name>",
            "<embedding-deployment>"
        );
        var results = await vectorStore.SearchAsync(query, top);
        return results.FirstOrDefault()?.Text ?? "暂无相关信息";
    }
    
  3. 调整Prompt模板:修改助手Prompt,明确逻辑顺序:先调用房间查询API获取动态数据,再触发向量检索补充静态描述,最后整合结果:
    你是专业酒店AI助手,处理用户请求遵循以下逻辑:
    1. 若用户查询房间可用性/价格:调用房间查询工具获取动态数据(房间ID、价格、状态);
    2. 根据返回的房间ID,调用get_static_content工具获取对应房间/套餐描述;
    3. 将动态数据与静态描述整合成自然语言回复;
    4. 若用户询问酒店常识(退房时间、设施等),直接调用get_static_content工具检索回复。
    
  4. 路由逻辑优化:在Kernel的插件调度中,新增常识类查询的判断规则,无需触发房间查询API,直接跳转向量检索流程。

四、连接Azure OpenAI Studio Vector Store

  1. 创建向量存储:
    • 进入Azure OpenAI Studio,切换至「Vector stores」页面,点击「Create vector store」;
    • 配置存储名称,关联已有的Azure OpenAI资源及嵌入模型部署。
  2. 导入静态数据:
    • 支持上传本地CSV/JSON文件,或通过Azure AI Search连接外部数据源;
    • 确保文件包含文本字段(用于生成向量)及可选元数据(如ID、分类标签)。
  3. SemanticKernel中调用:
    使用官方提供的AzureVectorStore扩展,直接配置连接参数即可完成调用,代码示例参考「三-2」中的向量检索函数。

内容的提问来源于stack exchange,提问作者Piotr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:55:01