基于C#的SemanticKernel结合向量数据库优化酒店AI助手问询
酒店AI助手Token优化与向量数据库整合方案
一、数据拆分策略
- 动态数据:保留在API返回结果中,仅包含核心字段:
房间ID、查询日期、实时价格、可用状态,彻底精简JSON结构,直接降低单次请求的Token消耗。 - 静态数据:将房间详情、套餐说明、酒店常识(退房时间、泳池配置等)拆分为独立文本条目,每条数据绑定唯一标识(如房间ID、常识分类ID),用于后续向量检索关联。
二、向量数据库数据加载流程
- 数据预处理:将静态数据整理为结构化格式,每条条目包含:
- 核心文本内容(如"豪华套房:50㎡,带落地窗,含双早")
- 元数据(唯一ID、分类标签:「房间详情」/「酒店常识」)
- 生成向量嵌入:使用Azure OpenAI的
text-embedding-ada-002模型,将每条文本转换为向量表示。 - 批量导入向量库:
- 开源向量库(如Chroma、Pinecone):调用对应SDK,上传向量、文本内容及元数据。
- Azure OpenAI Vector Store:直接在Studio界面上传CSV/JSON文件,或通过API批量导入,关联指定的嵌入模型部署。
三、与SemanticKernel架构整合步骤
- 配置嵌入服务:在Kernel中绑定Azure OpenAI嵌入模型,为向量检索提供基础能力:
var kernel = Kernel.CreateBuilder() .AddAzureOpenAIChatCompletion("<chat-deployment>", "<endpoint>", "<api-key>") .AddAzureOpenAIEmbedding("<embedding-deployment>", "<endpoint>", "<api-key>") .Build(); - 新增向量检索函数:编写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 ?? "暂无相关信息"; } - 调整Prompt模板:修改助手Prompt,明确逻辑顺序:先调用房间查询API获取动态数据,再触发向量检索补充静态描述,最后整合结果:
你是专业酒店AI助手,处理用户请求遵循以下逻辑: 1. 若用户查询房间可用性/价格:调用房间查询工具获取动态数据(房间ID、价格、状态); 2. 根据返回的房间ID,调用get_static_content工具获取对应房间/套餐描述; 3. 将动态数据与静态描述整合成自然语言回复; 4. 若用户询问酒店常识(退房时间、设施等),直接调用get_static_content工具检索回复。 - 路由逻辑优化:在Kernel的插件调度中,新增常识类查询的判断规则,无需触发房间查询API,直接跳转向量检索流程。
四、连接Azure OpenAI Studio Vector Store
- 创建向量存储:
- 进入Azure OpenAI Studio,切换至「Vector stores」页面,点击「Create vector store」;
- 配置存储名称,关联已有的Azure OpenAI资源及嵌入模型部署。
- 导入静态数据:
- 支持上传本地CSV/JSON文件,或通过Azure AI Search连接外部数据源;
- 确保文件包含文本字段(用于生成向量)及可选元数据(如ID、分类标签)。
- SemanticKernel中调用:
使用官方提供的AzureVectorStore扩展,直接配置连接参数即可完成调用,代码示例参考「三-2」中的向量检索函数。
内容的提问来源于stack exchange,提问作者Piotr
相关产品推荐
相关产品推荐

