Embeddings y bases vectoriales
Los embeddings convierten texto en números para buscar por significado. La base vectorial guarda esos números junto con metadatos, permisos y referencias al documento original.
Objetivos de aprendizaje
- Entender qué aporta un embedding en RAG.
- Elegir Chroma, Qdrant o FAISS según proyecto.
- Diseñar colecciones con metadatos y filtros.
En cristiano: embedding. Es una huella numérica del significado de un texto. Textos parecidos quedan cerca en el espacio vectorial, aunque no usen las mismas palabras.
Elección práctica
- Chroma: ideal para prototipos locales rápidos.
- FAISS: rápido y ligero si controlas tú la capa de metadatos.
- Qdrant: buena opción cuando necesitas filtros, APIs, payloads y crecimiento ordenado.
- RAGFlow: útil cuando quieres una interfaz completa de ingesta y chat con citas.
Terminal
collection: documentos_empresa vectors: dense: embedding_semantico payload: document_id page section owner visibility updated_at
Idea clave. El filtro por permisos debe ocurrir antes de mandar contexto al modelo. No sirve de nada decirle al modelo “no reveles esto” si ya le diste el texto prohibido.
Cuidado. No mezcles documentos de todos los clientes en una colección sin una estrategia de filtros estricta. El fallo típico de RAG multiusuario es recuperar contexto correcto pero de la persona equivocada.
Comprueba que funciona. Haz una consulta como usuario A y verifica que ningún chunk de usuario B aparece entre los resultados recuperados, ni siquiera antes de reranking.
Guardar y reabrir el proyecto.
El vector encuentra significado; el payload mantiene control. Un RAG privado necesita ambos.