ask2democracy / about.py
jorge-henao's picture
Update about.py
21620f9
from pinecone_quieries import PineconeProposalQueries
import streamlit as st
def show_about_ask2democracy():
description = """
<h2>Sobre esta iniciativa</h2>
<p>El debate ciudadano generalmente está sustentado en documentos que salvo pocas excepciones, casi nadie lee.
En este demo se han indexado algunos textos relevantes para la discución pública que suelen estar dispersos y poco accesibles. Además, se apoya en el estado del arte de la inteligencia artificial (abajo más detalles) , permitiendo explorar los documentos haciéndoles preguntas en español.
<p>
Por otro lado, las alucinaciones generadas por modelos de lenguaje grandes como ChatGPT/GPT-4 son un problema que en la práctica resulta en desinformación y posibles consecuencias aún desconocidas. OpenAI ha liderado el camino en el control de estas alucinaciones mediante el uso de RLHF para generar texto a partir del conocimiento "congelado" de los modelos de lenguaje. Sin embargo, esta aproximación no es viable en muchos dominios específicos.
<p>
En este demo se aborda el problema de las alucinaciones utilizando una arquitectura RAG, Retrieval Augmented Generation. En el pipeline de consulta, se utilizan modelos sentence transformers para obtener el top k de documentos candidatos, modelos Roberta para generar respuestas abstractas tomadas de las fuentes y modelos generativos para aumentar las respuestas.
Dándole un estilo conversacional similar al de ChatGPT pero basado en fuentes.
<p>
También se busca contribuir a la inteligencia artificial abierta y en español, mediante la construcción de datasets y el entrenamiento de modelos de lenguaje adaptados para las discusiones democráticas. Algo que puede ayudar a elevar la calidad del debate en todos los países de habla hispana.
<p>
Textos indexados: Propuesta reforma pensional de Marzo 22 de 2023, Propuesta reforma de la salud del 13 febrero 2023 , Capítulo de hallazgos y recomendaciones de la comisión de la verdad sobre el conflicto armado Colombiano (trabajo en progreso, si quieres apoyar escríbeme)
<div align="right">
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> <a href="https://linktr.ee/jorgehenao" target='_blank'>Linktree</a>
<br>
Con el apoyo de David Torres 🇨🇴 <a href="https://twitter.com/davinci137" target='_blank'>Twitter</a> <a href="https://github.com/datorresb" target='_blank'>LinkedIn</a>
</div>
<p>
<h2>Sobre el trabajo realizado durante la Hackathon Somos NLP 2023</h2>
El proyecto Ask2Democracy fue creado antes de la hackathon Somos NLP 2023. Las siguientes contribuiciones fueron realizadas durante las fechas de la Hackathon (20 de Marzo al 9 de Abril de 2023):
<h4>En el espacio demo:</h4>
<ul>
<li>Refactor/Ajustes de integración con la base de datos vectorial Pinecone.</li>
<li>Pre-procesado e indexación de la propuesta de reforma pensional de Colombia de Marzo 2023.</li>
<li>Refactor UX y ajustes de usabilidad de la interfaz de usuario.</li>
<li>Ajustes de integración con OpenAI</li>
<li>Pruebas/Ajustes en el pipeline de consulta Sentence transformers usando texto en español y xlm-roberta-base-squad2-distilled</li>
</ul>
<h4>Modelos de lenguaje:</h4>
Fueron entrenados dos modelos Baizemocracy basados en LLaMA-7B con foco en aumentar los documentos retornados en el pipeline de consulta, con el fin de hacerlo más conversacional usando modelos open source en español.
Los siguientes modelos fueron entrenados entrenados con un dataset construido durante la hackathon además de varios datasets orientados a Question answering y Chat.
<ul>
<li><a href="https://huggingface.co/hackathon-somos-nlp-2023/baizemocracy-lora-7B-cfqa">baizemocracy-lora-7B-cfqa</a>: Esta variación del modelo es más enfocada en generar respuestas factuales dado un contexto basado en fuentes.</li>
<li><a href="https://huggingface.co/hackathon-somos-nlp-2023/baizemocracy-lora-7B-cfqa-conv">baizemocracy-lora-7B-cfqa-conv</a>: Esta variación del modelo tiene un estílo más conversacional para generar respuestas factuales dado un contexto basado en fuentes.</li>
</ul>
<h4>Datasets:</h4>
<ul>
<li><a href="https://huggingface.co/datasets/hackathon-somos-nlp-2023/ask2democracy-cfqa-salud-pension">ask2democracy-cfqa-salud-pension</a>: Un datset de tipo instrucciones con respuestas a preguntas generadas a partir de textos de reforma sobre salud y pensiones en español.</li>
</ul>
Nota: Los modelos generativos entrenados durante la hackathon requieren optimizaicón adicional para ser integrados en el pipeline de consulta que ya utiliza otros modelos transformers.
Durante la hackathon se realizaron pruebas con tiempos de inferencia mayor a 70 segundos sobre GPU, sin contar el resto de componentes del pipeline de consulta. Lo que sobrepasa las capacidades de infraestructura gratiuita de Hugging Face sobre CPU.
Futuras actualizaciones se esperan incorporar en el demo original del proyecto <a href="https://huggingface.co/spaces/jorge-henao/ask2democracycol">espacio demo original del proyecto</a>
<h2>¿Cómo utilizar este espacio?</h2>
Selecciona el de documento que quieres explorar en el panel de la izquierda, escribe preguntas en la caja de texto y presiona el botón.
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 mejores resultados obtienes.
<h2>Integración opcional con OpenAI</h2>
Este demo usa recursos de computo limitados sin costo para la gente (si quieres ayudar a que sea más rápido ecríbeme).
De manera opcional, si tienes una cuenta en OpenAI también puedes activar la integración copiando tu API key en el panel de la izquierda.
Una vez ingreses el api key, cada vez que hagas una pregunta el sistema la usará para elaborar una respuesta breve a partir de los resultados de búsqueda obtenidos, basándose siempre en las fuentes oficiales.
También puedes configurar que tan larga quieres que sea la respuesta (max tokens), y que tan creativas (temperatura).
<p><p><b>Nota:El sistema no guarda tu API key, sólo la utiliza para aumentar tus consultas mientras lo uses.</b>
<h2>Inteligencia artificial y democracia</h2>
Pretende ayudar a construir democracia participativa apaloncándose en el estado del arte de la inteligencia artificial.
Al ser un demo accesible en web, puede ayudarle a un ciudadano del común a tener una opinión más informada, ayudándole a ser partícipe del debate público haciendo preguntas directamente a las fuentes en su propio lenguaje y llegando a sus propias conclusiones.
<p><p>
Respecto a la inteligencia artificial hay algunas hipótesis que se quieren probar:
<ul>
<li> ¿Que tan efectivo puede ser un sistema de búsquedas con modelos de inteligencia artificial abiertos, para ayudar a la gente a entender discuciones ciudadanas relevantes en español? </li>
<li> ¿Que tan creativa puede ser la ingeligencia artificial en esa materia?</li>
<li> ¿Puede la inteligencia artificial abierta, ayudarle a la gente a entender documentos legislativos: propuestas de reforma, planes de gobierno, y en general documentos de discución pública?</li>
<li> ¿Puede un sistema RAG usando modelos abiertos mejorar las halucinaciones presentadas en sistemas como ChatGPT/GPT-4 de OpenAI para el entendimiento de discusiones democráticas en español?</li>
</ul>
Por lo anterior, se busca contribuir a la inteligencia artificial abierta y en español, mediante la construcción de datasets y el entrenamiento de modelos de lenguaje adaptados para las discusiones democráticas.
Algo que puede ayudar a elevar la calidad del debate en todos los países de habla hispana.
<h2>Información adicional</h2>
Se utiliza una arquitectura RAG(Retrieval Augmented Generation) para aumentar las respuestas basadas en fuentes de manera conversacional.
Esta version usa sentence transformers (Cosine similarity), una base de dactos vectorial Pinecone para almacenar los embeddings, Haystack framework y la integración con OpenAI.
Los modelos de lenguaje transformers utilizados son:
<code>
sentence-transformers/multi-qa-MiniLM-L6-cos-v1
deepset/xlm-roberta-base-squad2-distilled
</code>
<a href= "https://github.com/jorge-henao/ask_to_democracy"> repo en github con FastAPI</a>
<h2>Beta disclaimer</h2>
Las respuestas que arroja el sistema no han sido pregrabadas ni basadas en opiniones. Todas son respuestas extraídas de fuentes oficiales.
Este demo usa modelos de lenguaje 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.
Si quieres apoyar escríbeme a <a href="mailto:jorge.henao@diezonce.co">jorge.henao@diezonce.co</a>
</p>
"""
st.markdown(description, unsafe_allow_html=True)