|
import gradio as gr |
|
from vectordb import Memory |
|
|
|
|
|
memory = Memory() |
|
|
|
|
|
def save_data(texts, metadata): |
|
try: |
|
|
|
text_list = texts.strip().split("\n") |
|
metadata_list = [eval(meta.strip()) for meta in metadata.strip().split("\n")] |
|
memory.save(text_list, metadata_list) |
|
return "Data saved successfully!" |
|
except Exception as e: |
|
return f"Error saving data: {e}" |
|
|
|
|
|
def search_query(query, top_n): |
|
try: |
|
results = memory.search(query, top_n=int(top_n)) |
|
return results |
|
except Exception as e: |
|
return f"Error during search: {e}" |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("### VectorDB Search App") |
|
|
|
|
|
gr.Markdown("#### Save Data") |
|
with gr.Row(): |
|
input_texts = gr.Textbox( |
|
label="Enter text (one per line)", |
|
lines=5, |
|
placeholder="Example:\napples are green\noranges are orange" |
|
) |
|
input_metadata = gr.Textbox( |
|
label="Enter metadata (one per line, matching the texts)", |
|
lines=5, |
|
placeholder='Example:\n{"url": "https://apples.com"}\n{"url": "https://oranges.com"}' |
|
) |
|
save_button = gr.Button("Save Data") |
|
save_status = gr.Textbox(label="Status", interactive=False) |
|
save_button.click(save_data, inputs=[input_texts, input_metadata], outputs=save_status) |
|
|
|
|
|
gr.Markdown("#### Search") |
|
with gr.Row(): |
|
input_query = gr.Textbox(label="Enter your query") |
|
input_top_n = gr.Number(label="Top N results", value=1) |
|
output_result = gr.Textbox(label="Search Results", interactive=False) |
|
|
|
search_button = gr.Button("Search") |
|
search_button.click(search_query, inputs=[input_query, input_top_n], outputs=output_result) |
|
|
|
|
|
demo.launch() |
|
|