Chatpdflike
Una aplicación de pregunta de documento de extremo a extremo que utiliza API de modelos de lenguaje grande.
Nota : Este proyecto no está afiliado o respaldado por ChatPDF. Este es un proyecto independiente que intenta replicar una funcionalidad similar.
Descripción general
ChatPDF-Like es una aplicación web que permite a los usuarios cargar documentos PDF e interactuar con ellos utilizando consultas de lenguaje natural. La aplicación aprovecha los modelos de lenguaje grande (LLM) como el GPT-3.5 Turbo de Openai para comprender el contenido del PDF y proporcionar respuestas concisas y precisas a las preguntas del usuario.
Características
- Carga de documentos PDF : cargue archivos PDF locales o proporcione una URL a un documento PDF.
- Interacción del lenguaje natural : haga preguntas sobre el contenido del PDF en el lenguaje natural.
- Respuestas relevantes : Reciba respuestas concisas basadas en el contenido del documento.
- Referencias de origen : Ver fuentes (secciones del PDF) que se utilizaron para generar la respuesta.
- Múltiples proveedores de LLM : soporte para modelos Operai y Ollama.
- Interfaz web : interfaz web simple e intuitiva construida con Flask y JavaScript.
Cómo funciona
La aplicación sigue estos pasos principales:
Extracción y procesamiento de texto :
- El PDF se analiza usando
PyPDF2 . - El texto se extrae de cada página, y grandes piezas de texto se dividen en trozos manejables.
Generación de incrustación :
- Para cada fragmento de texto, se genera un vector de incrustación utilizando el modelo de incrustación seleccionado (por ejemplo,
text-embedding-ada-002 ). - Estas incrustaciones representan el significado semántico de los trozos de texto y se almacenan para cálculos de similitud.
Manejo de consultas de usuario :
- Cuando un usuario hace una pregunta, se genera un vector de incrustación para la consulta utilizando el mismo modelo de incrustación.
Búsqueda de similitud :
- La aplicación calcula la similitud de coseno entre la incrustación de consulta y las incrustaciones de la fragmentos de texto.
- Los fragmentos de texto más relevantes se seleccionan en función de los puntajes de similitud más altos.
Construcción rápida :
- Se crea un aviso para el modelo de idioma, incorporando la pregunta del usuario y los fragmentos de texto más relevantes.
Generación de respuestas :
- El aviso se envía al modelo de idioma (por ejemplo, GPT-3.5 Turbo de OpenAI).
- El modelo genera una respuesta a la pregunta del usuario basada en el contexto provisto.
Pantalla de respuesta :
- La respuesta se muestra al usuario en la interfaz web.
- Las referencias a los fragmentos de texto de origen también se proporcionan para la transparencia.
Empezando
Requisitos previos
- Python : se requiere la versión 3.6 o superior.
- API Keys :
- Clave API de OpenAI : requerido para usar los modelos de OpenAI para incrustaciones y generación de respuestas.
- Clave de API Ollama : opcional. Requerido si desea usar modelos Ollama.
Instalación
Clonar el repositorio
git clone https://github.com/Ulov888/chatpdflike.git
cd chatpdflike
Instalar dependencias
Usando pip , instale los paquetes requeridos:
pip install -r requirements.txt
Llaves de API
Para usar la API de OpenAI:
Regístrese para obtener una llave API en OpenAI.
Establezca la variable de entorno OPENAI_API_KEY :
export OPENAI_API_KEY= " your_openai_api_key "
Para usar la API de Ollama (si lo desea):
Obtenga una clave API de Ollama.
Establezca la variable de entorno OLLAMA_API_KEY :
export OLLAMA_API_KEY= " your_ollama_api_key "
Uso
Iniciar la aplicación
Ejecute la aplicación Flask:
Por defecto, el servidor se ejecuta en http://0.0.0.0:8080 .
Acceder a la interfaz web
Abra un navegador web y navegue a http://localhost:8080 .
Subir un documento PDF
Tú puedes:
- Haga clic en "Cargar PDF" para seleccionar y cargar un archivo PDF desde su computadora.
- Ingrese una URL a un documento PDF y haga clic en "Enviar".
Interactuar con el PDF
- Una vez que se procesa el PDF, puede hacer preguntas sobre su contenido utilizando la interfaz de chat en el lado derecho de la pantalla.
- Escriba su pregunta en el cuadro de entrada y presione "Enviar".
Ver respuestas
- La respuesta de la aplicación aparecerá debajo de su pregunta.
- Las referencias de origen (por ejemplo, números de página y extractos) se proporcionan para el contexto.

Personalización
Estrategias rápidas
El comportamiento del modelo de lenguaje se puede personalizar modificando las estrategias de inmediato en generate_embedding.py , específicamente en el método create_prompt de la clase Chatbot .
Las estrategias incluyen:
- Documento : para resumir los documentos científicos.
- Manual : para resumir manuales financieros (respuestas en chino).
- Contrato : para comprender los contratos (respuestas en chino).
- Valor predeterminado : Estrategia de propósito general (respuestas en chino).
Para seleccionar una estrategia, puede modificar el parámetro strategy al llamar create_prompt .
Lenguaje y salida
La aplicación está actualmente configurada para proporcionar respuestas en chino para algunas estrategias. Puede modificar las indicaciones para cambiar el idioma o ajustar el comportamiento del modelo.
Limitaciones
- Costos de la API de Operai : el uso de la API de OpenAI incurrirá en costos según el uso. Asegúrese de monitorear el uso de su API para evitar cargos inesperados.
- PDF PARSING : La aplicación usa
PyPDF2 , que puede no manejar todos los PDF perfectamente. Los PDF complejos con formato inusual pueden no analizar correctamente. - Límites de incrustación : el límite de token máximo para los incrustaciones puede restringir el tamaño de los trozos de texto o la longitud máxima de la solicitud.
- Respuestas del modelo : la calidad y la precisión de las respuestas dependen del rendimiento del modelo de idioma y la relevancia de los fragmentos de texto recuperados.
Que contribuye
¡Las contribuciones son bienvenidas! Si tiene alguna sugerencia o mejoras, no dude en enviar un problema o retirar la solicitud.
Licencia
Este proyecto tiene licencia bajo la licencia Apache.