CoolFace
Modelpublic

jonasreyes/dra-nomic-embed

sourceHugging Faceapache-2.0updated 27d agoView on Hugging Face
0likes25downloads
Model Card

dra-nomic-embed (Standalone ONNX: FP32 & Dynamic INT8)

Modelos de embeddings de alto rendimiento optimizados para inferencia ultra-rápida y soberana en CPU (sin PyTorch ni GPU).

Desarrollado como motor central de búsqueda semántica local para [DRA (DeepRoot Agent)](https://gitlab.com/jonasreyes/dra), el agente autónomo de nueva generación creado por Jonás Reyes tras la evolución del proyecto fundacional [DeepRoot](https://gitlab.com/jonasreyes/deeproot) hacia la Inteligencia Artificial soberana.


📊 Especificaciones Técnicas

PropiedadValor
Modelo Base Original`nomic-ai/nomic-embed-text-v1.5`
Formato de InferenciaONNX Runtime (C++ / SIMD AVX2/FMA/VNNI)
Dimensiones Vectoriales768 (Soporta Matryoshka downsampling)
Contexto Máximo8.192 tokens
Dependencias en Runtimeonnxruntime + tokenizers (Cero PyTorch / Cero Transformers)
Licencia del Modelo BaseApache 2.0

🔬 Benchmark en Hardware Real (Intel Core i5-4308U Dual-Core @ 2.80GHz, 2014)

Evaluación comparativa procesando 1.200 textos técnicos reales (código fuente, consultas SQL, documentación y arquitectura):

VarianteArchivoTamaño en Disco / RAMVelocidad (CPU Dual-Core)Retención de Fidelidad
INT8 (Recomendado)model_int8.onnx131.49 MB (-74.8%)7.8 textos/seg (1.36x más rápido)93.34% similitud coseno
FP32 (Original)model.onnx522.25 MB5.7 textos/seg100% (Referencia base)
🚀 Proyección en Hardware Moderno: Si en un procesador dual-core de 2014 entrega 7.8 textos/segundo, en procesadores modernos (Intel Core Ultra, AMD Ryzen 7000/9000, Apple Silicon M-Series) el rendimiento supera los cientos de textos por segundo con latencias inferiores a 5 ms.

🛠️ Pipeline de Dependencias Efímeras: ¿Cómo se creó este modelo?

Para evitar arrastrar gigabytes de dependencias en entornos de producción:

  1. 1.Entorno de Compilación Aislado: Se instalaron temporalmente optimum[exporters], torch y transformers.
  2. 2.Exportación a Grafo ONNX: Se compiló el modelo base nomic-ai/nomic-embed-text-v1.5 a un grafo unificado optimizado.
  3. 3.Cuantización Dinámica INT8: Se generó la versión compacta optimizada para instrucciones vectoriales.
  4. 4.Purga Total de Dependencias: Inmediatamente tras la exportación, torch y todas las librerías pesadas fueron completamente eliminadas y desinstaladas, garantizando un paquete ultra-ligero y autónomo.

📥 Métodos de Instalación y Descarga

Opción A: Descarga Manual Rápida en Terminal

bash
# Crear directorio de destino
mkdir -p ~/.dra/models/nomic-embed/

# Descargar desde Hugging Face
curl -L https://huggingface.co/jonasreyes/dra-nomic-embed/resolve/main/model_int8.onnx -o ~/.dra/models/nomic-embed/model_int8.onnx
curl -L https://huggingface.co/jonasreyes/dra-nomic-embed/resolve/main/tokenizer.json -o ~/.dra/models/nomic-embed/tokenizer.json
curl -L https://huggingface.co/jonasreyes/dra-nomic-embed/resolve/main/config.json -o ~/.dra/models/nomic-embed/config.json

# (Opcional) Descargar también la variante FP32 completa:
curl -L https://huggingface.co/jonasreyes/dra-nomic-embed/resolve/main/model.onnx -o ~/.dra/models/nomic-embed/model.onnx

Opción B: Uso Automático con DRA

bash
# Instalación automática con DRA (descarga o compila según disponibilidad)
uv run dra setup

# Seleccionar modelo activo
uv run dra config set embed-model int8   # Versión ultra-rápida (131 MB)
uv run dra config set embed-model fp32   # Versión completa (522 MB)

💻 Uso en Python Puro (Sin PyTorch)

python
import numpy as np
from onnxruntime import InferenceSession, SessionOptions, GraphOptimizationLevel
from tokenizers import Tokenizer

# 1. Cargar tokenizador y sesión ONNX (INT8 o FP32)
tokenizer = Tokenizer.from_file("tokenizer.json")
opts = SessionOptions()
opts.graph_optimization_level = GraphOptimizationLevel.ORT_ENABLE_ALL
session = InferenceSession("model_int8.onnx", sess_options=opts, providers=["CPUExecutionProvider"])

# 2. Generar embeddings
texts = ["search_document: Arquitectura de agentes autónomos y soberanía en IA."]
enc = tokenizer.encode_batch(texts)
max_len = max(len(e.ids) for e in enc)

input_ids = np.array([e.ids + [0] * (max_len - len(e.ids)) for e in enc], dtype=np.int64)
attention_mask = np.array([e.attention_mask + [0] * (max_len - len(e.attention_mask)) for e in enc], dtype=np.int64)

outputs = session.run(None, {"input_ids": input_ids, "attention_mask": attention_mask})
embeddings = outputs[0][:, 0, :]  # Mean pooling / CLS representation

🔐 Checksums de Integridad (SHA-256)

ArchivoTamañoSHA-256
model_int8.onnx131.49 MB650fd2bde209bd85d0a842f52182f6cd347044a8fadba72b346840a4d5bfca63
model.onnx522.25 MB1c1005bf14c833d0bb52024b6175409efe745245d0c21795b4d0bec4f55d74e9
tokenizer.json711.39 KBd241a60d5e8f04cc1b2b3e9ef7a4921b27bf526d9f6050ab90f9267a1f9e5c66

🌐 Antecedentes del Proyecto

  • [DeepRoot](https://gitlab.com/jonasreyes/deeproot): Proyecto fundacional desarrollado por Jonás Reyes que definió las bases de arquitectura de sistemas y soberanía digital.
  • [DRA (DeepRoot Agent)](https://gitlab.com/jonasreyes/dra): Agente autónomo local-first, multi-proveedor y seguro, diseñado para competir sólidamente con las mejores herramientas de desarrollo asistido del estado del arte.

📄 Licencia

El modelo original nomic-embed-text-v1.5 está bajo licencia Apache 2.0. Este repositorio distribuye artefactos optimizados en formato ONNX; no modifica la arquitectura base del modelo.