File size: 2,592 Bytes
01b8e8e
 
 
39503cb
4107940
39503cb
 
 
1b47089
39503cb
 
01b8e8e
 
 
f670f93
01b8e8e
 
 
 
57f7a2e
f670f93
 
 
9d9f8c0
57f7a2e
213d365
fae3074
 
 
 
39503cb
 
01b8e8e
 
 
39503cb
01b8e8e
 
39503cb
6c3736e
39503cb
01b8e8e
39503cb
01b8e8e
6c3736e
01b8e8e
39503cb
01b8e8e
39503cb
01b8e8e
39503cb
 
01b8e8e
 
 
39503cb
6c3736e
39503cb
01b8e8e
 
1b47089
4107940
01b8e8e
 
 
 
 
 
 
 
 
39503cb
01b8e8e
39503cb
01b8e8e
 
 
 
 
6c3736e
01b8e8e
 
39503cb
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import streamlit as st
from streamlit_option_menu import option_menu
from core.search_index import index, search
from interface.components import (
    component_file_input,
    component_show_pipeline,
    component_show_search_result,
    component_text_input,
    component_article_url,
)


def page_landing_page(container):
    with container:
        st.header("Neural Search V2.0")

        st.markdown(
            "This is a tool to allow indexing & search content using neural capabilities"
        )
        st.markdown(
            "In this second version you can:"
            "\n  - Index raw text, URLs and almost any file as documents"
            "\n  - Use Dense Passage Retrieval & Keyword Search pipeline"
            "\n  - Search the indexed documents"
        )
        st.markdown(
            "TODO list:"
            "\n  - Build other pipelines"
            "\n  - [Optional] Include text to audio to read responses"
        )


def page_search(container):
    with container:
        st.title("Query me!")

        ## SEARCH ##
        query = st.text_input("Query")

        component_show_pipeline(st.session_state["pipeline"]["search_pipeline"])

        if st.button("Search"):
            st.session_state["search_results"] = search(
                queries=[query],
                pipeline=st.session_state["pipeline"]["search_pipeline"],
            )
        if "search_results" in st.session_state:
            component_show_search_result(
                container=container, results=st.session_state["search_results"][0]
            )


def page_index(container):
    with container:
        st.title("Index time!")

        component_show_pipeline(st.session_state["pipeline"]["index_pipeline"])

        input_funcs = {
            "Raw Text": (component_text_input, "card-text"),
            "URL": (component_article_url, "card-link"),
            "File": (component_file_input, "card-file"),
        }
        selected_input = option_menu(
            "Input Text",
            list(input_funcs.keys()),
            icons=[f[1] for f in input_funcs.values()],
            menu_icon="list",
            default_index=0,
            orientation="horizontal",
        )

        corpus = input_funcs[selected_input][0](container)

        if len(corpus) > 0:
            index_results = None
            if st.button("Index"):
                index_results = index(
                    corpus,
                    st.session_state["pipeline"]["index_pipeline"],
                )
            if index_results:
                st.write(index_results)