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

拟启用语义搜索,如何获取Azure认知搜索的Precision与Recall指标?

获取Azure认知搜索的精确率(Precision)和召回率(Recall)指标

Azure认知搜索本身没有内置直接计算这两项指标的功能,你需要通过自定义测试流程来获取:

  • 准备测试数据集
    • 构建一组覆盖不同场景的自然语言查询测试用例,每个查询对应你预先标记好的相关文档集合(即理想中应被返回的文档)。要包含常见查询、边缘查询、歧义查询等,保证测试结果有代表性。
  • 执行搜索并收集结果
    • 调用Azure认知搜索的语义搜索API,逐个执行测试查询,记录返回的文档唯一标识(如ID)及排序顺序。
  • 计算精确率和召回率
    • 精确率(Precision):单查询维度下,用返回的相关文档数除以总返回文档数,公式为 Precision = (返回的相关文档数 / 总返回文档数);整体精确率可取所有查询的精确率平均值。如果关注Top N结果的表现,只需统计前N个返回结果中的相关文档数计算Top-N精确率。
    • 召回率(Recall):单查询维度下,用返回的相关文档数除以预先标记的总相关文档数,公式为 Recall = (返回的相关文档数 / 标记的总相关文档数);整体召回率可取所有查询的召回率平均值。
  • 自动化测试脚本示例
    可以用Python编写批量测试脚本,核心逻辑如下:
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents import SearchClient
    
    # 初始化搜索客户端
    service_endpoint = "你的搜索服务端点"
    index_name = "你的索引名称"
    key = "你的搜索服务密钥"
    client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
    
    # 测试数据集:查询 -> 标记的相关文档ID列表
    test_queries = {
        "如何配置Azure认知搜索语义搜索": ["doc1", "doc3", "doc5"],
        "语义搜索和传统搜索的区别": ["doc2", "doc5", "doc7"]
    }
    
    total_precision = 0
    total_recall = 0
    query_count = len(test_queries)
    
    for query, relevant_docs in test_queries.items():
        # 执行语义搜索
        results = client.search(query, query_type="semantic", semantic_configuration_name="你的语义配置名称")
        returned_docs = [doc["id"] for doc in results]
        
        # 统计匹配的相关文档数
        matched = len(set(returned_docs) & set(relevant_docs))
        
        # 计算单查询指标
        precision = matched / len(returned_docs) if returned_docs else 0
        recall = matched / len(relevant_docs) if relevant_docs else 0
        
        total_precision += precision
        total_recall += recall
        print(f"查询: {query}")
        print(f"精确率: {precision:.2f}, 召回率: {recall:.2f}\n")
    
    # 输出整体指标
    print(f"整体平均精确率: {total_precision/query_count:.2f}")
    print(f"整体平均召回率: {total_recall/query_count:.2f}")
    
  • 额外注意事项
    • 测试时要使用和生产环境一致的语义配置(如语义字段、排名规则),避免指标失真。
    • 文档集更新后,要同步更新测试数据集中的标记结果。
    • 可结合F1分数(F1 = 2*(Precision*Recall)/(Precision+Recall))综合评估搜索效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:52:17