SoupDB
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.lockversionado). El wheel se construye conuv buildy se adjunta a cada release. El runtime no tiene dependencias externas (solo stdlib). - Contenedor:
Dockerfilemulti-stage (build con uv sobre imagen slim) +docker-compose.ymlcon los serviciosengine,postgres:16yweb(placeholderSoupChef). La imagen del engine se publica en GHCR (ghcr.io/BD2-Project/soupdb) al crear un tag de versión.
Documentación
- API reference y guías: https://BD2-Project.github.io/SoupBD
- Informe técnico (typst): se publica como PDF en las Releases.
- Estrategia de versionado de releases:
docs/estrategia-release.md.
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.