🔍 TRIEVE × NEUROSASS
CULTIVA IA — IA Ingeniería MLOps

Infraestructura de Búsqueda IA con RAG

Implementación de búsqueda híbrida (full-text + semántica), RAG con streaming SSE, recomendaciones personalizadas y analíticas de comportamiento para el help center de NeuroSaaS.

Búsqueda Híbrida Activa
RAG Streaming SSE
12.400 chunks indexados
p95 latencia: 87ms
Abandono buscador
18%
↓ 49pp vs baseline 67%
Tickets evitables / semana
22
↓ 72% vs baseline 80/sem
Time-to-first-answer
1.4s
✓ Meta < 2s (streaming)
CTR medio resultados
61%
↑ 38pp vs 23% con Algolia
Arquitectura del sistema
📄
Contenido
12.400 artículos
FAQs + API docs
✂️
Chunking
Por párrafos
grupos por doc
🔷
Trieve API
Índice vectorial
+ BM25 híbrido
🔍
Hybrid Search
score_threshold: 0.3
highlight + filters
🤖
RAG + SSE
Contexto top-5
streaming tokens
🌐
Next.js UI
Autocompletar
Chat + fuentes
📊
Analytics
Top queries
Zero-results + CTR
Patrones de código — NeuroSaaS Help Center
📁 src/search/ingest.ts
TypeScript
// Ingesta bulk del help center NeuroSaaS const TRIEVE_API_URL = "https://api.trieve.ai"; const DATASET_ID = process.env.TRIEVE_DATASET_ID!; async function bulkIngest(articles: HelpArticle[]) { const chunks = articles.flatMap((doc) => { const paras = doc.content.split("\n\n").filter(Boolean); return paras.map((p, i) => ({ chunk_html: p, tracking_id: `${doc.id}-chunk-${i}`, link: doc.url, tag_set: doc.tags, // ["integrations","crm"] metadata: { title: doc.title, category: doc.category, updated_at: doc.updatedAt, }, group_tracking_ids: [doc.id], })); }); // Batches de 120 (límite API) for (let i = 0; i < chunks.length; i += 120) { await trieveFetch("/api/chunks", { method: "POST", body: JSON.stringify(chunks.slice(i, i + 120)), }); } console.log(`✓ ${chunks.length} chunks indexados`); }
📁 src/search/rag.ts
TypeScript
// RAG con streaming SSE para el chat del help center async function streamRagQuery( question: string, onChunk: (text: string) => void ) { const response = await fetch( `${TRIEVE_API_URL}/api/chunk/generate`, { method: "POST", headers: { "Authorization": `Bearer ${TRIEVE_API_KEY}`, "TR-Dataset": DATASET_ID, }, body: JSON.stringify({ prev_messages: [{ role: "user", content: question }], search_type: "hybrid", page_size: 5, // top-5 chunks como contexto stream_response: true, llm_options: { system_prompt: "Responde en español usando el contexto.", temperature: 0.3, max_tokens: 500, }, }), }); const reader = response.body!.getReader(); const decoder = new TextDecoder(); while (true) { const { done, value } = await reader.read(); if (done) break; onChunk(decoder.decode(value)); } }
Demo búsqueda híbrida
🔍 ¿cómo conecto mi CRM con NeuroSaaS? hybrid
1
Integración HubSpot — Mapear leads y contactos
Conecta tu cuenta de HubSpot en CRM > Integraciones. Los campos de contactos se sincronizan automáticamente cada 15 minutos...
integrations crm score: 0.94
2
Salesforce — Sincronización bidireccional
Para conectar Salesforce, genera un token OAuth en tu cuenta SF y pégalo en Configuración > CRM > Salesforce...
integrations score: 0.87
3
Webhooks — Eventos en tiempo real hacia CRMs
Configura webhooks para enviar eventos de leads a cualquier CRM externo. Formato JSON, autenticación HMAC...
webhooks crm score: 0.81
Demo RAG streaming
🧑 ¿Cuál es el límite de llamadas a la API en el plan Pro y cómo puedo aumentarlo?
En el plan Pro dispones de 1.000 requests por minuto. Si superas ese umbral, la API devolverá un error 429 Too Many Requests con un header Retry-After indicando cuántos segundos esperar. Para aumentar el límite tienes dos opciones: 1. Upgrade a Enterprise — 10.000 req/min + SLA 99,9 %. 2. Exponential backoff — implementa reintentos automáticos en tu cliente con espera creciente (recomendado en producción). Consulta la sección de Rate Limits en la documentación de API para ver los headers de cuota en tiempo real.
Fuentes recuperadas (top-3 de 5)
📄 API Rate Limits 0.96
📄 Plan Pro vs Enterprise 0.89
📄 Error codes & retries 0.77
Analytics — últimos 30 días
Top queries
integrar hubspot
2.341
rate limit api
1.824
configurar webhooks
1.521
automatizar campañas email
1.357
onboarding nuevos usuarios
1.148
a/b test email subject
962
exportar contactos csv
820
Zero-results → gaps de contenido
"migrar de ActiveCampaign" 143 crear artículo
"API GraphQL" 98 crear artículo
"GDPR exportar datos" 87 crear artículo
"integrar Pipedrive" 76 crear artículo
"plantillas email HTML" 61 mejorar tag
"2FA autenticación" 54 crear artículo
CTR por artículo
Artículo Impr. CTR
Integración HubSpot 4.821
72%
API Rate Limits 3.904
68%
Webhooks Slack 2.341
65%
Campañas A/B test 1.988
59%
Onboarding 7 días 1.654
57%
Salesforce sync 1.402
48%
8 principios de implementación
01 —
Chunk inteligente
Divide por párrafos o secciones semánticas, nunca por número fijo de caracteres. Cada chunk debe ser autocontenido.
02 —
Grupos por documento
Usa group_tracking_ids para agrupar todos los chunks de un mismo artículo y habilitar búsqueda a nivel de doc.
03 —
Híbrida por defecto
Combina precisión keyword con comprensión semántica. Solo usa fulltext en autocompletar por velocidad.
04 —
Analytics desde día 1
Las queries sin resultado revelan gaps de contenido. Las de bajo CTR indican problemas de relevancia. Trackea ambas desde el inicio.
05 —
Score threshold 0.3
Filtra resultados de baja confianza. Ajusta según tu corpus: 0.3 es un buen punto de partida, afina con datos reales.
06 —
Tags para filtrar
Los tags habilitan filtros categoriales rápidos sin escanear metadata. Esenciales para búsqueda facetada por categoría o plan.
07 —
Upsert con tracking IDs
Usa upsert_by_tracking_id para re-indexar contenido actualizado sin crear duplicados.
08 —
Streaming RAG
Para UI conversacional, activa stream_response: true y consume el SSE. Reduce latencia percibida a < 300ms.