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()