Spaces:
Runtime error
Runtime error
Jorge Henao
commited on
Commit
·
7a7cae5
1
Parent(s):
318efe3
streamlit interface updated to support mutiple index
Browse files- app_pinecode.py +146 -72
app_pinecode.py
CHANGED
@@ -12,11 +12,68 @@ logging.getLogger("haystack").setLevel(logging.INFO)
|
|
12 |
|
13 |
logging.info("This is a test log ..")
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
extractive_query = PinecodeProposalQueries (es_host = Config.es_host, es_index = Config.proposals_index,
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
|
|
|
|
|
|
|
20 |
def fake_search(question, retriever_top_k, reader_top_k):
|
21 |
#p1_result = query.search_by_query(query = question, retriever_top_k = retriever_top_k, reader_top_k = reader_top_k, es_index = "informecomisionverdad")
|
22 |
result = []
|
@@ -38,75 +95,92 @@ def search(question, retriever_top_k, reader_top_k):
|
|
38 |
|
39 |
return result
|
40 |
|
41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
# streamlit part starts here with title
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
submitted = st.form_submit_button("Buscar")
|
60 |
-
|
61 |
-
results = search("que es el adres", retriever_top_k=5, reader_top_k=3)
|
62 |
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
# retrieve top 5 documents
|
68 |
-
results = search(query, retriever_top_k=5, reader_top_k=3)
|
69 |
-
# set endtime
|
70 |
-
ent = time.time()
|
71 |
-
# measure resulting time
|
72 |
-
elapsed_time = round(ent - stt, 2)
|
73 |
-
|
74 |
-
# show which query was entered, and what was searching time
|
75 |
-
st.write(f"**Resultados relacionados con:** \"{query}\" ({elapsed_time} sec.)")
|
76 |
-
# then we use loop to show results
|
77 |
-
for i, answer in enumerate(results):
|
78 |
-
# answer starts with header
|
79 |
-
st.subheader(f"{answer[1]}")
|
80 |
-
# cropped answer
|
81 |
-
doc = answer[2][:250] + "..."
|
82 |
-
# and url to the full answer
|
83 |
-
#url = f"https://www.comisiondelaverdad.co/sites/default/files/descargables/2022-06/Informe%20Final%20capi%CC%81tulo%20Hallazgos%20y%20recomendaciones.pdf#page={answer[5]+1}"
|
84 |
-
url = f"https://petro.presidencia.gov.co/Documents/230213-Reforma-salud.pdf"
|
85 |
-
# then we display it
|
86 |
-
#st.markdown(f'{doc}\n<br>Fuente: {answer[4]}\n<br>Capítulo: {answer[3]}\n<br>P��gina: {answer[5]}\n[**Lee más aquí**]({url})\n', unsafe_allow_html=True)
|
87 |
-
st.markdown(f"{doc}[**Lee más aquí**]({url})")
|
88 |
-
st.caption(f"Fuente: {answer[4]} - Capítulo: {answer[3]} - Página: {answer[5]}")
|
89 |
-
|
90 |
-
st.markdown("---")
|
91 |
-
else:
|
92 |
-
st.markdown("""Cuanto más contexto le des a la pregunta, mejor funciona. puedes escribir consultas como: _**\"¿periodo con más detenciones arbitrarias registradas?\"**_,\_**\"¿cantidad de víctimas en la masacre de bojayá?\"**_,\
|
93 |
-
_**\"¿cuantas víctimas de desplazamiento en antioquia?\"**_""")
|
94 |
-
st.markdown("""
|
95 |
-
<div align="right">
|
96 |
-
Creado por Jorge Henao 🇨🇴 <a href="https://twitter.com/jhenaotw" target='_blank'>Twitter</a> <a href="https://www.linkedin.com/in/henaojorge" target='_blank'/>LinkedIn</a> </div>
|
97 |
-
""", unsafe_allow_html=True)
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
logging.info("This is a test log ..")
|
14 |
|
15 |
+
samples_salud = """
|
16 |
+
¿Cuándo se implementará el Sistema de Salud?
|
17 |
+
¿Cómo se implementará el Sistema de Salud?
|
18 |
+
¿Qué es principio de interpretación y fundamento de la transición en relación al Sistema de Salud?
|
19 |
+
¿Qué se garantiza en todo momento con el nuevo Sistema de Salud?
|
20 |
+
¿Qué son los Centros de Atención Primaria Integrales y Resolutivos en Salud - CAPIRS?
|
21 |
+
¿Qué se garantiza durante el periodo de transición del nuevo Sistema de Salud?
|
22 |
+
¿Puede haber personas sin protección de su salud durante el periodo de transición?
|
23 |
+
¿Cuál es el derecho fundamental que se garantiza en todo momento durante la transición del nuevo Sistema de Salud?
|
24 |
+
¿En qué país se está implementando este Sistema de Salud?
|
25 |
+
¿Qué se debe realizar para garantizar la gestión de los recursos en el nivel nacional y desconcentrado?
|
26 |
+
¿Cómo se regirá el régimen de contratación de los contratos mencionados en el texto?
|
27 |
+
¿Qué son las cláusulas exorbitantes previstas en el estatuto General de Contratación de la administración pública?
|
28 |
+
¿Qué principios deben atender los contratos mencionados en el texto?
|
29 |
+
¿Cuál es el ámbito de aplicación de los contratos mencionados en el texto?
|
30 |
+
¿Quién tiene la responsabilidad de realizar la auditoría de las cuentas en relación a estos contratos?
|
31 |
+
¿Cuáles son las características que deben cumplir los contratos mencionados en el texto?
|
32 |
+
¿Qué se entiende por "coordinación" en el contexto de los contratos mencionados en el texto?
|
33 |
+
¿Qué objetivo se busca con los contratos mencionados en el texto?
|
34 |
+
¿Quién será el encargado de contratar los servicios de salud y otros requerimientos para el cumplimiento de su labor en el nivel regional?
|
35 |
+
¿Qué tipo de instituciones hospitalarias y ambulatorias se integran a la red de servicios del territorio?
|
36 |
+
¿Qué tarifas deben seguir las instituciones hospitalarias y ambulatorias para la prestación de servicios de salud?
|
37 |
+
¿Qué busca modular el régimen de tarifas y formas de pago para la prestación de servicios de salud?
|
38 |
+
¿Qué tipo de registro llevará el Fondo Regional de Salud?
|
39 |
+
¿Cuáles son algunas de las variables que se incluirán en el registro de cada servicio prestado y pagado?
|
40 |
+
"""
|
41 |
+
|
42 |
+
samples_hallazgos = """
|
43 |
+
¿Cuándo se implementará el Sistema de Salud?
|
44 |
+
¿Cómo se implementará el Sistema de Salud?
|
45 |
+
¿Qué es principio de interpretación y fundamento de la transición en relación al Sistema de Salud?
|
46 |
+
¿Qué se garantiza en todo momento con el nuevo Sistema de Salud?
|
47 |
+
¿Qué son los Centros de Atención Primaria Integrales y Resolutivos en Salud - CAPIRS?
|
48 |
+
¿Qué se garantiza durante el periodo de transición del nuevo Sistema de Salud?
|
49 |
+
¿Puede haber personas sin protección de su salud durante el periodo de transición?
|
50 |
+
¿Cuál es el derecho fundamental que se garantiza en todo momento durante la transición del nuevo Sistema de Salud?
|
51 |
+
¿En qué país se está implementando este Sistema de Salud?
|
52 |
+
¿Qué se debe realizar para garantizar la gestión de los recursos en el nivel nacional y desconcentrado?
|
53 |
+
¿Cómo se regirá el régimen de contratación de los contratos mencionados en el texto?
|
54 |
+
¿Qué son las cláusulas exorbitantes previstas en el estatuto General de Contratación de la administración pública?
|
55 |
+
¿Qué principios deben atender los contratos mencionados en el texto?
|
56 |
+
¿Cuál es el ámbito de aplicación de los contratos mencionados en el texto?
|
57 |
+
¿Quién tiene la responsabilidad de realizar la auditoría de las cuentas en relación a estos contratos?
|
58 |
+
¿Cuáles son las características que deben cumplir los contratos mencionados en el texto?
|
59 |
+
¿Qué se entiende por "coordinación" en el contexto de los contratos mencionados en el texto?
|
60 |
+
¿Qué objetivo se busca con los contratos mencionados en el texto?
|
61 |
+
¿Quién será el encargado de contratar los servicios de salud y otros requerimientos para el cumplimiento de su labor en el nivel regional?
|
62 |
+
¿Qué tipo de instituciones hospitalarias y ambulatorias se integran a la red de servicios del territorio?
|
63 |
+
¿Qué tarifas deben seguir las instituciones hospitalarias y ambulatorias para la prestación de servicios de salud?
|
64 |
+
¿Qué busca modular el régimen de tarifas y formas de pago para la prestación de servicios de salud?
|
65 |
+
¿Qué tipo de registro llevará el Fondo Regional de Salud?
|
66 |
+
¿Cuáles son algunas de las variables que se incluirán en el registro de cada servicio prestado y pagado?
|
67 |
+
"""
|
68 |
+
|
69 |
extractive_query = PinecodeProposalQueries (es_host = Config.es_host, es_index = Config.proposals_index,
|
70 |
+
es_user = Config.es_user, es_password = Config.es_password,
|
71 |
+
reader_name_or_path = Config.reader_model_name_or_path,
|
72 |
+
use_gpu = Config.use_gpu)
|
73 |
|
74 |
+
def clear_submit():
|
75 |
+
st.session_state["submit"] = False
|
76 |
+
|
77 |
def fake_search(question, retriever_top_k, reader_top_k):
|
78 |
#p1_result = query.search_by_query(query = question, retriever_top_k = retriever_top_k, reader_top_k = reader_top_k, es_index = "informecomisionverdad")
|
79 |
result = []
|
|
|
95 |
|
96 |
return result
|
97 |
|
98 |
+
def search_and_show_results(st):
|
99 |
+
# set start time
|
100 |
+
stt = time.time()
|
101 |
+
# retrieve top 5 documents
|
102 |
+
results = search(query, retriever_top_k=5, reader_top_k=3)
|
103 |
+
# set endtime
|
104 |
+
ent = time.time()
|
105 |
+
# measure resulting time
|
106 |
+
elapsed_time = round(ent - stt, 2)
|
107 |
+
|
108 |
+
# show which query was entered, and what was searching time
|
109 |
+
st.write(f"**Resultados relacionados con:** \"{query}\" ({elapsed_time} sec.)")
|
110 |
+
# then we use loop to show results
|
111 |
+
for i, answer in enumerate(results):
|
112 |
+
# answer starts with header
|
113 |
+
st.subheader(f"{answer[1]}")
|
114 |
+
# cropped answer
|
115 |
+
doc = answer[2][:250] + "..."
|
116 |
+
# and url to the full answer
|
117 |
+
#url = f"https://www.comisiondelaverdad.co/sites/default/files/descargables/2022-06/Informe%20Final%20capi%CC%81tulo%20Hallazgos%20y%20recomendaciones.pdf#page={answer[5]+1}"
|
118 |
+
url = f"https://petro.presidencia.gov.co/Documents/230213-Reforma-salud.pdf"
|
119 |
+
# then we display it
|
120 |
+
#st.markdown(f'{doc}\n<br>Fuente: {answer[4]}\n<br>Capítulo: {answer[3]}\n<br>Página: {answer[5]}\n[**Lee más aquí**]({url})\n', unsafe_allow_html=True)
|
121 |
+
st.markdown(f"{doc}[**Lee más aquí**]({url})")
|
122 |
+
st.caption(f"Fuente: {answer[4]} - Capítulo: {answer[3]} - Página: {answer[5]}")
|
123 |
+
|
124 |
+
st.markdown("---")
|
125 |
+
|
126 |
+
results = search("que es el adres", retriever_top_k=5, reader_top_k=3)
|
127 |
+
|
128 |
+
# if __name__ == "__main__":
|
129 |
# streamlit part starts here with title
|
130 |
+
title = """
|
131 |
+
<h1 style='
|
132 |
+
text-align: center;
|
133 |
+
color: #39AA35'>
|
134 |
+
Ask2Democracy 🇨🇴
|
135 |
+
</h1>
|
136 |
+
<p>
|
137 |
+
Muchas de las discusiones que ocurren en Colombia terminan siendo artículos o pdfs que salvo excpciones, nadie lee.
|
138 |
+
Este sistema de búsquedas usa inteligencia artificial para apoyar el entendimiendo de textos relevantes que suelen estar dispersos y poco accesibles.
|
139 |
+
Como las propuestas presidenciales del 22, los hallazgos de la comisión de la verdad, los textos de las reformas, etc.
|
140 |
+
"""
|
141 |
+
st.markdown(title, unsafe_allow_html=True)
|
142 |
+
st.markdown("""<div align="right">
|
143 |
+
Creado por Jorge Henao 🇨🇴 <a href="https://twitter.com/jhenaotw" target='_blank'>Twitter</a> <a href="https://www.linkedin.com/in/henaojorge" target='_blank'/>LinkedIn</a> </div>
|
144 |
+
""", unsafe_allow_html=True)
|
145 |
+
st.write(f"Cuanto más contexto le des a la pregunta mejor funciona el sistema.")
|
|
|
|
|
|
|
146 |
|
147 |
+
# Sidebar
|
148 |
+
index = None
|
149 |
+
doc = None
|
150 |
+
selected_index = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
|
152 |
+
with st.sidebar:
|
153 |
+
st.write("Ask2Democracy 🇨🇴")
|
154 |
+
selected_index = st.selectbox("Seleccion la colección sobre el que deseas buscar",
|
155 |
+
["Propuesta Reforma de la salud 2023",
|
156 |
+
"Hallazgos de la comisión de la verdad 2022"])
|
157 |
+
|
158 |
+
tab1, tab2 = st.tabs(["Buscar", "About"])
|
159 |
+
with tab1:
|
160 |
+
query = st.text_area("Escribe tu pregunta", on_change=clear_submit)
|
161 |
+
button = st.button("Buscar")
|
162 |
+
if button or st.session_state.get("submit"):
|
163 |
+
if not query:
|
164 |
+
st.error("¡escribe una pregunta!")
|
165 |
+
else:
|
166 |
+
st.session_state["submit"] = True
|
167 |
+
search_and_show_results(st)
|
168 |
+
|
169 |
+
with tab2:
|
170 |
+
st.markdown("### Beta disclaimer")
|
171 |
+
desc = """Sistema experimental en beta. Las respuestas que arroja el sistema no han sido pregrabadas ni basadas en opiniones.
|
172 |
+
Los documentos indexados han sido tomados de fuentes oficiales. Como el informe final de la CEV y la página oficial de la presidencia de la república de Colombia.
|
173 |
+
Este explorador usa modelos de inteligencia artificial que ayudan a entender el lenguaje español, sin embargo,
|
174 |
+
necesita de un mayor entrenamiento por lo que, en ocasiones, puede ser confuso y no tan preciso.
|
175 |
+
Si quieres apoyar escríbeme a [email protected]
|
176 |
+
"""
|
177 |
+
st.write(desc)
|
178 |
+
st.write("### Here's how it works:")
|
179 |
+
st.write("""Usa sentence transformers nombremodelo
|
180 |
+
nombre modelo reader
|
181 |
+
pinecode dtabase
|
182 |
+
Por: Jorge Henao 🇨🇴 Twitter LinkedIn
|
183 |
+
repo en github con FastAPI / HayStack""")
|
184 |
+
st.markdown("""---""")
|
185 |
+
st.write('Author: <a href="https://www.linkedin.com/in/daniel-avila-arias/">Daniel Avila</a>', unsafe_allow_html=True)
|
186 |
+
st.write('Repo: <a href="https://github.com/davila7/semantic-search">Github</a>', unsafe_allow_html=True)
|