|
|
|
|
|
from datasets import load_dataset |
|
dataset = load_dataset("Namitg02/Test") |
|
print(dataset) |
|
|
|
from langchain.docstore.document import Document as LangchainDocument |
|
|
|
|
|
|
|
from langchain.text_splitter import RecursiveCharacterTextSplitter |
|
splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=15,separators=["\n\n", "\n", " ", ""]) |
|
|
|
docs = splitter.create_documents(str(dataset)) |
|
|
|
|
|
from langchain_community.embeddings import HuggingFaceEmbeddings |
|
embedding_model = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2") |
|
|
|
|
|
|
|
from langchain_community.vectorstores import Chroma |
|
persist_directory = 'docs/chroma/' |
|
|
|
vectordb = Chroma.from_documents( |
|
documents=docs, |
|
embedding=embedding_model, |
|
persist_directory=persist_directory |
|
) |
|
|
|
retriever = vectordb.as_retriever() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from transformers import pipeline |
|
from transformers import BitsAndBytesConfig |
|
from transformers import AutoTokenizer, AutoModelForCausalLM |
|
|
|
|
|
READER_MODEL = "HuggingFaceH4/zephyr-7b-beta" |
|
bnb_config = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4") |
|
model = AutoModelForCausalLM.from_pretrained(READER_MODEL,quantization_config=bnb_config) |
|
tokenizer = AutoTokenizer.from_pretrained(READER_MODEL) |
|
|
|
from langchain.llms import HuggingFacePipeline |
|
from langchain.prompts import PromptTemplate |
|
from transformers import pipeline |
|
from langchain_core.output_parsers import StrOutputParser |
|
|
|
|
|
text_generation_pipeline = pipeline( |
|
model=model, |
|
tokenizer=tokenizer, |
|
task="text-generation", |
|
temperature=0.2, |
|
do_sample=True, |
|
repetition_penalty=1.1, |
|
return_full_text=True, |
|
max_new_tokens=100, |
|
) |
|
|
|
llm = HuggingFacePipeline(pipeline=text_generation_pipeline) |
|
|
|
|
|
|
|
|
|
prompt_template = """ |
|
<|system|> |
|
Answer the question based on your knowledge. Use the following context to help: |
|
|
|
{context} |
|
|
|
</s> |
|
<|user|> |
|
{question} |
|
</s> |
|
<|assistant|> |
|
|
|
""" |
|
|
|
QA_CHAIN_PROMPT = PromptTemplate( |
|
input_variables=["context", "question"], |
|
template=prompt_template, |
|
) |
|
|
|
|
|
llm_chain = QA_CHAIN_PROMPT | llm | StrOutputParser() |
|
|
|
|
|
from langchain_core.runnables import RunnablePassthrough |
|
|
|
|
|
retriever=vectordb.as_retriever() |
|
|
|
rag_chain = {"context": retriever, "question": RunnablePassthrough()} | llm_chain |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
question = "Can I reverse Diabetes?" |
|
print("template") |
|
|
|
|
|
|
|
import gradio as gr |
|
gr.load("READER_MODEL").launch() |
|
|
|
|
|
|