|
import gradio as gr |
|
from utils.rag_retriever import inicializar_rag, buscar_contexto |
|
|
|
print("Inicializando FAISS...") |
|
documentos, index, embedder = inicializar_rag() |
|
|
|
|
|
def formatar_resultados(contextos): |
|
if not contextos: |
|
return "Nenhum contexto encontrado." |
|
|
|
resultado = "**Contextos mais relevantes:**\n\n" |
|
for idx, texto, distancia in contextos: |
|
resultado += f"**Índice:** {idx} | **Distância:** {distancia:.4f}\n\n" |
|
resultado += f"**Texto:** {texto[:3200]}...\n\n" |
|
return resultado |
|
|
|
|
|
def buscar_contexto_interface(pergunta: str, k: int): |
|
try: |
|
|
|
|
|
|
|
|
|
contextos = buscar_contexto(pergunta, documentos, index, embedder, k) |
|
|
|
|
|
return formatar_resultados(contextos) |
|
except Exception as e: |
|
return f"Erro ao buscar contexto: {e}" |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("# RAG com FAISS - Busca de Contexto") |
|
gr.Markdown("Digite uma pergunta para buscar contextos relevantes nos documentos carregados.") |
|
|
|
with gr.Row(): |
|
pergunta_input = gr.Textbox(label="Pergunta", placeholder="Digite sua pergunta aqui...") |
|
k_input = gr.Slider(minimum=1, maximum=10, value=5, step=1, label="Número de resultados (k)") |
|
|
|
buscar_button = gr.Button("Buscar") |
|
output = gr.Markdown(label="Resultados") |
|
|
|
|
|
buscar_button.click( |
|
fn=buscar_contexto_interface, |
|
inputs=[pergunta_input, k_input], |
|
outputs=output |
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
demo.launch() |