--- name: embedding_store_sqlvec kind: function lang: py domain: infra version: "1.0.0" purity: impure signature: "def embedding_store_sqlvec(db_path: str, table: str, ids: list, embeddings: list, dim: int = 384) -> int" description: "Inserta embeddings en tabla sqlite-vec. Crea la tabla virtual si no existe. Insercion en batches." tags: [embedding, sqlite, vector, store, sqlite-vec, python] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [sqlite3, sqlite_vec, numpy] params: - name: db_path desc: "ruta a la base de datos SQLite (se crea si no existe)" - name: table desc: "nombre de la tabla virtual sqlite-vec a crear" - name: ids desc: "lista de identificadores enteros para los embeddings" - name: embeddings desc: "lista de vectores (list[list[float]]) a almacenar" - name: dim desc: "dimensión de los vectores (por defecto 384 para e5-small)" output: "int: cantidad de vectores insertados" tested: false tests: [] test_file_path: "" file_path: "python/functions/embedding/sqlvec.py" --- ## Ejemplo ```python model = embedding_load_model(".local/models/e5-small") docs = ["La IA transforma la industria", "Python es versatil"] embs = embedding_encode(model, docs, mode="document") n = embedding_store_sqlvec("vectors.db", "doc_embeddings", [0, 1], embs) # n = 2 ``` ## Notas Usa sqlite-vec (extension pura C para SQLite). Los vectores se almacenan como blobs float32. Compatible con cualquier SQLite — se puede usar el mismo archivo para metadata con tablas normales. Insercion en batches de 500 para evitar limits de SQLite. Para 50k vectores dim=384: ~75 MB en disco, busqueda ~19ms/query.