File size: 4,274 Bytes
303d85f c43070d 303d85f c43070d d1d124c 303d85f a57e479 6121ab9 a57e479 c43070d 6121ab9 a57e479 6121ab9 a57e479 cb7900d |
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 123 124 125 126 |
---
license: llama3
base_model: meta-llama/Meta-Llama-3.2-3B
language:
- en
pipeline_tag: text-generation
tags:
- code
- spatial
- sql
- GIS
- PostGIS
---
**EXPERIMENTAL ALPHA**
</br>
**CURRENTLY TESTING**
</br>
**ENGLISH ONLY**
</br>
**MODIFICATIONS INBOUND - NOTES BELOW ON SQL ##RESPONSE TRAINING CHALLENGES**
### Model Information
This model, Llama-3.2-3B-Instruct-Spatial-SQL-1.0, is an 3B, narrow use case, text to spatial SQL, lightly fine-tuned model. In general, its primary use case
is the Natural Language command adaptation of particular geographic spatial functions as normally defined in pure SQL. Data input should be a combination of an English prefix in the form of a question, and a coordinate prompt injection, likely from an active mapping system application coordinate list. Output is PostGIS spatial SQL.
There are four primary geographic functions released in version 1.0.
**Model developer**: Mark Rodrigo
- Chat to Map interfacing.
**Model Architecture**: The model is a QLoRA / Supervised Fine Tuning (SFT)
### Model Input / Output Overview:
Input: Text plus coordinate prompt injection.
Output: **PostGIS spatial SQL**
NOTE: Inputs and outputs are in meters and or geographic decimal degrees WGS 84 coordinates.
| Function | Question Input | Geo Input | SQL Execution Output |
|:---------:|:---------------:|:---------:|:-------------------------:|
| Area | Area question | Polygon | Number - Area sq meters |
| Centroid | Center question | Polygon | Point |
| Buffer | Buffer distance | Point | Polygon |
| Length | Length question | Line | Number - Length in meters |
### Example Prompt / Prompt File
<|begin_of_text|><|start_header_id|>system<|end_header_id|>
<p></p>
You are a helpful assistant. You are an expert at PostGIS and Postgresql and SQL and psql.
<p></p>
<|eot_id|><|start_header_id|>user<|end_header_id|>
\### Instruction: Write a PostGIS SQL statement for the following.
<p></p>
\### Input:
<p></p>
{input}
<p></p>
\### Response:
<|eot_id|><|start_header_id|>assistant<|end_header_id|>
### Examples
**Note 10/6/24 **
- Centroid and Buffer responses are currently returning as WKT. While technically correct, this is not the desired response, and will be addressed.
</br> Reference - https://postgis.net/docs/ST_AsText.html
- English and Chinese models, etc. currently require the 8b models and or additional fine-tuning for 3b.
AREA
<p></p>
\### Input: What is the area for the polygon? : 'Polygon ((-3.7515154 40.3855551, -3.7514972 40.3856581, -3.7507005 40.3855767, -3.7507167 40.3854722, -3.7515154 40.3855551))'
<p></p>
\### Response: SELECT ST_Area(geog) As area FROM (select 'Polygon ((-3.7515154 40.3855551, -3.7514972 40.3856581, -3.7507005 40.3855767, -3.7507167 40.3854722, -3.7515154 40.3855551))' :: geography geog) subquery;
<p></p>
CENTROID
<p></p>
\### Input: What is the centroid for the polygon? : 'Polygon ((-3.6934636 40.4808785, -3.6933352 40.4811486, -3.6930125 40.4810598, -3.693141 40.4807897, -3.6934636 40.4808785))'
<p></p>
**actual**
\### Response: SELECT ST_Centroid(geog) FROM (select 'Polygon ((-3.6934636 40.4808785, -3.6933352 40.4811486, -3.6930125 40.4810598, -3.693141 40.4807897, -3.6934636 40.4808785))' :: geography as geog) subquery
**desired**
\### Response: SELECT ST_AsText(ST_Centroid(geog)) As centroid FROM (select 'Polygon ((-3.6934636 40.4808785, -3.6933352 40.4811486, -3.6930125 40.4810598, -3.693141 40.4807897, -3.6934636 40.4808785))' :: geography geog) subquery;
<p></p>
BUFFER
<p></p>
\### Input: What is the thousand meter buffer for the following point? : 'Point(-8.7522658 41.3862664)'
<p></p>
**actual**
\### Response: SELECT ST_Buffer(geog, 1000) FROM (select 'Point(-8.7522658 41.3862664)' :: geography as geog) subquery
**desired**
\### Response: SELECT ST_AsText(ST_Buffer(geog, 1000)) as buffer FROM (select 'Point(-8.7522658 41.3862664)' :: geography geog) subquery;
<p></p>
LENGTH
<p></p>
\### Input: How long is the line? : 'LINESTRING (-3.6976693 40.4263178, -3.6986082 40.4258729)'
<p></p>
\### Response: SELECT ST_Length(geog) As length FROM (select 'LINESTRING (-3.6976693 40.4263178, -3.6986082 40.4258729)' :: geography geog) subquery;
<p></p>
|