import faiss import numpy as np from sentence_transformers import SentenceTransformer import gradio as gr # Schritt 1: Lade das Modell für die Embeddings model = SentenceTransformer('all-MiniLM-L6-v2') # Beispiel-Dokumente (könnten auch aus PDFs oder anderen Quellen stammen) documents = [ "LangChain ist eine Bibliothek für die Verarbeitung von Text mit LLMs.", "FAISS wird verwendet, um Vektoren effizient zu durchsuchen.", "Hugging Face bietet eine Vielzahl von vortrainierten Modellen." ] # Schritt 2: Erzeuge Embeddings für die Dokumente document_embeddings = model.encode(documents) # FAISS-Index für die Vektoren erstellen dimension = len(document_embeddings[0]) index = faiss.IndexFlatL2(dimension) document_embeddings = np.array(document_embeddings).astype('float32') index.add(document_embeddings) # Füge Dokumente zum Index hinzu # Schritt 3: Suche nach einer ähnlichen Antwort auf eine Eingabeabfrage def search_documents(query): query_embedding = model.encode([query])[0].astype('float32') D, I = index.search(np.array([query_embedding]), k=1) # Suche nach den Top 1 Treffern return documents[I[0][0]] # Gibt das am besten passende Dokument zurück # Gradio Interface def chatbot_response(query): return search_documents(query) interface = gr.Interface( fn=chatbot_response, inputs="text", outputs="text", title="FAISS-basierter Chatbot", description="Gib eine Frage ein, und erhalte eine Antwort basierend auf den Dokumenten." ) interface.launch()