wanghh2804's picture
Update app.py
ff1e2e5 verified
transformers
torch
sentence-transformers
gradio
import gradio as gr
from transformers import pipeline
from sentence_transformers import SentenceTransformer, util
# Load models
retriever_model = SentenceTransformer('all-MiniLM-L6-v2') # A sentence transformer for retrieval
generator_model = pipeline('text-generation', model='gpt2') # Use a suitable model
# Sample document collection
documents = [
"The quick fox jumps over the lazy dog.",
"A speedy brown fox jumps over the lazy dog.",
"A cat in the hat is wearing a red bow.",
"The sun sets behind the mountains, casting a warm glow."
]
# Function to perform retrieval and generation
def rag_evaluation(query):
# Compute embeddings for the documents
doc_embeddings = retriever_model.encode(documents, convert_to_tensor=True)
# Compute embedding for the query
query_embedding = retriever_model.encode(query, convert_to_tensor=True)
# Calculate cosine similarity
similarities = util.pytorch_cos_sim(query_embedding, doc_embeddings)[0]
# Get the most similar document
most_similar_idx = similarities.argmax()
retrieved_doc = documents[most_similar_idx]
# Generate a response based on the retrieved document
generated_response = generator_model(f"Based on the document: {retrieved_doc}, answer: {query}", max_length=50)[0]['generated_text']
return retrieved_doc, generated_response
# Gradio interface
iface = gr.Interface(
fn=rag_evaluation,
inputs=gr.Textbox(label="Enter your query"),
outputs=[gr.Textbox(label="Retrieved Document"), gr.Textbox(label="Generated Response")],
title="RAG Evaluation App",
description="Evaluate retrieval and generation performance of a RAG system."
)
iface.launch()