Spaces:
Sleeping
Sleeping
| 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() | |