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

如何使用AzureAISearchRetriever实现混合搜索的对话式RAG?

使用AzureAISearchRetriever实现混合搜索

核心思路

Azure AI Search的混合搜索需要结合关键词搜索与语义搜索的结果,通过AzureAISearchRetriever可配置对应检索参数实现这一需求,核心是利用Azure AI Search的query_type、semantic_configuration_name及原生搜索参数组合两种搜索逻辑。

具体实现步骤

  • 初始化检索器时配置混合搜索参数
    创建AzureAISearchRetriever实例时,指定query_type为"semantic",同时通过search_parameters传递Azure AI Search原生参数,实现关键词与语义搜索的混合。

    示例代码:

    from langchain_community.retrievers import AzureAISearchRetriever
    
    retriever = AzureAISearchRetriever(
        service_name="你的Azure搜索服务名",
        api_key="你的API密钥",
        index_name="你的索引名",
        query_type="semantic",
        semantic_configuration_name="你的语义配置名",  # 需提前在Azure门户配置语义规则
        search_parameters={
            "queryType": "semantic",
            "semanticConfiguration": "你的语义配置名",
            "speller": "lexicon",
            "scoringProfile": "自定义评分配置名"  # 用于调整两种搜索的权重占比
        }
    )
    
  • 通过评分配置自定义混合权重
    若需精细控制关键词与语义搜索的权重比例,需在Azure AI Search索引中创建评分配置:

    • 在配置中为关键词搜索的search.score和语义搜索的semantic.score设置不同权重系数
    • 例如设置关键词权重0.4、语义权重0.6,实现混合排序逻辑
  • 结合对话历史优化检索
    针对对话式RAG,需将对话历史拼接进检索查询,确保结果匹配上下文:

    def generate_retrieval_query(chat_history, user_question):
        # 拼接对话历史与当前问题生成检索用查询
        combined_query = f"对话历史:{chat_history}\n用户问题:{user_question}"
        return combined_query
    
    # 生成查询并执行检索
    query = generate_retrieval_query(chat_history_list, current_question)
    relevant_docs = retriever.invoke(query)
    

关键说明

  • 需提前在Azure AI Search门户配置语义配置,指定语义字段与语言,否则无法启用语义搜索
  • search_parameters支持传递Azure AI Search REST API的所有原生参数,可按需调整混合搜索细节
  • 若不需要语义问答提取功能,可省略answers类参数,仅保留基础混合排序逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:33:19