LangChain 中的 RAG LLM 在输出响应时生成提示和上下文

问题描述 投票:0回答:1

我试图使用开源模型在LangChain中构建RAG LLM。我在这里使用两种方法:会话检索链和检索QAChain。但是,在生成响应时,LLM 会在输出中附加整个提示和上下文。谁能告诉我如何删除提示和上下文部分并仅获得响应答案?

这个问题出现在文本生成模型、mistralai/Mixtral-8x7B-Instruct-v0.1和bigscience/bloom中,导致答案的结果也被截断,没有到达最后。 当我尝试使用text2text Generation模型,例如Flan-t5时,并没有出现这个问题,只是得到的答案不如文本生成模型。

这是会话检索链的代码

from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
from langchain.prompts.prompt import PromptTemplate

_template = """Given the following conversation and a follow up question,
rephrase the follow up question to be a standalone question, in its original language.

Chat History:
{chat_history}
Follow Up Input: {question}
Standalone question:"""
CONDENSE_QUESTION_PROMPT = PromptTemplate.from_template(_template)

template = """Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
{context}

Question: {question}
Answer in Indonesian:""".strip()
ANSWER_PROMPT = PromptTemplate.from_template(template)

memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True, output_key='answer')
cr_chain = ConversationalRetrievalChain.from_llm(
    llm,
    retriever,
    memory=memory,
    return_source_documents=True,
    condense_question_prompt=CONDENSE_QUESTION_PROMPT,
    combine_docs_chain_kwargs={"prompt": ANSWER_PROMPT},
)

这是检索 QA 链的代码

from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
prompt_template = """Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.

{context}

Question: {question}
Answer in Indonesian:"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["context", "question"]
)
chain_type_kwargs = {"prompt": PROMPT}
rqa_chain= RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    chain_type_kwargs=chain_type_kwargs
)

这是两种方法产生的响应的示例

{'result': "使用以下上下文来回答最后的问题。 如果你不知道答案,就说你不知道,不要试图编造答案。 dilakukan untuk mengidentifikasi alokasi yang secara riil mendukung percepatan penurunan 发育迟缓。 身份识别数据垫 级别子组件和详细信息 塔洪 2021-2024。 发育迟缓的定义 发育迟缓 Peraturan Presiden Nomor 72 Tahun 2021 tentang Percepatan Penurunan 发育迟缓 adalah gangguan pertumbuhan dan 请注意以下事项: Bawah Standard yang ditetapkan oleh menteri yang menyelenggarakan urusan pemerintahan di bidang kesehatan。 发育迟缓的定义如下: 发育迟缓的定义如下: Menurut 联合国儿童基金会,sstunting didefinisikan sebagai persentase anak-anak usia 0 sampai 59 bulan, dengan tinggi di bawah minus dua (发育迟缓的 sedang dan berat)dan minus tiga(发育迟缓的克罗尼斯)diukur dari standardar pertumbuhan anak keluaran WHO。 Menurut WHO、发育迟缓 adalah gangguan tumbuh kembang yang dialami anak akibat gizi buruk、infeksi berulang、dan didefinisikan 发育迟缓可能会导致发育迟缓(baik pertumbuhan tubuh dan otak),导致发育迟缓,并影响新陈代谢。发育迟缓 terjadi lantaran pola asuh yang salah pada masa 1000 Hari Pertama Kehidupan (1000 HPK) 和 hal tersebut tidak dapat lagi diperbaiki mengingat masa 1000 HPK merupakan periode kritis yang menjadi faktor penentu kualitas kehidupan anak kelak。波拉 问题: apa itu 发育迟缓? 用印尼语回答: 发育迟缓 adalah gangguan pertumbuhan dan perkembangan anak akibat kekurangan gizi kronis dan infeksi berulang, yang ditandai"}

我期待的答案是

{'结果':Stunting adalah gangguan pertumbuhan dan perkembangan anak akibat kekurangan gizi kronis dan infeksi berulang, yang ditandai dengan panjang atau tinggi badannya berada di bawah standardar yang ditetapkan oleh menteri yang menyelenggarakan urusan pemerintahan di bidang kesehatan"}

response prompt langchain retrieval-augmented-generation
1个回答
0
投票

我觉得和浪链上一个版本有关。我在将LangChain更新到最新版本后就开始遇到这个问题(之前还好)。 无论模型如何,至少在 Huggingface 模型中都会发生这种情况(在出现问题后我已经尝试了不止一种)。 我使用 GPT-4 和 LangChain 进行了最后一次测试,效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.