Spaces:
Sleeping
Sleeping
| 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() |