File size: 4,034 Bytes
0d02fb4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d4bc59b
 
 
 
0d02fb4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# 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.