Construye una aplicación gratuita y privada de "Chat con PDF" en 70 líneas de Python

Construye una aplicación de chat en Python con envío de archivos PDF privados y gratuitos. ¡Comienza a desarrollar tu propio chat seguro ahora mismo!

9 dic 2025 • 5 min read • Q2BSTUDIO Team

Construye una aplicación de chat con PDF privada y gratuita en Python.

Te presento una versión práctica y en español del artículo original sobre cómo crear una aplicación privada de Chat con PDF que funcione localmente y sin costes de API, adaptada por Q2BSTUDIO, empresa de desarrollo de software y aplicaciones a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud. Aquí explico por qué esta arquitectura es segura, qué herramientas usar y cómo montar un motor RAG privado en tu propio equipo en pocos pasos.

Resumen rápido: privacidad, potencia y cero coste. Ejecutar modelos y bases de vectores en local te da control total sobre tus datos sensibles, desde documentos legales hasta estados financieros. Usaremos Ollama como cerebro local, LanceDB como memoria vectorial y un conjunto específico de librerías Python que se llevan bien entre sí para evitar la temida dependencia infernal. Todo corre en tu ordenador y nada se envía a terceros.

Por qué esta pila. Ollama permite ejecutar LLMs offline como Llama 3 o Mistral, sin clave ni conexión a servidor. LanceDB es una base de vectores sencilla y rápida que se integra directamente en Python y guarda los vectores en disco. Juntas forman una solución serverless, privada y eficiente, ideal para soluciones de software a medida y proyectos de inteligencia artificial para empresas.

Preparación previa. Instala Ollama en macOS, Windows o Linux y lanza el servicio en segundo plano con el comando ollama serve desde una terminal. Luego descarga los modelos necesarios con ollama pull llama3 y ollama pull nomic-embed-text. Para gestionar versiones de Python se recomienda pyenv y trabajar con Python 3.14.X tal como se probó en esta guía. Instala las librerías críticas con pip usando los paquetes y versiones que garantizan compatibilidad y evitar horas de depuración: lancedb igual a 0.25.3, ollama igual a 0.6.1 y pypdf igual a 6.2.0.

Instalación y dependencias. Si prefieres que te ayudemos a desplegar esto, en Q2BSTUDIO ofrecemos servicios de desarrollo de aplicaciones a medida y software a medida y podemos integrar esta arquitectura con tus sistemas existentes, aplicar gobernanza y asegurar la custodia de datos. También podemos alojar componentes en la nube si lo deseas, con soporte para servicios cloud aws y azure, aunque la guía se centra en ejecución local.

El script explicado en pocas líneas. A continuación tienes el script Python condensado que implementa la canalización RAG: lectura del PDF, fragmentación del texto, obtención de embeddings con Ollama, almacenamiento en LanceDB y bucle de consultas para responder usando Llama 3 como generador. Coloca un archivo PDF llamado file.pdf en el mismo directorio antes de ejecutar.

import ollamaimport lancedbfrom pypdf import PdfReaderimport os# --- CONFIGURACION ---DOC_PATH = "file.pdf"DB_PATH = "./lancedb_data"MODEL_EMBED = "nomic-embed-text"MODEL_GEN = "llama3"print("--- Construyendo base de conocimiento con LanceDB ---")# 1. INGESTA: leer PDFtry: reader = PdfReader(DOC_PATH) text = "" for page in reader.pages: text += page.extract_text() or ""except FileNotFoundError: print(f"Error: no se encontro {DOC_PATH}. Añade un PDF con ese nombre.") exit()# 2. FRAGMENTACIONchunk_size = 1000text_chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]print(f"Procesados {len(text_chunks)} fragmentos de texto.")# 3. EMBEDDING Y ALMACENAMIENTOdata = []print("Generando embeddings, esto puede tardar unos instantes...")for i, chunk in enumerate(text_chunks): response = ollama.embeddings(model=MODEL_EMBED, prompt=chunk) vector = response["embedding"] data.append({"id": i, "text": chunk, "vector": vector})db = lancedb.connect(DB_PATH)try: table = db.create_table("resume", data=data, mode="overwrite") print("Conocimiento almacenado en LanceDB en disco local.")except Exception as e: print(f"Error en la base de datos: {e}") exit()# 4. BUCLE DE CONSULTAwhile True: query = input("Pregunta sobre el archivo (o escribe quit para salir): ") if query.lower() == "quit": break query_vec = ollama.embeddings(model=MODEL_EMBED, prompt=query)["embedding"] results = table.search(query_vec).limit(1).to_list() if results: best_chunk = results[0]["text"] print(f"Contexto encontrado: ...{best_chunk[:200]}...") prompt = fUse the context below to answer the question. Context: {best_chunk} Question: {query} response = ollama.generate(model=MODEL_GEN, prompt=prompt) print(f"Respuesta: {response["response"]}") else: print("No se encontro informacion relevante.")

Notas sobre el script. La canalización implementa cinco pasos: ingesta y fragmentación para evitar pasar documentos enteros al modelo; generación de embeddings por fragmento; almacenamiento en LanceDB junto con el texto original; consulta por similitud usando el embedding de la pregunta; y generación de la respuesta con contexto usando Llama 3. Ajusta el tamanio de chunk y el modelo de embeddings según tus necesidades.

Ejemplos prácticos. Este enfoque es ideal para resumir informes, preparar entrevistas o generar respuestas con respaldo documental. Por ejemplo, puedes pedir un resumen ejecutivo de un informe financiero, generar preguntas críticas para una junta o extraer cifras clave sin leer todo el documento. Integrado en flujos de trabajo empresariales, esto acelera decisiones y mejora la productividad de equipos que trabajan con documentos extensos.

Servicios y seguridad. En Q2BSTUDIO complementamos esta solución con servicios de ciberseguridad, pruebas de pentesting y hardening para que tu asistente de documentos private cumpla con las mejores practicas de privacidad y cumplimiento normativo. Consulta nuestras capacidades en ciberseguridad y pentesting para proteger tus datos sensibles y garantizar confidencialidad.

Optimización y escalado. Si quieres convertir esto en un producto para la empresa, podemos ayudarte a convertir el prototipo en una aplicación robusta y desplegable, con monitorizacion, pipelines ETL para documentos, integración con Power BI y servicios de inteligencia de negocio. Ofrecemos integraciones con servicios de inteligencia artificial y soluciones de inteligencia de negocio y power bi para explotar los datos extraidos.

Conclusión. Con Ollama y LanceDB puedes construir hoy mismo una app privada de Chat con PDF que respete la privacidad y funcione sin costes de API. En Q2BSTUDIO acompañamos desde la fase de concepto hasta la entrega, desarrollando software a medida, integrando IA para empresas y asegurando la plataforma. Si quieres que te ayudemos a implementar esto en tu empresa, contacta con nosotros y diseñamos la solución que mejor encaje con tus procesos y requisitos de seguridad.

Palabras clave: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.