Spaces:
Running
Running
import gradio as gr | |
from langchain_community.document_loaders import PyPDFLoader | |
from langchain.text_splitter import RecursiveCharacterTextSplitter | |
from langchain_community.embeddings import HuggingFaceEmbeddings | |
from langchain_community.vectorstores import FAISS | |
from langchain.chains import RetrievalQA | |
from langchain_community.llms import HuggingFacePipeline | |
from transformers import pipeline | |
def qa_from_pdf(pdf_path, question): | |
loader = PyPDFLoader(pdf_path) | |
pages = loader.load() | |
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100) | |
documents = splitter.split_documents(pages) | |
embedding_model = HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2') | |
db = FAISS.from_documents(documents, embedding_model) | |
hf_pipeline = pipeline('text-generation', model='sshleifer/tiny-gpt2', max_new_tokens=100) | |
llm = HuggingFacePipeline(pipeline=hf_pipeline) | |
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=db.as_retriever()) | |
answer = qa_chain.run(question) | |
return answer | |
iface = gr.Interface( | |
fn=qa_from_pdf, | |
inputs=[ | |
gr.File(label="PDF Dosyası Yükle", file_types=[".pdf"], type="filepath"), | |
gr.Textbox(label="Sorunuzu yazın") | |
], | |
outputs="text", | |
title="📄 RAG Demo: PDF üzerinden Soru-Cevap", | |
description="Bir PDF yükleyin ve ona sorular sorun. Küçük dil modeliyle çalışan demo." | |
) | |
if __name__ == "__main__": | |
iface.launch() | |