| import gradio as gr |
| from embed_with_db import get_all_collections, VECTORDB_STORE, config |
| from vectorize import VectorDataBase |
|
|
| def respond(message, chat_history, collection_name): |
| chain = VECTORDB_STORE(collection_name).chain() |
| res = chain.invoke(message) |
| chat_history.append((message, res)) |
| return "", chat_history |
|
|
|
|
| def embed_and_store(password, collection_name, file_type, file_fields, context,page_start): |
| if password == config['PASSWORD_DB']: |
| if str(file_type)== 'string': |
| file_fields = context |
| vector_db = VectorDataBase(file_fields, collection_name, file_type, page_start=page_start) |
| vector_db.embedding_with_loop() |
| return file_fields,context |
| else: |
| raise Exception('Something went wrong') |
| def update_interface(file_type): |
| if file_type == 'PDF' or file_type == 'TEXT': |
| return gr.Textbox(visible= False),gr.File(label = 'Select the file',interactive= True,visible= True) |
| else: |
| return gr.Textbox(visible = True, label= 'Enter the Context', interactive= True),gr.File(visible= False) |
|
|
| with gr.Blocks() as demo: |
| with gr.Tab('Personal Chat bot'): |
| gr.Markdown(""" |
| <div align='center'>RAG Application with Open Source models</div> |
| <div align='center'> |
| > You could ask anything about Me & Data Science. I hope it will find you well |
| </div> |
| """) |
| db_collection = gr.Dropdown( |
| list(get_all_collections().values()), label="Select Collection for the retriever", |
| value= 'Data scientist', |
| allow_custom_value=True) |
| chatbot = gr.Chatbot(height=480) |
| msg = gr.Textbox(label="Prompt", interactive= True) |
| btn = gr.Button("Submit") |
| clear = gr.ClearButton(components=[msg, chatbot], value="Clear console") |
| btn.click(respond, inputs=[msg, chatbot, db_collection], outputs=[msg, chatbot]) |
| msg.submit(respond, inputs=[msg, chatbot,db_collection], outputs=[msg, chatbot]) |
|
|
| with gr.Tab('Data Base and Embedding Store'): |
| gr.Markdown(""" |
| <div align='center'>Store the Document | String in Database</div> |
| |
| > Only admin user allowed |
| """) |
| with gr.Row(): |
| password = gr.Textbox(label='Enter the Password') |
| collection_name = gr.Textbox(label='Collection Name') |
| page_start = gr.Textbox(label='Page Start') |
| file_type = gr.Dropdown(['PDF', 'TEXT', 'STRING'], label='Select File Type', |
| value = 'PDF') |
| file_fields = gr.File(visible = True, interactive=True) |
| context = gr.Textbox(label="Enter the Context", visible = False) |
| btn = gr.Button("Submit") |
|
|
| btn.click(embed_and_store, inputs=[password, collection_name, file_type, file_fields, context,page_start], outputs=[file_fields, context]) |
| file_type.change(update_interface, inputs=[file_type], outputs=[context, file_fields]) |
| gr.Markdown(""" |
| <div align='center'>It could be helpful for making RAG application</div> |
| <div align='center'>| MONGODB | LANGCHAIN | HUGGINGFACE | MITSRAL |</div> |
| """) |
|
|
| demo.launch() |
|
|