Skip to main content

SoupDB

ci coverage pypi license python

Motor de base de datos multimodal (relacional, espacial y vectorial) construido desde cero en Python, con integración de IA. La aplicación final es un RAG sobre documentos académicos: indexa, recupera y genera respuestas sobre el contenido de papers, informes y otros materiales académicos.

IA aplicada

  • RAG (retrieval-augmented generation) sobre documentos académicos.
  • Búsqueda vectorial (embeddings, HNSW) para similitud semántica.
  • Recuperación léxica (BM25) y fusión con la búsqueda vectorial.
  • Extracción de características multimodales (SIFT, MFCC, K-Means).

Proyecto académico · UTEC · Base de Datos 2 · ciclo 2026-2

Arquitectura

Arquitectura de plugins: el núcleo (storage, tipos base, B+/hash/R-tree, SQL y transacciones) se mantiene nativo. Full-text (soupdb-inverted) y vectorial (soupdb-vector) son plugins instalables que declaran capacidades y se descubren por entry points. El SQL uniforme de búsqueda es SEARCH(col, expr) USING <plugin> WITH (...) + SCORE(). Ver plugins y SQL de plugins.

flowchart LR
    subgraph Chef["SoupChef (Cliente)"]
        UI["Svelte + Tauri"]
    end
    subgraph R["rsoup (Driver de red / transacciones)"]
        DRV["Rust — TCP/IP capa 4"]
    end
    subgraph DB["SoupDB (Gestor de base de datos)"]
        Q["Query Processor"] --> IX["Indexes"]
        Q --> AL["Algorithms"]
        Q --> ST["Storage"]
        ST --> DM["DiskManager"]
        Q --> TX["Transacciones y Concurrencia"]
        TX --> ST
    end
    UI <-->|"Tauri invoke / specta TS"| DRV
    DRV <-->|"protocolo binario"| Q
    DRV <--> TX
    PG[("PostgreSQL 16")] -. "comparación experimental" .-> Q

Trabajo multirepo: SoupDB (gestor de base de datos), desarrollado en este repositorio; rsoup (driver de red y control de transacciones y concurrencia, en BD2-Project/rsoup — documentación); SoupChef (cliente de escritorio del gestor). El desarrollo se coordina mediante contexto compartido de arquitectura, reglas y convenciones que aplican a todos los equipos y a los agentes de IA.

El driver rsoup es el cliente Rust que los consumidores usan para conectarse al pool del gestor (TCP/IP, protocolo binario v1/v2, puerto DRIVER_PORT); el frontend SoupChef lo integra vía Tauri. Ver docs/driver.md y el protocolo en docs/protocolo.md.

Dependencias

Dependencia Uso Instalación
Python ≥ 3.11 Motor de base de datos python.org o gestor del SO
uv Gestor de paquetes y entornos curl -LsSf https://astral.sh/uv/install.sh | sh
Docker Contenedor y despliegue local Docker Desktop o gestor del SO
PostgreSQL 16 Comparación experimental docker compose up postgres o gestor del SO
typst Informe técnico (paper/) gestor del SO

Setup

# Instalar dependencias y crear el entorno
uv sync --all-groups

# Tests y lint
uv run pytest
uv run ruff check .

# Documentación (build local)
uv run --group docs mkdocs build

# Informe técnico
typst compile paper/main.typ paper/soupdb.pdf

# Levantar el gestor sin docker (escucha en 55432)
uv run python -m engine

# Despliegue local (gestor + postgres con PostGIS)
docker compose up

El gestor queda escuchando el protocolo binario en el puerto 55432, que es al que se conectan el driver rsoup y el cliente SoupChef.

Si el puerto ya está ocupado en tu máquina:

DRIVER_PORT=55435 POSTGRES_PORT=55434 docker compose up

Configuración por variables de entorno: SOUPDB_DATA (directorio de datos), DRIVER_HOST, DRIVER_PORT, PAGE_SIZE, BUFFER_POOL_SIZE, MAX_CONNECTIONS y LOCK_TIMEOUT_MS.

Gestión de paquete y contenedor

  • Paquete: el motor se gestiona con uv (pyproject.toml + uv.lock versionado). El wheel se construye con uv build y se adjunta a cada release. El runtime no tiene dependencias externas (solo stdlib).
  • Contenedor: Dockerfile multi-stage (build con uv sobre imagen slim) + docker-compose.yml con los servicios engine, postgres:16 y web (placeholder SoupChef). La imagen del engine se publica en GHCR (ghcr.io/BD2-Project/soupdb) al crear un tag de versión.

Documentación

Licencia

MIT — ver LICENSE.

Metadata

Release files for soupdb 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for soupdb 0.6.1
File Size Uploaded Provenance Actions
soupdb-0.6.1.tar.gz 557.0 kB Without provenance Details for soupdb-0.6.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for soupdb 0.6.1
File Interpreter ABI Platform Actions
soupdb-0.6.1-py3-none-any.whl Python 3 none any Details for soupdb-0.6.1-py3-none-any.whl

Total release size: 714.6 kB

Release files / soupdb-0.6.1.tar.gz

Download URL soupdb-0.6.1.tar.gz
Size 557.0 kB
Tags Source
SHA-256 checksum
How to use checksums
6ce8a32cdd9d90ae12318e2d6c2f49a17e7f241740c4ee64b2846a3d53e6eff3
BLAKE2b-256 checksum
How to use checksums
627844c75e875172e3a3e7c45602ca301a97a40731cfb38ea21a2dffba8ff7bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / soupdb-0.6.1-py3-none-any.whl

Download URL soupdb-0.6.1-py3-none-any.whl
Size 157.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
69034f5cf261ca7585624271750400b70db7793cc4f731fcdb4343947a4c0db8
BLAKE2b-256 checksum
How to use checksums
0db9a9fdf2662a2626d56ab1c3b4b9354eea893fc11c3ba08b7d2e7fa8273aeb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for soupdb 0.6.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page