Spaces:
Runtime error
Runtime error
import numpy as np | |
import faiss | |
import pandas as pd | |
from transformers import pipeline | |
import gradio as gr | |
# Charger les embeddings et l'index FAISS | |
def load_embeddings_and_index(embeddings_file, index_file): | |
embeddings = np.load(embeddings_file) | |
index = faiss.read_index(index_file) | |
return embeddings, index | |
# Charger les données sources | |
def load_data(file_path): | |
data = pd.read_excel(file_path) | |
data['combined'] = data[['Product_name', 'price']].apply( | |
lambda row: f"Product: {row['Product_name']} | Price: {row['price']}", axis=1 | |
) | |
return data | |
# Effectuer une recherche dans l'index FAISS | |
def query_faiss_index(query, embeddings, index, data, embedding_model, top_k=5): | |
query_embedding = embedding_model.encode([query]) | |
distances, indices = index.search(query_embedding, top_k) | |
results = [data['combined'].iloc[idx] for idx in indices[0]] | |
return results | |
# Générer une réponse avec le modèle LLM | |
def generate_answer(query, context, llm_pipeline): | |
prompt = f"Given the following context, answer the question:\n\nContext:\n{context}\n\nQuestion: {query}\nAnswer:" | |
response = llm_pipeline(prompt, max_length=500, num_return_sequences=1) | |
return response[0]['generated_text'] | |
# Interface principale | |
def main(embeddings_file, index_file, data_file): | |
# Charger les données et les fichiers nécessaires | |
embeddings, index = load_embeddings_and_index(embeddings_file, index_file) | |
data = load_data(data_file) | |
# Charger le modèle LLM | |
llm_pipeline = pipeline("text-generation", model="HuggingFaceH4/zypher-llm") | |
# Interface utilisateur avec Gradio | |
def gradio_interface(query): | |
# Recherche dans FAISS | |
context = query_faiss_index(query, embeddings, index, data, embedding_model, top_k=5) | |
context_text = "\n".join(context) | |
# Générer une réponse à l'aide du LLM | |
answer = generate_answer(query, context_text, llm_pipeline) | |
return answer | |
# Lancer l'application Gradio | |
interface = gr.Interface(fn=gradio_interface, inputs="text", outputs="text", title="RAG Chatbot") | |
interface.launch() | |
# Exemple d'exécution | |
if __name__ == "__main__": | |
# Fichiers nécessaires | |
embeddings_file = "embeddings.npy" | |
index_file = "faiss_index.bin" | |
data_file = "avito.xls" | |
# Charger le modèle d'embedding | |
from sentence_transformers import SentenceTransformer | |
embedding_model = SentenceTransformer("all-MiniLM-L6-v2") | |
# Lancer le programme | |
main(embeddings_file, index_file, data_file) | |