I was trying to build a RAG LLM in LangChain using open source models. I use 2 approaches here, Conversational Retrieval Chain and RetrievalQAChain. But while generating the response the LLM is attaching the entire prompt and context at the output. Can anyone please tell me how can I remove the prompt and the context section and get only the answer in response ?
This problem occurs in the text generation models, mistralai/Mixtral-8x7B-Instruct-v0.1 and bigscience/bloom so that the results of the answer are also truncated, not reaching the end. When I tried to use the text2textgeneration model, such as Flan-t5, this problem did not arise, it's just that the resulting answer was not as good as the text generation model.
This is the code for the Conversational Retrieval Chain
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},
)
And this is the code for Retrieval QA Chain
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
)
This is an example of the response produced by both approache
{'result': "Use the following pieces of context to answer the question at the end.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n\ndilakukan untuk mengidentifikasi alokasi yang secara riil mendukung percepatan penurunan\n\nstunting.\n\nIdentifikasi data pada\n\nlevel sub-komponen dan detilnya dilakukan dengan\n\nTahun 2021-2024.\n\nDefinisi Stunting\n\nStunting menurut Peraturan Presiden Nomor 72 Tahun 2021 tentang Percepatan Penurunan Stunting adalah gangguan pertumbuhan dan\n\nperkembangan anak akibat kekurangan gizi kronis dan infeksi berulang, yang ditandai dengan panjang atau tinggi badannya berada di\n\nbawah standar yang ditetapkan oleh menteri yang menyelenggarakan urusan pemerintahan di bidang kesehatan.\n\nTerdapat beberapa definisi stunting dari berbagai sumber, seperti definisi berikut ini :\n\nTerdapat beberapa definisi stunting dari berbagai sumber, seperti definisi berikut ini :\n\nMenurut UNICEF, stunting didefinisikan sebagai persentase anak-anak usia 0 sampai 59 bulan, dengan tinggi di bawah minus dua\n\n(stunting sedang dan berat) dan minus tiga (stunting kronis) diukur dari standar pertumbuhan anak keluaran WHO.\n\nMenurut WHO, stunting adalah gangguan tumbuh kembang yang dialami anak akibat gizi buruk, infeksi berulang, dan didefinisikan\n\nStunting merujuk pada kondisi gagal tumbuh pada anak (baik pertumbuhan tubuh dan otak) sehingga tinggi anak lebih pendek dari tinggi badan seumurannya, mengalami gangguan kognitif, dan cenderung mengalami gangguan dalam metabolisme tubuhnya. Stunting terjadi lantaran pola asuh yang salah pada masa 1000 Hari Pertama Kehidupan (1000 HPK) dan hal tersebut tidak dapat lagi diperbaiki mengingat masa 1000 HPK merupakan periode kritis yang menjadi faktor penentu kualitas kehidupan anak kelak. Pola\n\nQuestion: apa itu stunting?\nAnswer in Indonesian:\n\nStunting adalah gangguan pertumbuhan dan perkembangan anak akibat kekurangan gizi kronis dan infeksi berulang, yang ditandai"}
the answer I expected is
{'result': Stunting adalah gangguan pertumbuhan dan perkembangan anak akibat kekurangan gizi kronis dan infeksi berulang, yang ditandai dengan panjang atau tinggi badannya berada di bawah standar yang ditetapkan oleh menteri yang menyelenggarakan urusan pemerintahan di bidang kesehatan"}