Jorge Henao commited on
Commit
7a7cae5
·
1 Parent(s): 318efe3

streamlit interface updated to support mutiple index

Browse files
Files changed (1) hide show
  1. 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
- es_user = Config.es_user, es_password = Config.es_password,
17
- reader_name_or_path = Config.reader_model_name_or_path,
18
- use_gpu = Config.use_gpu)
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
- if __name__ == "__main__":
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  # streamlit part starts here with title
43
- title = """
44
- <h1 style='
45
- text-align: center;
46
- color: #39AA35'>
47
- Ask2Democracy 🇨🇴 - Reforma de la salud 2023
48
- </h1>
49
- <p>
50
- El 28 de junio del 2022, la Comisión de la Verdad en Colombia liberó su informe final. Fue el resultado de más de 3 años de investigación sobre el conflicto armado interno durante los últimos 60 años. Apoyándose en un modelo de inteligencia artificial. Este espacio pretende ayudar a explorar las más de 6000 páginas que conforman más de 10 libros del Informe, comenzando por el de Hallazgos y recomendaciones.
51
- """
52
- st.markdown(title, unsafe_allow_html=True)
53
- # input form
54
- with st.form("my_form"):
55
- # here we have input space
56
- query = st.text_input("Ingresa la pregunta, frase abierta o tema que quieres explorar",
57
- placeholder="Escribe tu consulta aquí...")
58
- # Every form must have a submit button.
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
- # on submit we execute search
64
- if(submitted):
65
- # set start time
66
- stt = time.time()
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
- description = """
100
- <p>
101
- <h2>Sobre esta iniciativa</h2>
102
- Se enmarca en la construcción de ciudadanía, la creación de valor público y el fortalecimiento de la democracia participativa desde la invitación a la población a informarse, conocer, compartir y dialogar en torno a la memoria histórica y a la verdad del conflicto armado colombiano, partiendo del Informe de la Comisión de la Verdad, se espera incluir varias fuentes adicionales. Hace parte de un proyecto open-source que utiliza Inteligencia Artificial para contribuir al entendimiento de temas relevantes para el país.<a href= "https://github.com/jorge-henao/ask_to_democracy"> repo en github con FastAPI</a>
103
- </br></br>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>
104
- <h2>¿Cómo utilizar este espacio?</h2>
105
- Puedes escribir oraciones abiertas como “Masacres en Antioquia”, o una pregunta concreta como “¿cantidad de víctimas en la masacre de bojayá?”. No se trata de un sistema de búsquedas basado en palabras clave, por el contrario, puedes redactar preguntas más extensas y elaboradas. Cuanto más contexto le des a la pregunta, mejor funciona.
106
- <h2>Beta disclaimer</h2>
107
- Las respuestas que arroja el sistema no han sido pregrabadas ni basadas en opiniones. Todas son respuestas extraídas del Informe final de la CEV, por un sistema en beta. Este explorador se basa en un modelo de inteligencia artificial entrenado para entender el lenguaje español, sin embargo, necesita de un mayor entrenamiento por lo que, en ocasiones, puede ser confuso y no tan preciso.
108
- Si quieres apoyar escríbeme a <a href="mailto:jorge.[email protected]">[email protected]</a>
109
- </p>
110
- """
111
- st.markdown(description, unsafe_allow_html=True)
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)