如何在Azure OpenAI Web应用中显示文件名及引用信息
核心思路
利用现有索引字段提取文件名,在RAG流程中传递文件名信息并在回答中展示,或新增专用字段简化后续处理。
方法一:利用现有索引字段快速实现
确定文件名来源
你的索引中metadata_storage_path字段包含Blob存储的完整路径(格式类似r*g/文件名.ext),可直接从该字段截取最后一段作为文件名。调整检索返回字段
在调用Azure AI Search的检索接口时,确保将metadata_storage_path加入select参数,让检索结果返回该字段。示例参数:search=<查询关键词>&select=content,metadata_storage_path,...修改提示词规则
在给Azure OpenAI的提示词中明确要求,生成回答时需将引用内容对应的文件名(从metadata_storage_path提取)标注在引用旁。示例提示词片段:请基于检索到的内容回答问题,每个引用内容需同时标注对应的文件名(从metadata_storage_path字段截取最后一段),格式为「引用内容 - 文件名」。
前端解析展示
在Web应用中,获取检索结果后,对metadata_storage_path做字符串截取(以/为分隔符取最后一段),将文件名与引用内容拼接后渲染到页面。
方法二:新增专用文件名字段(更规范)
如果希望索引中直接存储文件名,可通过索引器字段映射实现:
修改索引结构
在azureblob-index1索引中新增filename字段,类型设为String。配置索引器字段映射
编辑关联的索引器,添加字段映射规则,自动从metadata_storage_path提取文件名:{ "sourceFieldName": "metadata_storage_path", "targetFieldName": "filename", "mappingFunction": { "name": "extractToken", "parameters": { "delimiter": "/", "position": -1 } } }重新运行索引器
触发索引器重新运行,让所有现有文档生成filename字段值。简化后续流程
后续检索时直接返回filename字段,提示词和前端展示无需再做字符串截取,直接使用该字段值即可。
内容的提问来源于stack exchange,提问作者user26690975

