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