File size: 1,609 Bytes
b917edb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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="books_collection"
)

multilingual_chroma = ChromaDB(
    embedding_function=SentenceTransformerEmbedding(model_name='paraphrase-multilingual-mpnet-base-v2'),
    collection_name="books_collection"
)

# Function to search for products
def search_novels(query, k, model_type):
    if model_type == 'base':
        result = st_chroma.search(query_text=query, n_results=k)
    else:
        result = multilingual_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 courses")
    with gr.Row():
        search_type = gr.Dropdown(label="Model", choices=['base', 'multilingual'], value='base')
        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, search_type], outputs=results)

demo.launch()