langchain RAG 输出乱码
model_path = "./model/Llama3-8B-Chinese-Chat-q8_0-v2_1.gguf"
llm = LlamaCpp(
model_path=model_path,
n_gpu_layers=-1,
n_batch=512,
temperature=0.2,
n_ctx = 2048,
callback_manager = CallbackManager([StreamingStdOutCallbackHandler()]),
verbose=True,
)
llm('介绍一下太阳系?')
这里没有问题
'太阳系是指由太阳构成的行星系统。这个系统包括了太阳本身和八颗行星(从最近到最远为:水星、金星、地球、火星、木星、土星)。太阳系还包含着数以千计的小行星、彗星以及其他天体。 \n\n太阳系的形成大约在45亿年前,通过一个名为“太阳系形成”的过程。这个过程包括了太阳和行星的形成,以及它们之间相互作用的发展。 \n\n太阳系是一个非常复杂和动态的系统,它不断地变化着。例如,地球上的冰川正在融化,海平面上升;火星上的尘暴也在不断地发生。 \n\n总之,太阳系是一个充满了神秘和未知的宇宙领域,我们仍然有很多事情要学习和探索。太阳系的研究不仅能够帮助我们更好地理解我们的家园,也能为我们提供关于整个宇宙的深刻见解。因此,无论是科学家、学生还是普通公民,对于太阳系的研究都充满了兴趣和期待'
#然后
prompt = PromptTemplate(
input_variables=["context","question"],
template="""根据下面上下文内容用中文回答问题,确保答案内容相关且简洁,如果你不知道答案,就回答不知道,不要试图编造答案。\n\n{context}\n\n问题: {question}\n答案:""",
)
retriever = vectordb.as_retriever(search_kwargs={"k": 4})
chain = RetrievalQA.from_chain_type(llm = llm,
chain_type = 'stuff',
retriever = retriever,
chain_type_kwargs={"verbose": True,"prompt": prompt},
return_source_documents = False)
result = chain.invoke(question)
#这里就会乱答一通
'1下面1(不对上就可以回答你可以下请下"在下1#1(),下(上“上“上「上“请下-上下。#——"他下1以上下(1上"上“上,但就上。下就上“上、上请上上请上请上\上上下下上请上上请上上上上个条件的上上上,下上上上上上上上上上上上上上上上下下下“上上.swing上上上上上://versa上上上上上下下上上上上上上下下上下下下下上上下下下下下上上上上上下上上上上上上上下上上下下上上下下上上上上上上请上上他上上上上下,下下上上上上上上上上上上'
#我试了TheBloke/Llama-2-7B-Chat-GGUF/llama-2-7b-chat.Q5_K_M.gguf没有问题,反而这个有问题