thiagonishimura commited on
Commit
fc3d735
·
verified ·
1 Parent(s): 40fe1dd

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +75 -1
README.md CHANGED
@@ -51,4 +51,78 @@ Para rodar o formato GGUF localmente utilizando apenas o processador, recomendam
51
 
52
  ### Instalação
53
  ```bash
54
- pip install llama-cpp-python
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  ### Instalação
53
  ```bash
54
+ pip install llama-cpp-python
55
+ ```
56
+
57
+
58
+
59
+ ### Exemplo de Código (Python)
60
+
61
+ ```bash
62
+
63
+ from llama_cpp import Llama
64
+
65
+ def generate_spatial_query(prompt: str, model_path: str) -> str:
66
+ """
67
+ Gera uma consulta PostGIS a partir de linguagem natural utilizando o TerraModel.
68
+
69
+ Args:
70
+ prompt (str): A pergunta em linguagem natural.
71
+ model_path (str): O caminho local para o arquivo .gguf.
72
+
73
+ Returns:
74
+ str: A consulta SQL gerada pelo modelo.
75
+ """
76
+ # Instanciação do modelo otimizada para CPU
77
+ llm = Llama(
78
+ model_path=model_path,
79
+ n_ctx=2048, # Janela de contexto
80
+ n_threads=8, # Ajuste para a quantidade de núcleos físicos da sua CPU
81
+ verbose=False
82
+ )
83
+
84
+ # System Prompt exato utilizado no fine-tuning do TerraModel
85
+ system_prompt = """Você é o TerraModel, um especialista em análise geoespacial e PostgreSQL/PostGIS.
86
+ Sua tarefa é traduzir perguntas em linguagem natural para consultas SQL rigorosas e otimizadas.
87
+
88
+ Você deve basear sua sintaxe ESTRITAMENTE no seguinte esquema de banco de dados:
89
+ CREATE TABLE public.dados_deter (gid integer, fid varchar, classname varchar, quadrant varchar, path_row varchar, view_date date, sensor varchar, satellite varchar, areauckm numeric, uc varchar, areamunkm numeric, municipali varchar, geocodibge varchar, uf varchar, geom geometry);
90
+ Nota: Use unaccent() para buscar textos."""
91
+
92
+ # Formatação ChatML requerida pela arquitetura Qwen2.5-Coder
93
+ formatted_prompt = f"<|im_start|>system\n{system_prompt}<|im_end|>\n<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n"
94
+
95
+ # Inferência
96
+ response = llm(
97
+ formatted_prompt,
98
+ max_tokens=256,
99
+ stop=["<|im_end|>"],
100
+ temperature=0.1 # Temperatura baixa para garantir determinismo na sintaxe SQL
101
+ )
102
+
103
+ return response['choices'][0]['text'].strip()
104
+
105
+ # Exemplo de uso
106
+ if __name__ == "__main__":
107
+ pergunta = "Calcule a área total em hectares dos polígonos que representam áreas de desmatamento e que estão dentro de um raio de 10 km de um ponto específico."
108
+ caminho_gguf = "./terramodel-7b-q4_k_m.gguf"
109
+
110
+ sql_gerado = generate_spatial_query(pergunta, caminho_gguf)
111
+ print("Query Gerada:\n", sql_gerado)
112
+
113
+ ```
114
+
115
+
116
+
117
+ ## 📊 Avaliação e Desempenho
118
+
119
+ O modelo foi submetido a um rigoroso benchmark empírico. A versão TerraModel 7B Q8 atingiu uma Acurácia de Execução de 82,00% no PostGIS, superando APIs comerciais como o GPT-4o-mini em cenários de inferência zero-shot focados no esquema do projeto.
120
+
121
+ Para aprofundamento metodológico, métricas de taxa de transferência (throughput) e validação semântica sistêmica (RAGAS), consulte o artigo científico vinculado a este projeto.
122
+
123
+
124
+ ## 🔗 Conjunto de Dados e Reprodutibilidade
125
+
126
+ O dataset sintético com as 3.000 amostras (pares NL-SQL) utilizadas para a injeção de conhecimento topológico e os scripts de benchmark estão disponíveis no repositório do GitHub:
127
+
128
+ 👉 [Acesse o Repositório](https://github.com/thiagonishimura/terramodel)