la04 commited on
Commit
b12560a
·
verified ·
1 Parent(s): d93fe74

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -15
app.py CHANGED
@@ -22,7 +22,7 @@ def create_faiss_index(documents):
22
  index.add(document_embeddings)
23
  return index, documents
24
 
25
- # Text aus PDF extrahieren (kleinere Abschnitte)
26
  def extract_text_from_pdf(pdf_path):
27
  doc = fitz.open(pdf_path)
28
  text_chunks = []
@@ -34,18 +34,22 @@ def extract_text_from_pdf(pdf_path):
34
  return text_chunks
35
 
36
  # Suche nach mehreren passenden Abschnitten
37
- def search_documents(query, index, documents, k=5):
38
  query_embedding = model.encode([query])[0].astype('float32')
39
- D, I = index.search(np.array([query_embedding]), k=k)
40
  results = [documents[i] for i in I[0]]
41
- return " ".join(results) # Kombiniere mehrere Treffer
42
 
43
- # QA-Modell für präzise Antworten nutzen
44
- def generate_answer(context, question):
45
- max_context_length = 512
46
- truncated_context = " ".join(context.split()[:max_context_length]) # Kontext begrenzen
47
- result = qa_model(question=question, context=truncated_context)
48
- return result['answer']
 
 
 
 
49
 
50
  # Gesamtprozess
51
  def chatbot_response(pdf_path, question):
@@ -57,12 +61,12 @@ def chatbot_response(pdf_path, question):
57
  # FAISS-Index erstellen
58
  index, documents = create_faiss_index(text_chunks)
59
 
60
- # Kontext suchen
61
- context = search_documents(question, index, documents, k=5)
62
- logging.info(f"Verwendeter Kontext: {context[:500]}") # Loggen des Kontexts
63
 
64
  # Antwort generieren
65
- answer = generate_answer(context, question)
66
  return answer
67
 
68
  # Gradio-Interface
@@ -75,7 +79,7 @@ interface = gr.Interface(
75
  inputs=[pdf_input, question_input],
76
  outputs=response_output,
77
  title="PDF-Fragebeantwortung mit FAISS und Transformers",
78
- description="Lade eine PDF-Datei hoch und stelle Fragen zu ihrem Inhalt. Das System verwendet FAISS, Transformers und ein QA-Modell, um präzise Antworten zu liefern."
79
  )
80
 
81
  if __name__ == "__main__":
 
22
  index.add(document_embeddings)
23
  return index, documents
24
 
25
+ # Text aus PDF extrahieren
26
  def extract_text_from_pdf(pdf_path):
27
  doc = fitz.open(pdf_path)
28
  text_chunks = []
 
34
  return text_chunks
35
 
36
  # Suche nach mehreren passenden Abschnitten
37
+ def search_documents(query, index, documents, k=10):
38
  query_embedding = model.encode([query])[0].astype('float32')
39
+ D, I = index.search(np.array([query_embedding]), k=k) # Suche nach den Top k Treffern
40
  results = [documents[i] for i in I[0]]
41
+ return results # Liste von Kontexten zurückgeben
42
 
43
+ # Kombiniere mehrere Antworten
44
+ def generate_detailed_answer(contexts, question):
45
+ detailed_answer = []
46
+ for context in contexts:
47
+ try:
48
+ result = qa_model(question=question, context=context)
49
+ detailed_answer.append(result['answer'])
50
+ except Exception as e:
51
+ logging.warning(f"Fehler im QA-Modell: {e}")
52
+ return " ".join(detailed_answer)
53
 
54
  # Gesamtprozess
55
  def chatbot_response(pdf_path, question):
 
61
  # FAISS-Index erstellen
62
  index, documents = create_faiss_index(text_chunks)
63
 
64
+ # Suche nach Kontexten
65
+ contexts = search_documents(question, index, documents, k=10)
66
+ logging.info(f"Gefundene Kontexte: {[context[:100] for context in contexts]}") # Logge die ersten 100 Zeichen jedes Kontexts
67
 
68
  # Antwort generieren
69
+ answer = generate_detailed_answer(contexts, question)
70
  return answer
71
 
72
  # Gradio-Interface
 
79
  inputs=[pdf_input, question_input],
80
  outputs=response_output,
81
  title="PDF-Fragebeantwortung mit FAISS und Transformers",
82
+ description="Lade eine PDF-Datei hoch und stelle Fragen zu ihrem Inhalt. Das System verwendet FAISS, Transformers und ein QA-Modell, um detaillierte Antworten zu liefern."
83
  )
84
 
85
  if __name__ == "__main__":