У процесі розробки системи питань і відповідей за допомогою RetrievalQA langchain виникла проблема з відображенням лише відповідей. Вихідний результат не відповідає очікуваному формату, що створює додаткові труднощі у роботі з програмою.
Для кращого розуміння ситуації давайте розглянемо код, який використовується для виклику програми RetrievalQA та отримання результатів. Нижче наведено уривок коду, який ілюструє процес виконання програми та невідповідність очікуваному результату:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
def load_from_json(file_path)->Iterable[Document]: array = [] with open(file_path, 'r') as json_file: for line in json_file: data = json.loads(line) obj = Document(**data) array.append(obj) return array docs = load_from_json('/content/drive/dataset.json') from langchain.text_splitter import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter( chunk_size = 1000, chunk_overlap = 100, length_function = len, is_separator_regex = False, ) char_splits= text_splitter.split_documents(docs) from langchain_community.embeddings import HuggingFaceEmbeddings embeddings = HuggingFaceEmbeddings() import joblib loaded_db = joblib.load('/content/drive/Db/db_1000_100.joblib') import os from langchain.llms import HuggingFaceHub os.environ["HUGGINGFACEHUB_API_TOKEN"] = "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" repo_id = "mistralai/Mixtral-8x7B-Instruct-v0.1" llm = HuggingFaceHub( repo_id=repo_id, model_kwargs={"temperature": 0.5, "max_length": 512} ) 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} qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever, chain_type_kwargs=chain_type_kwargs) query = "Apa itu intervensi gizi spesifik?" qa.run(query) |
У вихідному результаті відображається не лише відповідь, але й контекст, що не відповідає очікуваному формату. Замість цього, необхідно отримати лише текст відповіді без додаткового контексту.