MCP Vector Sync
by qtoexdj
Verified
# Validación de MCP Vector Sync
Este documento proporciona instrucciones paso a paso para validar que el servicio MCP Vector Sync basado en eventos está funcionando correctamente después del despliegue.
## 1. Verificación de Health Check
Después de desplegar el servicio, verifica que el endpoint de health check responda correctamente:
```bash
curl https://tu-servicio-url.railway.app/health
```
Deberías recibir una respuesta similar a:
```json
{
"status": "ok",
"timestamp": "2025-03-22T21:22:15.123Z"
}
```
## 2. Verificación de la sincronización de vectores mediante eventos
Para verificar que la sincronización basada en eventos funciona correctamente:
1. Realiza un cambio en un proyecto en Supabase (actualiza cualquier campo)
2. El trigger en Supabase debería enviar automáticamente un webhook al servicio
3. Verifica en la tabla `webhook_logs` que se registró el evento:
```sql
SELECT * FROM webhook_logs
WHERE registro_id = 'id-del-proyecto-modificado'
ORDER BY tiempo DESC LIMIT 5;
```
4. Consulta la tabla `proyecto_vector` para verificar que se ha actualizado el embedding:
```sql
SELECT
p.id,
p.nombre,
p.updated_at as proyecto_update,
pv.updated_at as vector_update
FROM
proyectos p
JOIN
proyecto_vector pv ON p.id = pv.project_id
WHERE
p.id = 'id-del-proyecto-modificado';
```
Si `vector_update` es posterior a `proyecto_update`, la sincronización basada en eventos está funcionando correctamente.
## 3. Prueba de reintentos automáticos
Para probar el sistema de reintentos (si es posible en un entorno de desarrollo):
1. Temporalmente, modifica la URL del webhook en la función `notify_project_change_direct` a una URL no válida
2. Realiza un cambio en un proyecto para activar el trigger
3. Verifica en `webhook_logs` que se registraron hasta 3 intentos fallidos:
```sql
SELECT * FROM webhook_logs
WHERE registro_id = 'id-del-proyecto-modificado'
ORDER BY tiempo DESC;
```
4. Restaura la URL correcta y realiza otro cambio para verificar que vuelve a funcionar
## 4. Verificación de la búsqueda vectorial
Prueba la funcionalidad de búsqueda vectorial en n8n:
1. Crea un flujo de trabajo que utilice el nodo "Vector Store - Supabase"
2. Configura el nodo para usar la tabla `proyecto_vector`
3. Realiza una consulta de prueba como "proyecto con piscina" o "departamento en Santiago"
4. Verifica que los resultados sean relevantes y que la consulta no arroje errores
## 5. Verificación de aislamiento multi-tenant
Prueba el aislamiento multi-tenant realizando una búsqueda para un tenant específico:
```sql
SELECT
count(*)
FROM
proyecto_vector
WHERE
inmobiliaria_id = 'id-de-inmobiliaria';
```
Compara con la cantidad de proyectos para ese tenant:
```sql
SELECT
count(*)
FROM
proyectos
WHERE
inmobiliaria_id = 'id-de-inmobiliaria';
```
Los números deberían ser similares (puede haber pequeñas diferencias debido a cambios recientes).
## 6. Verificación de rendimiento
Para verificar el rendimiento, monitorea los logs y presta atención a:
- Tiempo de procesamiento de cada webhook (registrado en `webhook_logs`)
- Latencia entre cambios en proyectos y actualizaciones de vectores
- Errores o reintentos en la generación de embeddings
Usando Supabase, también puedes medir el rendimiento de las consultas vectoriales:
```sql
EXPLAIN ANALYZE
SELECT
id,
content,
metadata,
1 - (embedding <=> '[0.1, 0.2, ...]'::vector) as similarity
FROM
proyecto_vector
WHERE
inmobiliaria_id = 'id-de-inmobiliaria'
ORDER BY
embedding <=> '[0.1, 0.2, ...]'::vector
LIMIT 5;
```
Reemplaza `[0.1, 0.2, ...]` con un vector real de prueba.
## 7. Verificación del webhook endpoint
Puedes probar directamente el endpoint de webhook con una llamada manual:
```bash
curl -X POST https://tu-servicio-url.railway.app/webhook/project-update \
-H "Content-Type: application/json" \
-d '{
"inmobiliaria_id": "uuid-del-tenant",
"project_id": "uuid-del-proyecto",
"event": "UPDATE",
"timestamp": "2025-03-23T00:00:00Z"
}'
```
## 8. Monitoreo de errores
Verifica si hay errores en los logs del servicio. Los errores comunes incluyen:
- Problemas de conexión a Supabase
- Errores en la API de OpenAI
- Problemas de memoria o rendimiento
- Fallos en el envío de webhooks (visibles en `webhook_logs`)
## Resolución de problemas
Si encuentras problemas durante la validación:
1. **Problemas con webhooks**: Verifica la tabla `webhook_logs` para identificar errores específicos
2. **Errores de búsqueda vectorial**: Asegúrate de que la función `match_documents` está correctamente definida
3. **Problemas de rendimiento**: Monitorea los tiempos de procesamiento en los logs
4. **Errores de memoria**: Considera aumentar los recursos asignados al servicio en Railway
## Mejoras futuras
Considera implementar:
- Monitoreo más detallado con métricas de Prometheus
- Alertas automáticas para errores en webhooks
- Pruebas automáticas para verificar la calidad de los resultados de búsqueda
- Optimización de índices para mejorar el rendimiento de búsqueda
- Autenticación para el endpoint de webhook