Configuración local de PostgreSQL para el clasificador RAG de Godot
Fecha de creación: 22 de junio de 2026
Propósito
Configurar una base de datos PostgreSQL local para el clasificador RAG de la documentación oficial de Godot. El flujo de referencia es el siguiente.
JSONL -> PostgreSQL -> Retriever -> Validator -> Qwen 3.6Objetivo de la fase actual no es generar datos de entrenamiento, sino reproducir una base de datos de evidencia basada en la documentación oficial localmente. Mantenga la columna payload de la tabla con el mismo nombre que el esquema JSONL, y para las columnas derivadas de operación de la base de datos incluya solo las columnas mínimas necesarias para búsqueda/almacenamiento, como id, embedding, search_tsv, created_at.
Documento de diseño de referencia:
docs/roadmaps/2026-06-21-initial-rag-classifier-architecture.mdConfiguración de la base de datos local
Archivo Docker Compose:
infra/postgres/docker-compose.ymlImagen usada:
pgvector/pgvector:pg16Información de conexión:
| Elemento | Valor |
|---|---|
| base de datos | godot_rag |
| usuario | godot_rag |
| contraseña | godot_rag_local |
| host | localhost |
| puerto | 5432 |
URL predeterminada para desarrollo local:
postgresql://godot_rag:godot_rag_local@localhost:5432/godot_ragExtensiones generadas
| extension | Propósito |
|---|---|
vector |
Almacenar incrustaciones de fragmentos de documento y prototipo de etiqueta |
pg_trgm |
Asistencia para búsqueda difusa/parcial de nombres de API, encabezados y símbolos |
Nota:
La columna **embedding** es un tipo vector que no fija la dimensión actual.
Los índices **HNSW/IVFFlat** de **pgvector** requieren una dimensión fija, por lo que,
el índice vector real se crea mediante una migración separada después de que la dimensión del modelo **embedding** se haya confirmado.Plantilla:
infra/postgres/init/004_vector_index_templates.sqlEsquema generado
Nombre del esquema DB:
godot_ragTabla:
| Tabla | Rol |
|---|---|
godot_rag.docs_chunks |
Fragmentos de documentación oficial, tutoriales, referencia de clases |
godot_rag.api_mapping |
Reglas de cambios, renombrado, reemplazo, depreciación de la API de Godot 3 → 4 |
godot_rag.label_prototypes |
Prototipos de ejemplos para clasificación/transformación/rechazo/corrección |
godot_rag.ingest_reports |
Advertencias, omisiones y registros de validación del proceso de conversión/inyección JSONL |
Diseño de la tabla
docs_chunks
Almacena fragmentos de la documentación oficial. Cada fila debe conservar la URL original, la ruta del archivo original y el hash del Markdown original.
Columnas principales:
| Columna | Descripción |
|---|---|
chunk_id |
ID determinista que no cambia al volver a ejecutar |
doc_version |
Versión de la documentación, por ejemplo stable, 4.6 |
source_url |
URL original de la documentación oficial de Godot |
source_file |
Ruta del Markdown dentro del repositorio |
source_sha256 |
Hash SHA‑256 del Markdown original |
doc_type |
Tipo de documento, como class_reference, tutorial, migration |
symbol |
Símbolo representativo del documento de clase/API |
section_path |
Jerarquía de títulos en formato JSON |
content |
Texto principal para búsqueda y embedding |
code_blocks |
Array de bloques de código extraídos del texto |
api_symbols |
Símbolos de la API de Godot detectados en el texto |
embedding |
Embedding pgvector |
search_tsv |
tsvector para búsqueda por palabras clave |
api_mapping
Almacena las reglas de cambio de Godot 3/4.
Principios importantes:
- Si hay evidencia en la documentación oficial, se establece
confidence = 'verified_from_docs'. - Las reglas de extracción automática que aún no se han revisado se marcan como
confidence = 'candidate'. - Las reglas que se usan directamente para entrenamiento/etiquetado deben ser revisadas por una persona y luego establecerse
confidence = 'approved'o gestionarse mediante un JSONL de aprobación separado.
label_prototypes
Almacena los criterios de etiquetas y patrones representativos de la salida del clasificador.
Candidatos iniciales de etiquetas:
| Etiqueta | Significado |
|---|---|
godot4_valid_api |
Uso de API válida según Godot 4 |
godot3_api_in_godot4 |
API de Godot 3 mezclada en un proyecto de Godot 4 |
deprecated_or_removed_api |
Uso de API eliminada o deprecada |
migration_required |
Necesaria la migración de Godot 3 → 4 |
ambiguous_version_signal |
Insuficiente o conflictiva evidencia para determinar la versión |
non_godot_noise |
Datos no relacionados con Godot (Python/web/Unity, etc.) |
unsafe_or_obfuscated_code |
Código ofuscado, caracteres de control, código sospechoso de malware |
Método de ejecución
Iniciar la base de datos:
docker-compose -f infra/postgres/docker-compose.yml up -dEn el entorno local actual, se utiliza el comando docker-compose en lugar del plugin docker compose.
Chequeo de salud:
docker inspect --format='{{json .State.Health.Status}}' godot-rag-postgresConexión desde dentro del contenedor:
docker exec -it godot-rag-postgres psql -U godot_rag -d godot_ragVerificar tabla:
docker exec godot-rag-postgres \
psql -U godot_rag -d godot_rag \
-c "\\dt godot_rag.*"Verificación de expansión:
docker exec godot-rag-postgres \
psql -U godot_rag -d godot_rag \
-c "select extname from pg_extension where extname in ('vector', 'pg_trgm') order by extname;"Inicialización
Solo se usa cuando se crea la base de datos completamente nueva. Tenga cuidado porque el volumen local será eliminado.
docker-compose -f infra/postgres/docker-compose.yml down -v
docker-compose -f infra/postgres/docker-compose.yml up -dRuta prevista para la inyección de JSONL
Aún no se ha creado el script de inyección. Primero se generará y verificará el siguiente producto JSONL y luego se añadirá el script de upsert.
| Archivo | Tabla de destino |
|---|---|
work/godot_rag/jsonl/docs_chunks.jsonl |
godot_rag.docs_chunks |
work/godot_rag/jsonl/api_mapping.jsonl |
godot_rag.api_mapping |
work/godot_rag/jsonl/label_prototypes.jsonl |
godot_rag.label_prototypes |
work/godot_rag/jsonl/ingest_report.jsonl |
godot_rag.ingest_reports |
Próximas tareas
- Crear un informe de análisis de la estructura
outputs/godot_docs_full/pages. - Definir los criterios de chunking por tipo de documento.
- Redactar el script de validación del esquema de
docs_chunks.jsonl. - Elaborar el script de upsert de JSONL.
- Verificar la calidad de búsqueda del Retriever con preguntas de muestra.