--- name: embedding_search_sqlvec kind: function lang: py domain: infra version: "1.0.0" purity: impure signature: "def embedding_search_sqlvec(db_path: str, table: str, query_embedding: list, k: int = 10) -> list" description: "Busca los k vecinos mas cercanos en tabla sqlite-vec. Retorna rowids y distancias ordenados." tags: [embedding, sqlite, vector, search, retrieval, 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 con tabla virtual sqlite-vec" - name: table desc: "nombre de la tabla virtual donde buscar vectores" - name: query_embedding desc: "vector de embedding (list[float]) a usar como query" - name: k desc: "cantidad de vecinos más cercanos a retornar" output: "list[dict]: resultados ordenados con 'rowid' e 'distance' (coseno, menor=más similar)" tested: false tests: [] test_file_path: "" file_path: "python/functions/embedding/sqlvec.py" --- ## Ejemplo ```python model = embedding_load_model(".local/models/e5-small") q_emb = embedding_encode(model, ["¿Que es machine learning?"], mode="query")[0] results = embedding_search_sqlvec("vectors.db", "doc_embeddings", q_emb, k=5) # [{"rowid": 0, "distance": 0.23}, {"rowid": 1, "distance": 0.45}, ...] ``` ## Notas Busqueda brute-force (exacta, no aproximada). Para 50k vectores tarda ~19ms/query. El campo distance es distancia coseno (menor = mas similar) porque los embeddings estan normalizados. Cold start rapido (~18ms) porque SQLite no carga todo el indice a RAM.