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.7.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.7.1
File Size Uploaded Provenance Actions
soupdb-0.7.1.tar.gz 619.6 kB Without provenance Details for soupdb-0.7.1.tar.gz

Built distribution (wheel)

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

Total release size: 778.5 kB

Release files / soupdb-0.7.1.tar.gz

Download URL soupdb-0.7.1.tar.gz
Size 619.6 kB
Tags Source
SHA-256 checksum
How to use checksums
10e7132475165684b2b2fc4003a119175f2cc76a536798cc7df60f8aa1552d3f
BLAKE2b-256 checksum
How to use checksums
87103a88a36baa6df2d3332e7f66eb7d5291d8c254cb85bf51f74c68c598d420
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.7.1-py3-none-any.whl

Download URL soupdb-0.7.1-py3-none-any.whl
Size 158.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
42adc2710ed58528f14d5a12e11cc6f8574b382d227a2e41a75cbdc54be2955c
BLAKE2b-256 checksum
How to use checksums
5bf7913ab9d76e346bfb85870c50047f8c314f6e499a649402c93c02c4291212
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.7.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