muhammadshaheryar/Simple-RAG-App
0
1import streamlit as st2from langchain.embeddings import SentenceTransformerEmbeddings3from langchain.vectorstores import FAISS4from transformers import pipeline5 6import sentence_transformers7print(sentence_transformers.__version__)8from langchain.embeddings import SentenceTransformerEmbeddings9from langchain.embeddings.huggingface import HuggingFaceEmbeddings10embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")11 12import subprocess13import sys14 15# Install sentence-transformers if not installed16try:17 import sentence_transformers18except ImportError:19 subprocess.check_call([sys.executable, "-m", "pip", "install", "sentence-transformers"])20 21 22# Initialize embedding model23embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")24qa_pipeline = pipeline("question-answering", model="distilbert-base-uncased-distilled-squad")25 26def chunk_text(text, chunk_size=500):27 words = text.split()28 chunks = [" ".join(words[i:i + chunk_size]) for i in range(0, len(words), chunk_size)]29 return chunks30 31# Streamlit app32st.title("Simple RAG Application")33data = st.text_area("Paste your text here:")34if data:35 text_chunks = chunk_text(data)36 vectorstore = FAISS.from_texts(text_chunks, embeddings)37 retriever = vectorstore.as_retriever(search_kwargs={"k": 3})38 39 question = st.text_input("Ask a question:")40 if question:41 relevant_docs = retriever.get_relevant_documents(question)42 context = " ".join([doc.page_content for doc in relevant_docs])43 answer = qa_pipeline(question=question, context=context)44 st.write("Answer:", answer["answer"])45 