Kore Engine
El motor de conocimiento que responde antes que tu LLM.
El problema
Cada empresa que usa un LLM gasta miles de euros al mes respondiendo las mismas preguntas una y otra vez. El 70-80% de las consultas de tus usuarios ya las has respondido antes.
La solución
pip install kore-engine
Kore se pone delante de tu LLM. Si sabe la respuesta, la da en menos de 1 milisegundo. Si no sabe, te dice que no sabe y tú decides si pasarla al LLM. Cada respuesta buena que pasa por Kore se queda para la próxima vez.
from kore import Kore
k = Kore("mi_dominio")
k.ingest("mi_conocimiento.jsonl")
r = k.ask("¿cómo se calcula el IVA?")
if r and r.confident:
return r.answer # <1ms, 0 tokens, 0 coste
else:
return llamar_al_llm() # Solo cuando Kore no sabe
Por qué Kore
| Kore | RAG + VectorDB | LLM directo | |
|---|---|---|---|
| Instalación | pip install kore-engine |
Redis + Pinecone + embeddings + orquestador | API key |
| Dependencias | 0 | 4-6 servicios | 1 API |
| Latencia | <1ms | 50-200ms | 500-3000ms |
| Coste por query | 0 | ~$0.001 (embeddings) | $0.01-0.10 |
| Aprende solo | Si | No | No |
| Memoria conversacional | Si | No | Limitada |
Qué puede hacer
Responder sin LLM — Kore tiene múltiples niveles de comprensión. No es un simple cache de texto exacto. Entiende variaciones, sinónimos y contexto.
Recordar conversaciones — Si un usuario pregunta "tipos de IVA" y luego dice "y el repercutido?", Kore sabe que habla de IVA repercutido.
k.ask("tipos de IVA en España", session_id="user_1")
# → "General 21%, reducido 10%, superreducido 4%"
k.ask("y el repercutido?", session_id="user_1")
# → "El IVA repercutido es el que cobra la empresa al vender..."
Aprender de las interacciones — Cuando tu LLM da una buena respuesta y el usuario la valida, Kore la incorpora. La próxima vez no necesita LLM.
k.feedback("¿cómo se cierra el ejercicio?", respuesta_del_llm, positive=True)
# A partir de ahora, Kore responde esa pregunta solo
Cualquier dominio — Fiscal, legal, médico, soporte técnico, e-commerce, educación. Tú defines las categorías de tu dominio y Kore se adapta.
k = Kore("soporte_tecnico", config=DomainConfig(
name="soporte",
categories={
"hardware": ["pc", "monitor", "teclado", "ratón", "impresora"],
"software": ["windows", "office", "email", "vpn", "antivirus"],
"red": ["wifi", "ethernet", "dns", "proxy", "firewall"],
},
))
Ingestar de todo — JSONL, CSV, JSON, ChatML, conversations. Le metes tu conocimiento en el formato que tengas.
k.ingest("faq.jsonl")
k.ingest("soporte.csv")
k.ingest([{"query": "...", "answer": "..."}])
Estadísticas en tiempo real — Sabes exactamente cuánto te ahorras.
s = k.stats()
# → hit_rate: 78%, queries: 15420, hits: 12028, misses: 3392
Comprensión semántica (opcional)
El paquete base ya es potente. Pero si quieres comprensión por significado (no solo por palabras), activa el nivel semántico:
pip install kore-engine[semantic]
k = Kore("mi_dominio", semantic=True)
Añade ~35MB. Sin PyTorch (2GB+). Sin GPU. Corre en cualquier CPU.
Rendimiento real
Probado con un dataset de 7,888 pares pregunta-respuesta de contabilidad española:
| Métrica | Resultado |
|---|---|
| Ingesta | 7,888 entries en 1.1s |
| Hit rate en queries del dominio | 100% |
| Falsos positivos (queries fuera de dominio) | 0% |
| Latencia media | 0.9ms/query |
| Memoria conversacional | 16/16 queries contextuales resueltas |
| Sesiones paralelas | Aislamiento perfecto |
Persistencia
# En memoria (rápido, volátil)
k = Kore("dominio", db_path=":memory:")
# En disco (persiste entre reinicios)
k = Kore("dominio", db_path="mi_conocimiento.db")
API completa
from kore import Kore, DomainConfig
k = Kore("dominio", config=config)
# ── Conocimiento
k.ingest(source) # Carga masiva
k.add(query, answer) # Entrada individual
k.clear() # Limpiar todo
# ── Consulta
r = k.ask(query) # Sin sesión
r = k.ask(query, session_id="user_1") # Con memoria
# ── Resultado
r.answer # Respuesta
r.score # Confianza (0.0 - 1.0)
r.confident # True si score >= 0.7
r.level # Nivel de matching
r.category # Categoría detectada
# ── Memoria
k.context(session_id) # Estado de la sesión
k.history(session_id) # Últimos turnos
k.forget(session_id) # Olvidar sesión
# ── Aprendizaje
k.feedback(query, answer, positive=True) # Registrar feedback
k.learn() # Incorporar feedback acumulado
# ── Estadísticas
k.stats() # Hit rate, contadores, etc.
Requisitos
- Python 3.10+
- Nada más
Licencia
MIT — IAFiscal © 2026
Metadata
Release files for kore-engine 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kore_engine-0.2.1.tar.gz | 31.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kore_engine-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.4 kB
Release files / kore_engine-0.2.1.tar.gz
| Download URL | kore_engine-0.2.1.tar.gz |
|---|---|
| Size | 31.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1e31d61fdb32de440edf9d069cc75ed43beefc2e9310553dbf9643f37e5c0e7f
|
|
BLAKE2b-256 checksum How to use checksums |
4e84de54c52851c943f1e465231179c73ae68c76eeea60de3c62a4386eaff844
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / kore_engine-0.2.1-py3-none-any.whl
| Download URL | kore_engine-0.2.1-py3-none-any.whl |
|---|---|
| Size | 26.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b047e5a9dcd97741353a699b6a4234f9eef904c19afcd01eea3617609c07474a
|
|
BLAKE2b-256 checksum How to use checksums |
997ac2c45b0ae7157e87c20bb5b63aef36c51097787f5cbce9ea759d610c3de2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|