Motor RAG offline-first para documentos privados, con Gateway, Portal y aceleración Rust opcional.
SES convierte documentos locales en un índice semántico consultable. El núcleo Python extrae, segmenta, genera embeddings y consulta Qdrant; Redis aporta caché y control distribuido; Ollama genera respuestas locales; el Gateway FastAPI expone los contratos HTTP y el Portal Next.js ofrece la superficie administrativa.
Offline-first significa que los documentos y consultas pueden permanecer en la infraestructura del operador. No significa cero dependencias de red durante la instalación: paquetes, imágenes y modelos deben aprovisionarse antes de operar sin conexión.
Este repositorio está en beta técnica. El código y la validación ejecutable son la fuente de verdad.
| Superficie | Estado comprobado | Límite actual |
|---|---|---|
| Núcleo Python | Pytest valida núcleo, SQLite y fallos de red controlados | E2E exitoso con Qdrant/Redis/Ollama reales pendiente |
| Gateway | Auth, telemetría SQLite, CORS y rate limiting endurecidos | Validación PostgreSQL y paridad Docker completa pendientes |
| Portal | Next.js 16; lint, build y ocho rutas administrativas validadas | E2E contra servicios reales pendiente |
| Rust | Wheel CPython 3.12, pruebas, Clippy y API NumPy | Es opcional y se activa en lotes de más de 50 candidatos |
| CI | Portal, Python, Rust, wheel, Pytest y smoke sintético en GitHub Actions | No sustituye pruebas end-to-end |
| Publicación | ses-core 2.0.3 en PyPI y jas_vector_core 0.1.0 en crates.io; cinco wheels ABI3, sdist y checksums verificados |
Las versiones publicadas son inmutables; cada corrección requiere una versión nueva |
| Mount Mode | Reindexado primero ingiere y conserva limpiezas pendientes en el manifiesto | No existe una transacción distribuida con Qdrant |
Documentos de solo lectura
|
v
Watcher / Scanner ---> Parser y chunking ---> Embeddings locales
|
v
Portal Next.js ---> Gateway FastAPI ---> Qdrant / Redis / Ollama
|
+-- reportes PDF
+-- llaves y analítica
+-- reranking Rust opcional
Directorios principales:
ses/: librería RAG, proveedores, reportes y watcher.gateway/: API FastAPI, dashboard estático y SQLite local.portal/: cliente administrativo Next.js.core_rs/: extensión PyO3jas_vector_core.sdk/: SDKs oficiales para TypeScript (@ses-ai/client) y Go (ses-go).tests/: pruebas Python y microbenchmark sintético.
Para desplegar la plataforma completa de Semantic Engine (Gateway FastAPI + Portal Next.js + Qdrant + Redis + Ollama) en producción:
# 1. Generar configuración criptográfica de producción (.env.prod)
python scripts/deploy_production.py
# 2. Levantar el stack completo en segundo plano
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d --buildServicios disponibles:
- Portal Administrativo: http://127.0.0.1:3000
- Enterprise Gateway: http://127.0.0.1:8000 (Documentación OpenAPI en
/docs) - Base Vectorial Qdrant:
:6333(Red interna aislada) - Caché Redis:
:6379(Red interna aislada con autenticación obligatoria) - Servidor LLM Ollama:
:11434(Red interna aislada)
Consulte la documentación completa en sdk/typescript/README.md.
import { SemanticEngineClient } from "@ses-ai/client";
const client = new SemanticEngineClient({
baseUrl: "http://localhost:8000",
apiKey: process.env.SES_API_KEY!,
});
const result = await client.search({
namespace: "legal",
query: "cláusula de rescisión",
generateAnswer: true,
});
console.log("Respuesta RAG:", result.answer);Consulte la documentación completa en sdk/go/README.md.
import ses "github.com/elbuilder77/Semantic-Engine/sdk/go"
client, _ := ses.NewClient(ses.ClientConfig{
BaseURL: "http://localhost:8000",
APIKey: "tu_llave_api",
})
resp, _ := client.Search(ctx, ses.SearchRequest{
Namespace: "legal",
Query: "cláusula de rescisión",
})python -m pip install "ses-core==2.0.3"La versión 2.0.3 está publicada mediante Trusted Publishing (OIDC) con wheels
ABI3 para Windows, Linux y macOS, además del sdist. Los artefactos y sus
checksums también están disponibles en la
GitHub Release v2.0.3.
El crate standalone se publica como
jas_vector_core 0.1.0.
git clone https://github.com/elbuilder77/Semantic-Engine.git
cd Semantic-Engine
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev,server]"python -m pip install "maturin>=1,<2"
python -m maturin build --release --manifest-path core_rs/Cargo.toml --interpreter python --out core_rs/target/wheels
$wheel = Get-ChildItem core_rs/target/wheels/*.whl | Select-Object -First 1
python -m pip install --force-reinstall $wheel.FullNameEl Compose canónico levanta dependencias satélite para desarrollo:
Copy-Item .env.compose.example .env.compose
# Edite QDRANT_API_KEY y REDIS_PASSWORD en .env.compose
docker compose --env-file .env.compose up -d
docker compose --env-file .env.compose psGateway:
python gateway/run.pyPortal:
npm ci --prefix portal
npm --prefix portal run dev -- --hostname 127.0.0.1 --port 3000El watcher trata las carpetas observadas como fuentes de solo lectura. Realiza
un escaneo inicial, filtra PDF/DOCX/XLSX/CSV/TXT/MD, calcula SHA-256, guarda
source_path y evita reinserciones cuando el contenido no cambió.
Los eventos se agrupan mediante debounce.
Consulte docs/MOUNT_MODE.md.
Gates locales equivalentes a CI:
pytest -q -p no:cacheprovider
npm --prefix portal run lint
npm --prefix portal run test
npm --prefix portal run build
cargo fmt --manifest-path core_rs/Cargo.toml -- --check
cargo test --manifest-path core_rs/Cargo.toml
cargo clippy --manifest-path core_rs/Cargo.toml --all-targets -- -D warningsSES Core se distribuye bajo GPLv3.