neural-search / interface /components.py
ugmSorcero
Adds linter and fixes linting
39503cb
raw
history blame
2.14 kB
import streamlit as st
import core.pipelines as pipelines_functions
from inspect import getmembers, isfunction
from networkx.drawing.nx_agraph import to_agraph
def component_select_pipeline(container):
pipeline_names, pipeline_funcs = list(
zip(*getmembers(pipelines_functions, isfunction))
)
pipeline_names = [
" ".join([n.capitalize() for n in name.split("_")]) for name in pipeline_names
]
with container:
selected_pipeline = st.selectbox(
"Select pipeline",
pipeline_names,
index=pipeline_names.index("Keyword Search")
if "Keyword Search" in pipeline_names
else 0,
)
(
st.session_state["search_pipeline"],
st.session_state["index_pipeline"],
) = pipeline_funcs[pipeline_names.index(selected_pipeline)]()
def component_show_pipeline(container, pipeline):
"""Draw the pipeline"""
with st.expander("Show pipeline"):
graphviz = to_agraph(pipeline.graph)
graphviz.layout("dot")
st.graphviz_chart(graphviz.string())
def component_show_search_result(container, results):
with container:
for idx, document in enumerate(results):
st.markdown(f"### Match {idx+1}")
st.markdown(f"**Text**: {document['text']}")
st.markdown(f"**Document**: {document['id']}")
if document["score"] is not None:
st.markdown(f"**Score**: {document['score']:.3f}")
st.markdown("---")
def component_text_input(container):
"""Draw the Text Input widget"""
with container:
texts = []
doc_id = 1
with st.expander("Enter documents"):
while True:
text = st.text_input(f"Document {doc_id}", key=doc_id)
if text != "":
texts.append({"text": text})
doc_id += 1
st.markdown("---")
else:
break
corpus = [
{"text": doc["text"], "id": doc_id} for doc_id, doc in enumerate(texts)
]
return corpus