Blog

Búsqueda semántica en WordPress: monta tu propio RAG local con Qdrant y Ollama

Una guía práctica. Sin hype, sin suscripciones, sin enviar tus datos a terceros.

Más del 40% de la web funciona sobre WordPress, según las estadísticas de W3Techs, pero el buscador que trae de fábrica no entiende lo que lee: solo localiza palabras literales. Busca "coche eléctrico" y no aparecerá el artículo que habla de "movilidad eléctrica", aunque trate exactamente de eso. La solución existe y corre en tu propio servidor: una búsqueda semántica montada sobre Qdrant y Ollama, sin que tus contenidos salgan de casa.

El buscador de serie busca letras, no ideas

WordPress guarda cada entrada en MySQL y, cuando alguien usa el buscador, lanza una consulta de tipo LIKE que exige que las palabras aparezcan tal cual en el título o el contenido. Es una búsqueda de cadenas de texto. El motor no sabe que "coche" y "vehículo" hablan de lo mismo, ni que "tarifa" y "precio" van de lo mismo. En un blog pequeño apenas se nota; cuando el archivo crece, el lector se marcha sin encontrar lo que venía a buscar.

La alternativa no es un buscador más rápido, sino uno que trabaje con significados.

Buscar por significado, no por literalidad

La búsqueda semántica cambia la unidad de medida. Un modelo de embeddings convierte cada fragmento de texto en una lista de números, un vector que representa su significado, y dos textos que tratan lo mismo acaban con vectores cercanos aunque no compartan ni una palabra. Comparar una consulta con todo el archivo se reduce, entonces, a medir distancias.

Qdrant está pensada justo para eso: es una base de datos vectorial de código abierto, escrita en Rust, que guarda vectores y devuelve los más próximos mediante similitud coseno. Quien genera esos vectores es Ollama, en tu propia máquina. Modelos ligeros como nomic-embed-text, de 768 dimensiones, sirven para empezar, aunque si tu contenido está en español conviene un modelo multilingüe como bge-m3, porque los embeddings centrados en inglés capturan peor el significado de otros idiomas.

Cómo dialogan las tres piezas

El flujo tiene tres actores. Un script pequeño consulta la API REST de WordPress, disponible en /wp-json/wp/v2, y descarga tus entradas, que se trocean en fragmentos de tamaño razonable porque el vector de un texto muy largo diluye su significado. Después, Ollama convierte cada fragmento en un vector y el script lo guarda en Qdrant junto con el enlace al post original. Cuando un visitante escribe una consulta, esta se convierte también en vector y Qdrant devuelve los fragmentos más cercanos, con sus enlaces.

El resultado ya no es una lista de entradas que contienen tus palabras literales: son los pasajes que tratan el tema, aunque usen otro vocabulario. Ahí aparece el RAG, la generación aumentada por recuperación: los fragmentos recuperados se entregan como contexto a un modelo local, por ejemplo Llama 3 o Mistral servidos con Ollama, y el modelo redacta una respuesta apoyada en tu propio archivo, con enlaces a cada entrada.

Queda una obligación que no se puede esquivar: cuando editas una entrada, su vector se queda obsoleto. La solución pasa por reindexar ese post, ya sea con un webhook que avise al script o con una reindexación programada.

Qué hardware hace falta y qué cuesta

Todo el montaje es gratuito y de código abierto: Ollama se distribuye con licencia MIT, Qdrant con Apache 2.0, y el contenedor de Qdrant arranca con Docker y expone el puerto 6333. El requisito real es la memoria: un modelo de embeddings pequeño cabe en máquinas modestas, pero si quieres que un LLM local redacte respuestas, el servidor necesita recursos a la altura del modelo elegido. La ventaja económica es que no hay factura por token, porque las API de pago cobran por cada texto procesado y ese coste desaparece cuando el modelo vive en tu máquina.

Si te preguntas cuánto cuesta de verdad una IA local frente a una suscripción, lo desgranamos con números en ¿Cuánto cuesta de verdad tu IA?. Y si todavía no has dado el primer paso, esta guía para conectar Ollama con WordPress deja el servidor listo antes de tocar Qdrant.

Empieza con diez entradas

La cifra del principio sigue ahí: más del 40% de la web corre sobre WordPress y casi todo ese volumen se busca por letras. El experimento cabe en una tarde: levanta el contenedor de Qdrant, indexa diez entradas con Ollama y lanza una consulta con sinónimos que tu buscador actual jamás encontraría. Si el resultado te convence, el mismo script puede recorrer el archivo entero, sin cambiar una pieza del engranaje y sin pedirle permiso a ninguna nube.

Pruébalo en 3 minutos

Instala Ollama + Open WebUI en tu ordenador, gratis y en privado.