代码之家  ›  专栏  ›  技术社区  ›  yts61

ValidationError:RetrievalQA的1个验证错误

  •  0
  • yts61  · 技术社区  · 2 年前

    这是我的代码:

    from langchain.document_loaders import PyPDFLoader
    from langchain.text_splitter import RecursiveCharacterTextSplitter
    from langchain_openai import OpenAIEmbeddings
    from langchain_community.vectorstores import Chroma
    
    
    openai_api_key= 'xxx'
    loader = PyPDFLoader('xxx.pdf')
    text = loader.load()
    chunk_size = 200
    chunk_overlap = 50
    
    # Split the pdf
    splitter = RecursiveCharacterTextSplitter(
        chunk_size=chunk_size,
        chunk_overlap=chunk_overlap,
        separators=['.']
        )
    doc = splitter.split_documents(text)
    
    embedding = OpenAIEmbeddings(openai_api_key=openai_api_key)
    
    persist_directory = "embedding/chroma"
    
    vectordb = Chroma(
        persist_directory = persist_directory,
        embedding_function = embedding)
    vectordb.persist()
    

    这是我代码的第一部分,然后我测试了vectordb.get()['documents']中的数据,是的。

    然后我检索数据库,

    from langchain.chains import RetrievalQA
    from langchain.chat_models import ChatOpenAI
    
    openai_api_key= 'xxx'
    vectordb2 = Chroma(persist_directory=persist_directory, embedding_function=embedding)
    vectordb2.get()['documents']
    

    是的,数据在vectordb2中,一切似乎都很好。

    然后我尝试将RetrievalQA与OpenAI模型结合使用,

    retriever = vectordb2.as_retriever() # search_kwargs={"k": 4}
    
    qa = RetrievalQA.from_chain_type(ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0, openai_api_key=openai_api_key), 
                                     chain_type="stuff",
                                     retriever=retriever)
    

    它给我带来了一个错误:

    File ~/miniforge3/envs/langchain/lib/python3.9/site-packages/pydantic/main.py:341, in pydantic.main.BaseModel.__init__()
    
    ValidationError: 1 validation error for RetrievalQA
    retriever
      instance of BaseRetriever expected (type=type_error.arbitrary_type; expected_arbitrary_type=BaseRetriever)
    

    我在谷歌上搜索了一下,似乎还有一些其他类型的“1验证错误”,但它们不同。例如 ValidationError: 1 validation error for RetrievalQA retriever value is not a valid dict (type=type_error.dict)

    有人能帮忙吗?任何帮助都将不胜感激。

    0 回复  |  直到 2 年前