| import gradio as gr |
| import numpy as np |
|
|
| def cascade_demo(query, N, r): |
| scores = np.log(r**np.arange(int(N))) + query/100 |
| top5 = np.argsort(scores)[-5:][::-1] |
| |
| result = "TOP 5 DOCS: " |
| for i in range(5): |
| idx = int(top5[i]) |
| score = float(scores[idx]) |
| result = result + "Doc#" + str(idx) + ":" + str(round(score,2)) + " " |
| |
| metrics = "N=" + str(int(N)) + " r=" + str(round(r,3)) + " stable" |
| return result, metrics |
|
|
| with gr.Blocks() as demo: |
| gr.Markdown("# CascadeRAG Demo") |
| with gr.Row(): |
| q = gr.Slider(0, 100, 50, label="Query") |
| n = gr.Slider(50, 500, 100, label="Docs") |
| r = gr.Slider(0.8, 0.99, 0.92, label="r") |
| |
| out1 = gr.Textbox(lines=4, label="Results") |
| out2 = gr.Textbox(lines=2, label="Metrics") |
| |
| gr.Button("Run").click(cascade_demo, [q,n,r], [out1,out2]) |
|
|
| demo.launch() |