Skip to main content

Oroi

Oroi (euskera: raíz de oroitu, «recordar») — una red semántica para agentes conversacionales. Memoria continua para una conversación infinita.

Oroi es una memoria asociativa para chatbots y agentes LLM que almacena la conversación como una red semántica con dinámica de activación inspirada en la memoria humana: lo mencionado se activa, la activación se propaga a lo asociado, todo decae con los turnos, las asociaciones que se repiten se refuerzan y un proceso en segundo plano consolida lo importante — como la memoria humana consolida durante el sueño.

La hipótesis: la recuperación sensible a la activación supera a la recuperación por similitud vectorial pura (RAG) en conversaciones largas con referencias recurrentes y deriva temática. En una evaluación de 224 escenarios, Oroi supera al RAG híbrido 0,75 frente a 0,55 en recall de recuperación (gana en 43 escenarios y no pierde en ninguno; p<10⁻⁴), con la ventaja concentrada en los casos que confunden a la búsqueda por similitud: distractores, datos que cambian y cadenas de tres asociaciones.

Oroi is an associative memory for LLM agents: a semantic network with activation dynamics inspired by human memory. Spanish-first project; English preprint available below.

El preprint

Instalación

Requiere Python ≥ 3.12. Desde el repositorio (la release en PyPI llegará como 0.1.0):

git clone https://github.com/igorlaburu/oroi && cd oroi
uv sync
cp .env.example .env   # y rellena tus credenciales (Azure OpenAI para extracción y embeddings)

Uso en diez líneas

from oroi import Mind
from oroi.extraction.extractor import TurnExtractor
from oroi.providers.azure import AzureEmbedder, AzureLLM
from oroi.providers.settings import ProviderSettings

settings = ProviderSettings()                      # lee .env
llm = AzureLLM(settings)
mind = Mind("memoria.db", AzureEmbedder(settings), TurnExtractor(llm), judge=llm)

mind.perceive("mi oficina está en Madrid")         # codificar un turno
print(mind.recall("¿dónde trabajo?"))              # recuperar: reconocimiento + evocación

La memoria persiste en memoria.db: reabrir es continuar, no empezar de cero. Mind.sleep() consolida (fusión de duplicados, promoción de asociaciones repetidas, poda); en el REPL y el servidor ocurre solo al quedar inactiva la conversación.

La línea de comandos

uv run oroi-chat                        # REPL conversacional con memoria (proveedor por .env)
uv run oroi viz --db memoria.db         # la película de la memoria, en HTML autocontenido
uv run oroi serve --db memoria.db       # visor en vivo + chat contra la mente real
uv run oroi replay --db memoria.db      # reconstruye la película desde los episodios
uv run oroi consolidate --db memoria.db # consolidación bajo demanda

¿Sin conversación propia todavía? uv run python examples/demo_conversation.py graba una conversación cotidiana de demostración en examples/demo.db.

Proveedores

Pieza Soporte hoy
Extracción (LLM rápido) Azure OpenAI, u OpenAI-compatible (OpenAI directo, Ollama, vLLM...)
Embeddings Azure OpenAI, u OpenAI-compatible con un modelo de embeddings en el endpoint
Conversador Claude (API o sesión local de Claude Code), Azure, u OpenAI-compatible

Para correr 100 % en local con Ollama: MEMORY_PROVIDER=openai, OPENAI_BASE_URL=http://localhost:11434/v1, OPENAI_FAST_MODEL=qwen3.6:latest (o tu modelo), y un modelo de embeddings servido (p. ej. nomic-embed-text, con OPENAI_EMBEDDING_DIM=768).

El núcleo no depende de ningún proveedor: oroi/providers/base.py define los Protocols (Embedder, Extractor, Chat) y todo se inyecta por constructor — cualquier otro proveedor es implementar dos o tres métodos.

Evaluación

El protocolo del preprint es reproducible: evaluation/ contiene el corpus sintético (224 escenarios, 7 fenómenos), las condiciones de contraste (RAG híbrido, RAG sobre hechos, re-ranker) y las dos métricas (Recall@contexto y Answer@judge).

uv run python -m evaluation.run        # tabla por fenómeno + test de McNemar + costes

Estado y licencia

Código bajo Apache-2.0; el nombre «Oroi» queda fuera de la concesión de licencia. Proyecto de investigación en desarrollo activo: la API puede cambiar. Próximas piezas declaradas en el preprint: reelaboración de recuerdos y validación sobre benchmark externo.

Contacto

Igor Laburu · Gako AI · oroi@gako.ai

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oroi-0.1.0.tar.gz (341.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oroi-0.1.0-py3-none-any.whl (58.9 kB view details)

Uploaded Python 3

File details

Details for the file oroi-0.1.0.tar.gz.

File metadata

  • Download URL: oroi-0.1.0.tar.gz
  • Upload date:
  • Size: 341.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for oroi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5bc444cab7503633fbca6d5c82f6596740b8966ad72645e9192024c3cf5c0ab5
MD5 396639e002ba7ad4f0c67f1e36fece93
BLAKE2b-256 35aa9eac0663b03c1864dead94abaca8bfa2fa6b0cf3c7f72a53652ed1a44df2

See more details on using hashes here.

File details

Details for the file oroi-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: oroi-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 58.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for oroi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 21f3239743cb777004e1923d421887189efb4253f4b05897c1aa92106ab88d25
MD5 a7a9b42a3df302f3e254f1a5615f1b8b
BLAKE2b-256 4d9a2f2aad3aaded9b22fddb9599cc835b4e95add3a8d3926b57c10ba904ec58

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.1

2 files

This release

0.1.0 This release

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page