Я пытаюсь запустить систему RAG на своем Mac M3-pro (18 ГБ ОЗУ), используя langchain и `Llama-3.2-3B-Instruct` на ноутбуке Jupyter (векторное хранилище — Milvus). ).
Когда я вызываю RetrivalQA.from_chain_type, ячейка работает неопределенно долго (минимум 15 минут, не давала ей работать) дольше...).
prompt_template = """
You are a helpful assistant. Use the following context to answer the question concisely.
If you do not know the answer from the context, please state so and do not search for an answer elsewhere.
Context:
{context}
Question:
{question}
Answer:
"""
prompt = PromptTemplate(
input_variables=["context", "question"],
template=prompt_template
)
[b] Я пытаюсь запустить систему RAG на своем Mac M3-pro (18 ГБ ОЗУ), используя langchain и `Llama-3.2-3B-Instruct` на ноутбуке Jupyter (векторное хранилище — Milvus). ).
Когда я вызываю RetrivalQA.from_chain_type, ячейка работает неопределенно долго (минимум 15 минут, не давала ей работать) дольше...).
[code]from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type( llm=llm, retriever=retriever, return_source_documents=True, # (optional) chain_type_kwargs={"prompt": prompt} ) response = qa_chain.invoke({"query": question}) [/code] Можете ли вы помочь решить проблему, пожалуйста? LLM, программа извлечения и подсказка приведены ниже: [code]from langchain.llms.base import LLM from typing import List, Dict from pydantic import PrivateAttr
class HuggingFaceLLM(LLM): # Define pipeline as a private attribute _pipeline: any = PrivateAttr()
llm_pipeline = pipeline( "text-generation", model=model, tokenizer=tokenizer, device=0, max_new_tokens=256, temperature=0.7, top_p=0.9, truncation=True, ) [/code] подсказка: [code]prompt_template = """ You are a helpful assistant. Use the following context to answer the question concisely. If you do not know the answer from the context, please state so and do not search for an answer elsewhere.
documents = [] for hit in results[0]: documents.append( Document( page_content=hit.entity.get(self.text_field), metadata={"score": hit.distance} ) ) return documents
async def aget_relevant_documents(self, query: str) -> List[Dict]: """Asynchronous version of get_relevant_documents.""" return self.get_relevant_documents(query)
retriever = MilvusRetriever( collection=collection, embedding_function=embed_model.embed_query, text_field="text", vector_field="embedding", top_k=5 ) [/code] Я также проверяю, включены ли графические процессоры Mac: [code]import torch if torch.backends.mps.is_available(): print("MPS is available!") [/code]
Изменить 1[/b]: Как рекомендовано здесь, я попробовал добавить подробное описание: [code]qa_chain = RetrievalQA.from_chain_type( llm=llm, retriever=retriever, return_source_documents=True, # (optional) # return_source_documents=False, # (optional) verbose=True, chain_type_kwargs={ "verbose": True, "prompt": prompt } ) [/code] Теперь результат: [code]> Entering new RetrievalQA chain...
> Entering new StuffDocumentsChain chain...
> Entering new LLMChain chain... Prompt after formatting: