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

LangChain 0.1.x中Azure AI Search向量存储APIConnectionError解决问询

Azure OpenAI + Azure AI Search RAG 连接问题排查与修复

问题背景

使用Azure OpenAI和Azure AI Search实现RAG方案,依赖配置如下:

azure-core==1.29.6
azure-common==1.1.28
azure-identity==1.15.0
azure-keyvault-keys==4.8.0
azure-keyvault-secrets==4.7.0
azure-search-documents==11.4.0
openai==1.8.0
langchain==0.1.1
fastapi==0.109.0
uvicorn==0.26.0
tiktoken==0.5.2
gunicorn==21.2.0
langchain-openai==0.0.2

连接Azure Search的代码逻辑:

# Cognitive Search connection setting
index_name = os.environ["AZURE_SEARCH_INDEX_NAME"]
service_name = COGNOS_SERVICE
key = AZURE_SEARCH_ADMIN_KEY
vector_store_address = "https://{}.search.windows.net/".format(service_name)
vector_store_password = AZURE_SEARCH_ADMIN_KEY

# Define LLM
llm = AzureChatOpenAI(
    model="gpt-35-turbo",
    streaming=True,
    azure_deployment="chatgpt-gpt35-turbo",
    temperature=0.0,
)

embedding_model: str = "text-embedding-ada-002"
embeddings: OpenAIEmbeddings = OpenAIEmbeddings(
    deployment=embedding_model, chunk_size=1
)
vector_store = AzureSearch(
    azure_search_endpoint=vector_store_address,
    azure_search_key=vector_store_password,
    index_name=index_name,
    embedding_function=embeddings.embed_query,
    # content_key="report_content"
)

运行后触发错误:

File d:\xxxx\.venv\lib\site-packages\openai\_base_client.py:919, in SyncAPIClient._request(self, cast_to, options, remaining_retries, stream, stream_cls)
    909         return self._retry_request(
    910             options,
    911             cast_to,
   (...)
    915             response_headers=None,
    916         )
    918     log.debug("Raising connection error")
--> 919     raise APIConnectionError(request=request) from err
    921 log.debug(
    922     'HTTP Request: %s %s "%i %s"', request.method, request.url, response.status_code, response.reason_phrase
    923 )
    925 try:

APIConnectionError: Connection error.

已按LangChain 0.1+版本要求切换至langchain-community导入,旧版本LangChain使用相同配置可正常运行。


修复步骤

针对LangChain 0.1.x版本的Azure Search连接逻辑变化,按以下点修改:

  1. 确认AzureSearch导入路径
    LangChain 0.1.x将AzureSearch组件迁移至langchain_community.vectorstores,确保导入语句正确:

    from langchain_community.vectorstores import AzureSearch
    
  2. 显式初始化SearchClient
    新版本AzureSearch类推荐传入预配置的SearchClient,避免内部初始化时的连接参数缺失:

    from azure.search.documents import SearchClient
    from azure.core.credentials import AzureKeyCredential
    
    # 手动创建SearchClient实例
    search_client = SearchClient(
        endpoint=vector_store_address,
        index_name=index_name,
        credential=AzureKeyCredential(vector_store_password)
    )
    
    # 用预创建的search_client初始化AzureSearch
    vector_store = AzureSearch(
        search_client=search_client,
        embedding_function=embeddings.embed_query,
        # content_key="report_content" 按需开启
    )
    
  3. 补全OpenAI Embeddings的Azure配置
    确保嵌入模型的Azure端点、密钥等参数配置完整,避免嵌入请求时的连接异常:

    embeddings: OpenAIEmbeddings = OpenAIEmbeddings(
        deployment=embedding_model,
        chunk_size=1,
        azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
        api_key=os.environ["AZURE_OPENAI_API_KEY"],
        api_version="2024-02-15-preview"  # 替换为你的Azure OpenAI API版本
    )
    
  4. 适配依赖版本
    更新依赖包至与LangChain 0.1.x兼容的版本,新增langchain-community并升级azure-search-documents:

    # 修改后的requirements.txt
    langchain==0.1.1
    langchain-community==0.0.13
    langchain-openai==0.0.2
    azure-search-documents==11.4.1
    azure-core==1.29.6
    azure-identity==1.15.0
    openai==1.8.0
    fastapi==0.109.0
    uvicorn==0.26.0
    tiktoken==0.5.2
    gunicorn==21.2.0
    

    执行升级命令:

    pip install -r requirements.txt --upgrade
    
  5. 验证网络与权限

    • 检查运行环境是否能正常访问Azure Search和Azure OpenAI的端点(无防火墙、代理拦截)
    • 确认Azure Search管理员密钥有效,且拥有目标索引的读写权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:33:10