|
import glob |
|
import logging |
|
import sys |
|
|
|
import streamlit as st |
|
from haystack import Pipeline |
|
|
|
logging.basicConfig( |
|
level=logging.DEBUG, |
|
format="%(levelname)s %(asctime)s %(name)s:%(message)s", |
|
handlers=[logging.StreamHandler(sys.stdout)], |
|
force=True, |
|
) |
|
|
|
p_1 = None |
|
p_2 = None |
|
|
|
|
|
def app_init(): |
|
indexing_pipeline = Pipeline.load_from_yaml("pipeline.yaml", pipeline_name="indexing") |
|
file_paths = glob.glob("data/*") |
|
ds = indexing_pipeline.get_node("DocumentStore") |
|
ds.delete_all_documents() |
|
indexing_pipeline.run(file_paths=file_paths) |
|
ds.update_embeddings(indexing_pipeline.get_node("Retriever")) |
|
ds.save(config_path="my_faiss_config.json", index_path="my_faiss_index.faiss") |
|
|
|
global p_1 |
|
p_1 = Pipeline.load_from_yaml("pipeline.yaml", pipeline_name="query_1") |
|
|
|
global p_2 |
|
p_2 = Pipeline.load_from_yaml("pipeline.yaml", pipeline_name="query_2") |
|
|
|
|
|
def main(): |
|
app_init() |
|
st.title("Haystack Demo") |
|
input = st.text_input("Query ...") |
|
|
|
query_type = st.radio("Type", |
|
("Retrieval Augmented", "Retrieval Augmented with Sources", |
|
"Retrieval Augmented with Web Search")) |
|
|
|
|
|
col_1, col_2 = st.columns(2) |
|
|
|
with col_1: |
|
st.text("PLAIN") |
|
answers = p_1.run(input)["answers"] |
|
for ans in answers: |
|
st.text(ans.answer) |
|
|
|
with col_2: |
|
st.write(query_type.upper()) |
|
answers = p_2.run(input)["answers"] |
|
for ans in answers: |
|
st.text(ans.answer) |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|