Start typing to search across invoices, services, domains, tickets, and more...
La forma más práctica de operar una base de conocimiento privada con IA (RAG) para atención al cliente es mantener tus documentos, la base de datos vectorial y el historial de chats en un servidor dedicado que controlas, y llamar a una API oficial de LLM solo para embeddings y respuestas. IMIDC ofrece servidores dedicados en Tokio (Japón), Singapur, Taipéi (Taiwán) y Los Ángeles (EE. UU.), regiones donde las API de OpenAI, Anthropic Claude y Google Gemini están disponibles oficialmente, para que un negocio transfronterizo mantenga los datos de sus clientes en la región que atiende.
La generación aumentada por recuperación (RAG) responde con tus propios documentos en lugar de la "memoria" del modelo, lo que reduce las alucinaciones y mantiene las respuestas dentro de tus políticas.
El flujo es sencillo: manuales, FAQ, políticas de devolución, fichas de producto y resoluciones de tickets anteriores se dividen en fragmentos; cada fragmento se convierte en un vector (embedding) y se guarda en una base vectorial. Cuando un cliente o agente pregunta, el sistema vectoriza la pregunta, recupera los fragmentos más cercanos y envía solo esos fragmentos y la pregunta al LLM, que redacta una respuesta con citas.
Para un vendedor que atiende tickets en japonés, inglés y chino, un único índice multilingüe sirve a todos los canales.
Un servidor dedicado conviene cuando hay muchos documentos, reglas de datos estrictas o volumen de consultas estable: RAM, disco y coste son fijos, y los datos solo salen en los fragmentos que tú decides enviar.
| Factor | Chatbot RAG SaaS | RAG propio en un servidor dedicado de IMIDC |
|---|---|---|
| Dónde viven documentos y chats | Nube del proveedor, región a menudo incierta | Tu servidor en Tokio, Singapur, Taipéi o Los Ángeles |
| Modelo de precios | Por usuario, mensaje o documento | Cuota mensual fija + uso de API por tokens |
| Capacidad vectorial | Límites del plan | Limitada solo por tu RAM y NVMe |
| Control de acceso | El del proveedor | Tus propias ACL por equipo, marca o nivel de cliente |
| Elección de modelo | Normalmente un proveedor | OpenAI, Claude, Gemini o un modelo de embeddings local |
| Esfuerzo | Bajo | Tú gestionas Docker, copias y actualizaciones |
La memoria es el recurso clave. Un millón de fragmentos con embeddings de 1536 dimensiones en float32 ocupan unos 6 GB de datos brutos, más la sobrecarga del índice; Qdrant y pgvector rinden mejor cuando el índice está en RAM. Un servidor dedicado con 64-128 GB de RAM deja espacio para vectores, PostgreSQL, la ingesta y la caché, sin el efecto "vecino ruidoso" de un VPS pequeño.
Ubica la base de conocimiento donde están tus clientes y tus obligaciones de datos, y solo en regiones con API de IA oficiales.
| Ubicación IMIDC | Ideal para | API de IA | Marco de protección de datos (breve) |
|---|---|---|---|
| Tokio, Japón | Clientes japoneses, vendedores de Rakuten/Amazon JP | Oficial | APPI |
| Singapur | Sudeste Asiático, soporte multipaís | Oficial | PDPA |
| Taipéi, Taiwán | Soporte en chino tradicional, mercado taiwanés | Oficial | PDPA de Taiwán |
| Los Ángeles, EE. UU. | Clientes de Norteamérica, marketplaces de EE. UU. | Oficial | Leyes estatales de privacidad |
| Hong Kong / Moscú, Rusia | No recomendado para esta carga | Sin disponibilidad oficial | — |
Tres contenedores bastan para empezar: una base vectorial, PostgreSQL para metadatos e historial, y tu propia API de ingesta y chat.
Instala Docker primero (consulta nuestra guía en el centro de ayuda) y crea los siguientes archivos. Todos los puertos se enlazan a 127.0.0.1 y se publican solo a través de Nginx con HTTPS.
# docker-compose.yml - private RAG stack (all ports bound to localhost)
services:
qdrant:
image: qdrant/qdrant:v1.12.4
restart: unless-stopped
volumes:
- ./qdrant_storage:/qdrant/storage
ports:
- "127.0.0.1:6333:6333"
environment:
QDRANT__SERVICE__API_KEY: ${QDRANT_API_KEY}
postgres:
image: pgvector/pgvector:pg16
restart: unless-stopped
environment:
POSTGRES_USER: rag
POSTGRES_PASSWORD: ${PG_PASSWORD}
POSTGRES_DB: kb
volumes:
- ./pgdata:/var/lib/postgresql/data
ports:
- "127.0.0.1:5432:5432"
rag-api:
build: ./rag-api # your ingestion + retrieval + chat service
restart: unless-stopped
env_file: .env # OPENAI_API_KEY / ANTHROPIC_API_KEY / GEMINI_API_KEY
depends_on: [qdrant, postgres]
ports:
- "127.0.0.1:8080:8080" # publish through Nginx + HTTPS only
# .env (chmod 600, never commit)
QDRANT_API_KEY=change-me-long-random
PG_PASSWORD=change-me-long-random
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
EMBED_MODEL=text-embedding-3-small
CHUNK_TOKENS=500
CHUNK_OVERLAP=60
Si prefieres una sola base de datos, prescinde de Qdrant y usa pgvector para metadatos y vectores:
-- pgvector alternative: one table, one HNSW index
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE chunks (
id bigserial PRIMARY KEY,
doc_id text NOT NULL,
lang text,
acl text[], -- which teams/customers may see it
content text NOT NULL,
embedding vector(1536)
);
CREATE INDEX ON chunks USING hnsw (embedding vector_cosine_ops);
Qdrant es mejor a partir de varios millones de vectores o cuando necesitas filtros por payload y cuantización; pgvector es más simple si tu equipo ya usa PostgreSQL. Comprueba el acceso a las API desde el servidor antes de la ingesta:
# confirm the API endpoints are reachable from this server
curl -s -o /dev/null -w "%{http_code}\n" https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
curl -s -o /dev/null -w "%{http_code}\n" https://api.anthropic.com/v1/models \
-H "x-api-key: $ANTHROPIC_API_KEY" -H "anthropic-version: 2023-06-01"
La calidad de las respuestas depende más de la fragmentación y los metadatos que del modelo.
Alojar la base en la región ayuda, pero todo texto enviado a una API de LLM lo procesa el proveedor, así que minimiza y documenta lo que sale del servidor.
Esto es información general, no asesoramiento legal. Confirma tus obligaciones con un profesional cualificado.
Dimensiona el servidor según el número de vectores y la concurrencia, y elige la región más cercana a tus clientes.
Los servidores en Singapur y las configuraciones personalizadas de RAM y disco se gestionan con el equipo de ventas de IMIDC. ¿Vienes de otro proveedor? IMIDC ofrece migración de servidores gratuita.
IMIDC ofrece servidores dedicados en Tokio y Singapur con IP nativas locales, donde las API de OpenAI, Claude y Gemini están disponibles oficialmente. Mantienes la base vectorial y los documentos en tu propio hardware con una cuota mensual fija.
No con las API de OpenAI, Claude o Gemini: no están disponibles oficialmente en Hong Kong, China continental ni Rusia. Para cargas de IA basadas en API elige Tokio, Singapur, Taipéi o Los Ángeles.
Unos 6 GB por millón de vectores de 1536 dimensiones antes del índice, así que planifica el doble para HNSW y el resto del stack. La cuantización escalar de Qdrant reduce la memoria de los vectores unas cuatro veces.
Ninguna ubicación garantiza por sí sola el cumplimiento. El almacenamiento en la región simplifica las cosas, pero sigues necesitando fines legítimos, avisos y salvaguardas para los datos enviados a proveedores de API; esto no es asesoramiento legal.
¿Listo para construir tu base de conocimiento de soporte? Compara los servidores dedicados en Tokio, en Taipéi y en Los Ángeles, o contacta con ventas de IMIDC para Singapur y configuraciones con más RAM. Si ya eres cliente, puedes abrir un ticket para recibir asesoramiento.