|
import gradio as gr |
|
import faiss |
|
import numpy as np |
|
from sentence_transformers import SentenceTransformer |
|
import openai |
|
import pickle |
|
from utils import rag_based_generation, search_with_metadata_and_reranking |
|
|
|
|
|
embedder = SentenceTransformer("sentence-transformers/all-mpnet-base-v2") |
|
|
|
index = faiss.read_index('faiss_index.index') |
|
|
|
|
|
chunked_documents = np.load('chunked_documents.npy', allow_pickle=True) |
|
|
|
def rag_interface(query, author=None, category=None): |
|
try: |
|
filters = {} |
|
if author: |
|
filters['author'] = author |
|
if category: |
|
filters['categories'] = category |
|
generated_answer = rag_based_generation(query, index, chunked_documents, embedder, filters=filters, top_k=5) |
|
return generated_answer |
|
except Exception as e: |
|
import traceback |
|
return f"An error occurred: {str(e)}\n{traceback.format_exc()}" |
|
|
|
|
|
rag_demo = gr.Interface( |
|
fn=rag_interface, |
|
inputs=[gr.Textbox(label="Query"), gr.Textbox(label="Author (optional)"), gr.Textbox(label="Category (optional)")], |
|
outputs="text", |
|
title="Search for Articles!" |
|
) |
|
|
|
|
|
rag_demo.launch() |
|
|
|
|
|
|
|
|
|
|