# Migracion Y Despliegue De FastText Esta migracion cambia los vectores derivados de 16 dimensiones mock a embeddings FastText reales de 300 dimensiones. No cambia ningun contrato HTTP. ## 1. Preparar Y Validar Localmente ```powershell cd C:\Users\aleja\Desktop\Uni\9o\MID\C2\Frimeet-API-NLP .\.venv\Scripts\python.exe -m pip install -r requirements.txt .\.venv\Scripts\python.exe -m pytest -q .\.venv\Scripts\python.exe -m app.shared.nlp.embeddings.download_fasttext_model ` --repo-id facebook/fasttext-es-vectors ` --filename model.bin ` --destination .models/fasttext-es/model.bin ``` Configura el `.env` local con: ```env EMBEDDING_PROVIDER=fasttext EMBEDDING_DIMENSION=300 EMBEDDING_MODEL=facebook/fasttext-es-vectors EMBEDDING_VERSION=common-crawl-300-v1 FASTTEXT_MODEL_PATH=.models/fasttext-es/model.bin FASTTEXT_MODEL_REPO_ID=facebook/fasttext-es-vectors FASTTEXT_MODEL_FILENAME=model.bin FASTTEXT_AUTO_DOWNLOAD=true SEMANTIC_NO_MATCH_THRESHOLD=0.30 SEMANTIC_RELEVANCE_THRESHOLD=0.50 ``` Antes de tocar la base, valida una pagina real sin escribir datos: ```powershell .\.venv\Scripts\python.exe -m app.jobs.sync_place_embeddings ` --dry-run --max-pages 1 --page-limit 5 .\.venv\Scripts\python.exe -m app.jobs.sync_post_embeddings ` --dry-run --max-pages 1 --page-limit 5 ``` Ambos comandos deben terminar con `errors=0`. Este ensayo comprueba la descarga y carga de FastText, la lectura de la API principal y las credenciales de lectura del contrato pgvector, pero no modifica RDS. ## 2. Publicar Codigo En GitHub ```powershell git add . git commit -m "Use Spanish FastText embeddings with pgvector" git push origin hf-deploy ``` ## 3. Pausar El Space Y Migrar RDS Pausa el Space antes de cambiar la dimension; la API anterior genera vectores de 16 dimensiones y no puede consultar una columna `VECTOR(300)`. Haz un snapshot de RDS y ejecuta con un usuario administrador o `nlp_owner`: ```powershell psql "host= port=5432 dbname=nlp_vectors user= sslmode=require" ` -f sql/migrate_fasttext_300.sql psql "host= port=5432 dbname=nlp_vectors user= sslmode=require" ` -f sql/aws_pgvector_contract.sql ``` La migracion trunca `place_embeddings` y `post_embeddings` porque son indices derivados incompatibles. No toca la base transaccional de la API principal. Para hacerlo desde pgAdmin y ejecutar la carga pesada desde Google Colab consulta `docs/pgadmin_colab_fasttext.md`. Incluye un SQL unico para Query Tool y dos scripts independientes de carga. ## 4. Repoblar PGVector Con las credenciales writer en `.env`: ```powershell .\.venv\Scripts\python.exe -m app.jobs.initial_load_place_embeddings .\.venv\Scripts\python.exe -m app.jobs.initial_load_post_embeddings psql "host= port=5432 dbname=nlp_vectors user= sslmode=require" ` -f sql/verify_fasttext_embeddings.sql ``` La verificacion debe mostrar filas, dimension 300, el modelo FastText configurado y normas cercanas a 1. ## 5. Actualizar Hugging Face En Settings del Space conserva `VECTOR_STORE_PROVIDER=aws_pgvector`, las credenciales actuales de RDS/Groq y configura estas variables de embedding: ```env EMBEDDING_PROVIDER=fasttext EMBEDDING_DIMENSION=300 EMBEDDING_MODEL=facebook/fasttext-es-vectors EMBEDDING_VERSION=common-crawl-300-v1 FASTTEXT_MODEL_PATH=/opt/models/fasttext-es/model.bin FASTTEXT_MODEL_REPO_ID=facebook/fasttext-es-vectors FASTTEXT_MODEL_FILENAME=model.bin FASTTEXT_AUTO_DOWNLOAD=false SEMANTIC_NO_MATCH_THRESHOLD=0.30 SEMANTIC_RELEVANCE_THRESHOLD=0.50 ``` El Dockerfile descarga el modelo durante el build. Publica la rama local en `main` del Space: ```powershell git push hf hf-deploy:main ``` Cuando el build termine, reinicia el Space y revisa `/ready` y una consulta real a `POST /places/recommendations`. ## Rollback No intentes insertar vectores de 16 dimensiones en las columnas nuevas. Para volver al motor anterior se requiere restaurar el snapshot o ejecutar una migracion inversa, repoblar los indices de 16 dimensiones y desplegar el commit anterior.