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()