Chatbot de PDF con IA local
Qué cubre este artículo
- Qué es un chatbot de PDF y para qué sirve.
- Cómo preparar documentos para la IA.
- Qué herramientas son adecuadas para chatbots locales de PDF.
- Cómo construir una solución simple con Python.
Introducción: Chatbot de PDF con IA local
Un chatbot de PDF te permite hacer preguntas sobre tus documentos en ese formato. En lugar de desplazarte manualmente por cientos de páginas, el modelo responde preguntas específicas y te muestra los pasajes relevantes. Como todo ocurre localmente, tus documentos permanecen en tu hardware.
El núcleo es RAG: El modelo de lenguaje no recibe el documento completo, sino solo las secciones relevantes. Para esto, los textos se dividen en partes pequeñas, se almacenan en una base de datos vectorial y se recuperan con consultas apropiadas.
¿Qué necesitas para un sistema RAG de IA simple?
Para un chatbot local de PDF necesitas:
- Un modelo de lenguaje local como Llama 3.2 a través de Ollama.
- Un modelo para embeddings, por ejemplo
nomic-embed-text. - Una base de datos vectorial como Chroma, Qdrant o SQLite con búsqueda vectorial.
- Una forma de convertir PDFs a texto, por ejemplo
pymupdfopdfplumber.
Si prefieres algo más cómodo, puedes usar herramientas como AnythingLLM u Open WebUI con RAG integrado. Ambas soportan modelos ejecutados localmente y ofrecen una interfaz gráfica.
Convertir PDFs a texto
Python ofrece varias librerías para leer PDFs.
pymupdf es rápido y generalmente produce resultados limpios:
import fitz # PyMuPDF
def pdf_zu_text(pfad):
text = []
with fitz.open(pfad) as doc:
for seite in doc:
text.append(seite.get_text())
return '\n'.join(text)
Usar IA y aun así comprender la programación
La IA puede quitarte mucho trabajo de programación hoy en día. Sin embargo, deberías entender los fundamentos de la programación si trabajas regularmente con sistemas de IA. Solo así podrás evaluar el código generado, identificar errores y realizar mejoras específicas. Python juega un papel particularmente importante en el mundo de la IA y la automatización.
En IRC-Coding.de encontrarás numerosos artículos prácticos y rutas de aprendizaje sobre programación, Python, APIs, desarrollo de software, programación de IA, Vibe Coding y ciberseguridad. De esta manera puedes adquirir exactamente el conocimiento técnico que necesitas para usar la IA de forma significativa.
Volviendo al tema
Para PDFs escaneados con imágenes necesitas OCR adicional, por ejemplo Tesseract. Esto aumenta el esfuerzo, pero es necesario para muchos contratos e informes.
Dividir textos en fragmentos significativos
Un texto largo debe dividirse en chunks pequeños. El tamaño debe ser suficientemente grande para mantener el contexto y lo bastante pequeño para realizar búsquedas precisas. Un valor típico está entre 200 y 500 palabras con una pequeña superposición.
Las superposiciones aseguran que los fragmentos no se corten a mitad de una oración. En documentos técnicos esto es especialmente importante, porque los términos técnicos a menudo se distribuyen a lo largo de varios párrafos.
Embeddings y base de datos vectorial
Cada chunk de texto se convierte en un vector. Los embeddings capturan el significado de un texto como números. Los significados similares se encuentran cerca en este espacio. Con una base de datos vectorial encuentras rápidamente los pasajes de texto relevantes.
from chromadb import Client
client = Client()
collection = client.get_or_create_collection(name='pdf_daten')
collection.add(
documents=[chunk1, chunk2],
ids=['1', '2'],
metadatas=[{'quelle': 'vertrag.pdf'}]
)
La consulta funciona de manera similar. Le pasas la pregunta como embedding y recibes los chunks relevantes.
Responder preguntas
La IA siempre dará una respuesta a tus consultas, porque fue entrenada para hacerlo.
Obtienes la respuesta real del modelo de lenguaje. Combinas la pregunta y los pasajes encontrados en un prompt:
Aquí hay extractos de documentos:
{chunks}
Responde esta pregunta solo basándote en los extractos:
{frage}
De este modo el modelo responde solo con contenido de tus PDFs y alucina menos. Además puedes exigir que se proporcionen referencias de fuentes.
Herramientas con interfaz gráfica
Quien no quiera programar por su cuenta puede recurrir a las siguientes herramientas:
- Open WebUI ofrece una interfaz de chat cómoda con función RAG.
- AnythingLLM está diseñado específicamente para documentos empresariales y es fácil de configurar. Encontrarás una guía paso a paso para Docker Compose en nuestro artículo AnythingLLM con Ollama mediante Docker Compose.
- Flowise es adecuado para flujos de trabajo complejos y pipelines visuales.
Todas se pueden conectar con Ollama. Para comenzar, a menudo es suficiente una herramienta lista para usar, para ver rápidamente si RAG es apropiada para tus documentos.
¿Prefieres usar sistemas RAG ya preparados en lugar de crear el tuyo?
Recientemente configuré IA local para un bufete grande y después de la planificación inicial necesitábamos un sistema RAG completo. Configuré la base de datos vectorial, limpié todos los textos y los dividí en chunks. Pero todos deben ser claros sobre cuál es el objetivo real. El bufete necesitaba resultados rápidos. AnythingLLM fue el primer paso para mostrar un prototipo y probar rápidamente diferentes modelos de IA.
Flowise en sí no lo he probado aún, pero está en mi lista de tareas.
Entretanto, configuré en el bufete acceso por API a proveedores como Langdock y similares, en Python. Pero también sistemas RAG propios con bases de datos para sistemas internos de How-To y software.
Mi consejo es que uses sistemas como AnythingLLM desde el principio y puedas probar modelos de IA dentro de 20 minutos gracias a Docker y usarlos en producción. PERO: escribe un pequeño script de API en Python y tu propio chat de IA pequeño o un RAG, para que comprendas la arquitectura.
En IRC-Coding.de aprendes cómo hacerlo. Guarda esa página.
Chatbot de PDF con IA local
Un chatbot de PDF con IA local convierte documentos en texto, los divide en chunks, almacena embeddings en una base de datos vectorial y responde preguntas a través de un modelo de lenguaje. Con Python puedes construirlo tú mismo, con herramientas como AnythingLLM u Open WebUI es mucho más rápido. En ambos casos tus PDFs permanecen en tu propio sistema.
Pruébalo, encontrarás en el artículo AnythingLLM con Ollama mediante Docker Compose una guía de cómo instalar AnythingLLM con solo unas pocas líneas gracias a Docker. Al final la protección de datos prevalecerá, empresas, organizaciones, escuelas y administraciones públicas se enfocarán cada vez más en soluciones locales en ciertos ámbitos. En administraciones públicas se tiende actualmente más hacia grandes proveedores con “contratos AVV”.


