frimeet-api-nlp / docs /fasttext_deployment.md
AlleksDev's picture
Add pgAdmin migration and Colab embedding loaders
d4bc59b unverified
|
Raw
History Blame Contribute Delete
4.03 kB

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

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:

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:

.\.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

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:

psql "host=<host> port=5432 dbname=nlp_vectors user=<admin> sslmode=require" `
  -f sql/migrate_fasttext_300.sql
psql "host=<host> port=5432 dbname=nlp_vectors user=<admin> 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:

.\.venv\Scripts\python.exe -m app.jobs.initial_load_place_embeddings
.\.venv\Scripts\python.exe -m app.jobs.initial_load_post_embeddings
psql "host=<host> port=5432 dbname=nlp_vectors user=<admin> 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:

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:

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.