landvex: Datafabrik + Vision + Infrastruktur för 50GB skalning

Datafabrik:
- Skördare: crawler, källvitlista, upphandlingsskördare
- Extraktor: LLM-baserad schemastyrd extraktion
- Upplösare: Entitetsupplösning och deduplicering
- Köer: Schemalagd / kunddriven / fält
- Agentorkestrering: 20+ parallella agenter

Vision:
- Identify-modell: ResNet50 + kontrastivt lärande
- Träningspipeline: NT-Xent loss
- Vektordatabas: FAISS för snabb sökning
- OCR-pipeline: Typskyltsläsning

Infrastruktur:
- Docker Compose production
- Terraform för AWS ECS
- Prometheus + Grafana monitorering
- Neo4j + FAISS + MinIO + Redis
This commit is contained in:
Bernt
2026-07-05 06:25:51 +00:00
parent 7d40cf95bf
commit f4f853d94b
20 changed files with 2631 additions and 63 deletions
+98 -55
View File
@@ -3,82 +3,125 @@
> Kunskapsgraf över visuellt identifierbar fysisk infrastruktur.
> Grafen är produkten. Allt annat — appar, API:er, dashboards — är gränssnitt mot grafen.
## Struktur
## Arkitektur (skalad för 50GB+ agentkraft)
```
projects/landvex/
├── 00-styrning/ # Validering, verifiering
├── 10-data/ # Master-data (JSON)
├── lvx-klassposter-master-v3.json
├── lvx-produktmodeller-*.json
├── lvx-graf-kanter-v3.json
│ └── lvx-id-register.json
├── 20-automation/ # Ingest-pipeline
├── ingest.py
└── intag/ # Kandidatposter per våg
├── 30-produkt/ # API-spec, demosvar
├── 40-strategi/ # Genome-strategi, IOL-spec
├── api/ # FastAPI Identify-API
├── db/ # Neo4j-laddning
├── scripts/ # Export, bygghjälp
├── arkiv/ # Ersatta versioner
└── build.sh # Master byggscript
┌─────────────────────────────────────────────────────────────────┐
│ LANDVEX IOL v3 │
├─────────────────────────────────────────────────────────────────┤
SaaS-lager │ Identify API │ Tillverkarportal │
(API-nycklar, │ (foto → │ (claims, │
billing, SLAs) │ kandidater) │ verifiering) │
├──────────────────────┼────────────────┼────────────────────────┤
│ Datafabrik │ Vision │ QUIXZOOM │
(skördning, │ (embeddings, │ (bounties, │
extraktion, OCR, │ fältverifiering, │
│ entitetsupplösning)│ träning) │ individregister) │
├──────────────────────┴────────────────┴────────────────────────┤
│ Property Graph (Neo4j) │ Vektordatabas (FAISS) │
│ 64 noder → 1M+ noder │ 0 → 1M+ embeddings │
├─────────────────────────────────────────────────────────────────┤
│ Ingest Pipeline → Master Data → Graf-export → API │
└─────────────────────────────────────────────────────────────────┘
```
## Komponenter
### Datafabrik (`datafabrik/`)
Automatiserad datainsamling och bearbetning.
| Modul | Beskrivning |
|-------|-------------|
| `skordare/` | Webb-crawlers för tillverkare, upphandlingar, standarder |
| `extraktor/` | LLM-baserad schemastyrd extraktion (GPT-4o-mini) |
| `upplosare/` | Entitetsupplösning och deduplicering |
| `koer/` | Tre köer: schemalagd / kunddriven / fält |
| `agent_orkestrering.py` | Koordinerar 20+ parallella agenter |
### Vision (`vision/`)
Bildigenkänning och träning.
| Modul | Beskrivning |
|-------|-------------|
| `modeller/` | Identify-modell (ResNet50 + kontrastivt lärande) |
| `traening/` | Träningspipeline med NT-Xent loss |
| `embeddings/` | FAISS-vektordatabas + OCR-pipeline |
| `dataset/` | Bilddataset från Zoomer-foton och tillverkare |
### API (`api/`)
FastAPI-baserad Identify API.
| Endpoint | Beskrivning |
|----------|-------------|
| `POST /v0/identify` | Bild → rankade kandidater |
| `GET /v0/objects/{id}` | Komplett post |
| `GET /v0/search` | Fritextsök |
| `POST /v0/feedback` | Skapa bounty |
### Infrastruktur (`infrastruktur/`)
| Komponent | Teknik |
|-----------|--------|
| Graf-databas | Neo4j Enterprise |
| Vektordatabas | FAISS |
| Objektlagring | MinIO (S3-kompatibel) |
| Köer | Redis |
| Monitorering | Prometheus + Grafana |
| Orkestrering | AWS ECS Fargate |
## Snabbstart
```bash
# Bygg & kör allt
# 1. Bygg och starta lokalt
./build.sh
# Endast API (förutsätter Neo4j)
docker compose up -d api
# 2. Produktion med Docker Compose
docker compose -f docker-compose.prod.yml up -d
# Endast data-export
python3 scripts/export_csv.py
python3 db/load_to_neo4j.py
# 3. Skala ut med Terraform
cd infrastruktur/terraform
terraform apply
# 4. Kör agentarmén för Tier 1
python3 datafabrik/agent_orkestrering.py --tier 1 --domäner TRP,ELN,VAT
```
## API
| Endpoint | Beskrivning |
|----------|-------------|
| `GET /health` | Status + antal poster/kanter |
| `POST /v0/identify` | Bild → rankade kandidater |
| `GET /v0/objects/{lvx_id}` | Komplett post |
| `GET /v0/objects/{lvx_id}/succession` | Ersättningskedja |
| `GET /v0/search?q=...` | Fritextsök |
| `GET /v0/standards/{b}/objects` | Standard → objekt |
| `POST /v0/feedback` | Fel/okänt → bounty |
## Data
- **64 noder** (37 klasser + 27 modeller)
- **176 kanter** (80 LVX-upplösta, 82 standard, 14 textnoder)
- **9 domäner**: TRP, ELN, VAT, TEL, BYG, PRK, JVG, HMN, FLG
- **Verifieringsnivåer**: obekräftad → källbelagd → fältverifierad → tillverkarbekräftad
## Arkitektur
## Dataflöde
```
Ingest Pipeline API Layer Graph DB
─────────────────────────────────────────────────────────
Kandidatposter → resolve/merge → Neo4j (propertygraf)
↓ ↓ ↓
Extraktion → Identify API → Query/Search
↓ ↓ ↓
Zoomer-bounties ← Feedback ← Succession
Skördare → Rådata → Extraktor → Kandidatposter → Upplösare →
Master v3 → Graf-export → Neo4j + FAISS → API → Kund
↑_________________________________________________↓
(feedback → bounty → ny skördning)
```
## Mätetal
| Mått | Nu | Mål (12 mån) |
|------|-----|--------------|
| Objektklasser | 37 | 500+ |
| Produktmodeller | 27 | 100 000+ |
| Grafkanter | 176 | 1 000 000+ |
| Identify konfidens | Mockad | >90% top-3 |
| Kostnad/faktum | N/A | <$0.001 |
## Regler
1. **Fakta bär alltid källa** — inga påståenden utan proveniens
2. **Landvex-ID är permanent** — namn ändras, ID aldrig
3. **Konfidens exponeras alltid** — kunden ser aldrig osäkert som sanning
4. **Problem utan källa filtreras bort** — vid API-serialisering
1. **Enda sanningskälla:** `10-data/` + `lvx-objekt-schema.json`
2. **Aldrig mock i kundnära väg**
3. **Källa på varje påstående**
4. **ID:n mintas endast via registertjänsten**
5. **Verifieringstrappan är enkelriktad**
## Dokument
- [Genome-strategi](40-strategi/landvex-genome-strategi.md)
- [IOL-grundspec](40-strategi/iol-grundspecifikation.md)
- [API-spec](30-produkt/lvx-pilot-api-spec.md)
- [Agentarmé](00-styrning/AGENTARME.md)
## Team
58 agenter · 11 skvadroner · 4 faser
Litet kärnteam, stor agentflotta. **Skalning sker i beräkning, inte i huvuden.**