Spaces:
Sleeping
Sleeping
File size: 1,969 Bytes
56daa17 6e1c776 56daa17 6e1c776 56daa17 1474017 56daa17 6e1c776 56daa17 803ac17 56daa17 1474017 56daa17 1474017 56daa17 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import os
import PyPDF2
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
from langchain.text_splitter import RecursiveCharacterTextSplitter
# Funktion zum Extrahieren von Text aus PDF
def extract_text_from_pdf(pdf_path):
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfReader(file)
text = ""
for page in reader.pages:
text += page.extract_text()
return text
# Funktion zum Erstellen von Embeddings und Indexierung
def create_embeddings_and_index(text):
# Text in kleinere Teile aufteilen
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_text(text)
# Embeddings erzeugen
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
# Indexierung mit FAISS
db = FAISS.from_texts(texts, embeddings)
return db
# Funktion für die Frage-Antwort-Pipeline
def answer_question(db, question):
qa_chain = RetrievalQA.from_chain_type(llm=OpenAI(), retriever=db.as_retriever())
response = qa_chain.run(question)
return response
# Beispiel für die Nutzung
def main():
# Dokument-Pfad
pdf_path = 'path_to_your_pdf_document.pdf'
# PDF extrahieren
text = extract_text_from_pdf(pdf_path)
print(f"Text aus dem Dokument extrahiert: {text[:500]}...") # Nur ersten 500 Zeichen anzeigen
# Embeddings erstellen und Index erstellen
db = create_embeddings_and_index(text)
print("Embeddings und Index erfolgreich erstellt.")
# Frage stellen
question = "Was ist das Ziel dieses Dokuments?"
answer = answer_question(db, question)
print(f"Antwort auf die Frage '{question}': {answer}")
if __name__ == "__main__":
main()
|