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

使用LangChain从Azure Blob加载CSV后,聊天机器人未调用自定义数据及嵌入错误

问题解决:LangChain加载Azure Blob CSV后机器人不使用自定义数据及空Embedding错误

一、数据未被机器人使用的原因及修复

  1. 补全向量库构建逻辑
    你当前仅完成了数据加载,但未将加载的文档存入向量存储,导致后续对话链无法检索到自定义数据。需补充以下代码:

    from langchain.vectorstores import FAISS
    from langchain.embeddings.openai import OpenAIEmbeddings
    from langchain.chains import RetrievalQA
    from langchain.llms import OpenAI
    
    # 加载数据后生成embedding并构建向量库
    embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")
    vector_store = FAISS.from_documents(data, embeddings)
    
    # 构建关联自定义数据的问答链
    qa_chain = RetrievalQA.from_chain_type(
        llm=OpenAI(),
        chain_type="stuff",
        retriever=vector_store.as_retriever()
    )
    
  2. 确保会话状态中持久化问答链
    你在__init__中加载的数据未绑定到会话逻辑,需将问答链存入会话状态,避免每次会话初始化后丢失关联:

    async def initialize_session(self, turn_context):
        session = await self.session_accessor.get(turn_context, {})
        if "qa_chain" not in session:
            loader = AzureBlobStorageFileLoader(
                conn_str="你的连接字符串",
                container="dataset",
                blob_name="data.csv"
            )
            data = loader.load()
            # 过滤空内容文档
            data = [doc for doc in data if doc.page_content.strip()]
            embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")
            vector_store = FAISS.from_documents(data, embeddings)
            qa_chain = RetrievalQA.from_chain_type(
                llm=OpenAI(),
                chain_type="stuff",
                retriever=vector_store.as_retriever()
            )
            session["qa_chain"] = qa_chain
            await self.session_accessor.set(turn_context, session)
    

二、OpenAI空Embedding错误修复

  1. 过滤无效文档
    部分文档可能存在空内容,导致无法生成embedding,需提前过滤:

    data = [doc for doc in loader.load() if doc.page_content.strip()]
    
  2. 明确指定embedding模型
    确保使用支持的embedding模型,避免因模型不兼容导致错误:

    embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")
    
  3. 调整API重试策略
    临时网络波动可能引发空embedding错误,可调整重试参数提升稳定性:

    embeddings = OpenAIEmbeddings(
        model="text-embedding-ada-002",
        max_retries=5,
        retry_min_seconds=2,
        retry_max_seconds=10
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:55:09