teddyllm's picture
edit typo
9018da2 verified
from typing import List
from dataclasses import asdict
import pandas as pd
import gradio as gr
from SmartSearch.database.chromadb import ChromaDB
from SmartSearch.providers.SentenceTransformerEmbedding import SentenceTransformerEmbedding
from utils import combine_metadata_with_distance
st_chroma = ChromaDB(
embedding_function=SentenceTransformerEmbedding(model_name='all-mpnet-base-v2'),
collection_name="novel_mockup_collection"
)
# Function to search for products
def search_novels(query, k):
result = st_chroma.search(query_text=query, n_results=k)
result = combine_metadata_with_distance(result['metadatas'], result['distances'])
result = pd.DataFrame(result)
return result
with gr.Blocks() as demo:
with gr.Row():
query = gr.Textbox(label="Search Query", placeholder="write a query to find the novels")
with gr.Row():
# search_type = gr.Dropdown(label="Search Type", choices=['semantic', 'keyword', 'hybrid'], value='hybrid')
k = gr.Number(label="Items Count", value=10)
# rerank = gr.Checkbox(value=True, label="Rerank")
results = gr.Dataframe(label="Search Results")
search_button = gr.Button("Search", variant='primary')
search_button.click(fn=search_novels, inputs=[query, k], outputs=results)
demo.launch()