Spaces:
Sleeping
Sleeping
| from search import SemanticSearch, GoogleSearch, Document | |
| import streamlit as st | |
| from model import RAGModel, load_configs | |
| def run_on_start(): | |
| if "configs" not in st.session_state: | |
| st.session_state.configs = configs = load_configs(config_file="rag.configs.yml") | |
| if "model" not in st.session_state: | |
| st.session_state.model = RAGModel(configs) | |
| run_on_start() | |
| def search(query): | |
| g = GoogleSearch(query) | |
| data = g.all_page_data | |
| d = Document(data, min_char_len=st.session_state.configs["document"]["min_char_length"]) | |
| st.session_state.doc = d.doc() | |
| st.title("Search Here Instead of Google") | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [] | |
| if "doc" not in st.session_state: | |
| st.session_state.doc = None | |
| if "refresh" not in st.session_state: | |
| st.session_state.refresh = True | |
| if "refresh" not in st.session_state: | |
| st.session_state.refresh = True | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.markdown(message["content"]) | |
| if prompt := st.chat_input("Search Here insetad of Google"): | |
| st.chat_message("user").markdown(prompt) | |
| st.session_state.messages.append({"role": "user", "content": prompt}) | |
| if st.session_state.refresh: | |
| st.session_state.refresh = False | |
| search(prompt) | |
| s = SemanticSearch( | |
| st.session_state.doc, | |
| st.session_state.st.session_state.configs["model"]["embeding_model"], | |
| st.session_state.st.session_state.configs["model"]["device"], | |
| ) | |
| topk, u = s.semantic_search(query=prompt, k=32) | |
| output = st.session_state.model.answer_query(query=prompt, topk_items=topk) | |
| topk, u = s.semantic_search(query=prompt, k=32) | |
| output = st.session_state.model.answer_query(query=prompt, topk_items=topk) | |
| response = output | |
| with st.chat_message("assistant"): | |
| st.markdown(response) | |
| st.session_state.messages.append({"role": "assistant", "content": response}) | |