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
```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=<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`:
```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=<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:
```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.