---
title: "HeliosDB Nano Geospatial & Semantic Search Integration"
description: "Planned: geospatial functions (ST_DWithin, ST_Distance) are not in the current HeliosDB Nano release; how location search will combine with vector search."
---

# HeliosDB Nano Geospatial & Semantic Search Integration

:::caution[Planned: geospatial functions are not in the current release]
Geospatial functions and indexes are planned; they are not in the current
HeliosDB Nano or Full releases. `ST_DWithin`, `ST_Distance` and geometry types used on this page do
not exist in the current release, so the queries below do not run. This page
describes a planned use case. Today, store coordinates in numeric columns and
filter them with ordinary SQL alongside vector search. See
[Known Limitations](https://www.heliosdb.com/docs/nano/reference/compatibility/known-limitations/#planned).
:::

## Business Use Case Analysis

**Focus:** Location-Based Services, Maps, and Local Discovery

---

## Executive Summary

Geospatial functions are planned for HeliosDB Nano. When they ship, location-based service platforms (maps, local search, delivery) will be able to combine **geospatial queries + semantic understanding** in a single embedded database. The planned value propositions:

- **Unified geospatial + semantic search** (find "coffee shops near me" semantically, not just by keyword)
- **Real-time location data** (Uber-driver proximity with semantic understanding)
- **Sub-second spatial queries** on 100M+ points of interest
- **50-70% cost reduction** vs. PostGIS + Redis + Vector DB stack
- **Instant data freshness** (no caching/sync issues)
- **Perfect for region-specific AI** (e.g., "restaurants in San Francisco that locals recommend")

**Projected Market Impact (estimates; feature planned):**
- **Query latency:** 2-5 seconds → < 500ms (10x faster)
- **Infrastructure cost:** $20K-30K/month → $5K-8K/month
- **Time to search:** Batch overnight → Real-time instant
- **Regional variants:** Impossible → Simple (branching per region)
- **Revenue per user:** $10/month → $15-20/month (from better discovery)

---

## Problem Being Solved

### The Geospatial + AI Discovery Dilemma

Location-based platforms face an architectural challenge:

**Option A: PostGIS + SQL Only**
- Pro: Excellent spatial indexing (R-tree)
- Pro: Native distance queries
- Pro: Proven for mapping
- Con: **Cannot understand semantics** ("fancy" vs "cheap" restaurants)
- Con: **Cannot do similarity search** (find similar locations)
- Con: **Results unranked** (just spatial, no relevance)
- Con: **No personalization** (same results for all users)

**Option B: PostGIS + Vector DB (Pinecone/Milvus)**
- Pro: Spatial queries (distance)
- Pro: Semantic understanding
- Pro: Personalized results
- Con: **Operational complexity** (2 systems to manage)
- Con: **Data sync issues** (location updates lag)
- Con: **High cost** ($20-30K/month for both)
- Con: **Latency** (2-5 seconds from network overhead)

**Option C: Custom Solution**
- Pro: Can be optimized for use case
- Con: **Massive engineering effort** (12-18 months)
- Con: **Ongoing maintenance burden**
- Con: **Not cost-competitive** (vs. commercial solutions)
- Con: **Difficult to scale** (distributed spatial queries)

### Location Platform Pain Points

**Operational Complexity:**
```
Current Geo + AI Stack:
├─ PostgreSQL + PostGIS (spatial DB):    $10K/month
├─ Vector DB (Milvus/Weaviate):          $8K/month
├─ Redis (caching + location tracking):  $3K/month
├─ Engineering team (3 FTE):             $60K/month
└─ Total Monthly:                        $81K/month

Complex Data Flow:
├─ Business updates location info
├─ Syncs to PostgreSQL (1-2 minute delay)
├─ Batch embedding job runs (hourly)
├─ Updates sync to Vector DB (5-10 minute lag)
├─ Cache invalidation (complex, error-prone)
└─ Result: Stale data, consistency issues
```

**Technical Challenges:**
- **Synchronization nightmare:** Location data in multiple systems
- **Slow search:** Network latency + batch processing
- **Cold start:** New locations have no semantic embeddings
- **Regional variants:** Each region needs different tuning (expensive)
- **Real-time tracking:** Ride-share drivers difficult to track across systems

### Root Cause Analysis

| Problem | Root Cause | Traditional Solution | HeliosDB Nano Solution |
|---------|-----------|----------------------|----------------------|
| **High cost** | Dual systems required | Accept cost (pass to users) | Single unified database |
| **Stale data** | Multiple systems not in sync | Cache aggressively (complexity) | Single source of truth |
| **Slow search** | Network latency + batch | Add more caching (workaround) | Embedded, instant |
| **No semantics** | PostGIS focused on geometry | Add Vector DB (complexity ↑) | Native vector integration |
| **Regional variants** | Complex to manage per region | Manual per-region setup | Branching per region |
| **Personalization** | Requires complex ML pipeline | Hire data scientists | SQL-based personalization |

---

## Business Impact Quantification

### Illustrative Cost Model: 50 Cities, 500K POIs (estimates; feature planned)

**Current PostGIS + Vector DB Stack:**

```
Infrastructure:
├─ PostgreSQL + PostGIS cluster:        $12K/month
├─ Vector DB (Milvus):                  $8K/month
├─ Redis cluster:                        $3K/month
├─ Caching layer (Memcached):           $2K/month
├─ Engineering team (3 FTE):            $60K/month
└─ Total Monthly:                       $85K/month
└─ Annual:                              $1.02M/year

Search Performance Issues:
├─ Initial search latency: 2-5 seconds
├─ Embedding latency (daily batch): 8-12 hours
├─ Data freshness: 12-24 hours
├─ Regional variants: Manual setup (weeks)
├─ Consistency issues: 2-3 per month
```

**HeliosDB Nano Geospatial + Semantic:**

```
Infrastructure:
├─ Kubernetes cluster (3 nodes):         $5K/month
├─ HeliosDB Nano:                        Included
├─ Monitoring & alerting:                $500/month
├─ Platform engineers (1-2 FTE):        $25K/month
└─ Total Monthly:                       $30.5K/month
└─ Annual:                              $366K/year

Annual Savings: $1.02M - $366K = $654K (64% reduction)

Search Performance (targets, not measured):
├─ Geospatial search: < 100ms
├─ Semantic search: < 100ms
├─ Combined (geo + semantic): < 300ms
├─ Embedding: Instant (real-time)
├─ Data freshness: Milliseconds
├─ Regional variants: Easy (branching)
├─ Consistency: 100% (single DB)
```

**Revenue Impact Through Better Discovery:**

```
Baseline (Traditional Approach):
├─ Monthly active users: 100K
├─ Search frequency: 5 searches/month
├─ Conversion rate (user clicks): 30%
├─ Click-through monetization: $0.05 per click
├─ Monthly revenue: $37.5K
├─ Annual revenue: $450K

With HeliosDB Nano Semantic + Geo:
├─ Monthly active users: 100K (same)
├─ Search frequency: 5 searches/month (same)
├─ Conversion rate: 50% (67% improvement from better results)
├─ Click-through monetization: $0.08 per click (30% premium - better targeting)
├─ Monthly revenue: $100K (+167% increase)
├─ Annual revenue: $1.2M (+$750K additional)
```

**Total Financial Impact (3-Year):**
```
Infrastructure Savings: $654K/year × 3 = $1.962M
Revenue Increase: $750K/year × 3 = $2.25M
Implementation Cost: $100K
Total 3-Year Value: $4.112M
ROI: 40.1x (4,010%)
Payback Period: < 1 month (from revenue lift)
```

---

## HeliosDB Nano Solution Architecture

### Unified Geospatial + Semantic Platform

```
┌────────────────────────────────────────────────┐
│  Location Discovery Application                │
├────────────────────────────────────────────────┤
│                                                │
│  HeliosDB Nano (geospatial: planned)           │
│  ┌──────────────────────────────────────────┐ │
│  │ Points of Interest (POI) Table           │ │
│  │ ├─ poi_id (PRIMARY KEY)                  │ │
│  │ ├─ name, description (TEXT)              │ │
│  │ ├─ location (POINT) [lat, lon]           │ │
│  │ ├─ embedding (VECTOR) [semantic]         │ │
│  │ ├─ category (VARCHAR)                    │ │
│  │ ├─ rating, reviews (FLOAT, INT)          │ │
│  │ ├─ metadata (JSONB) [price, hours, etc]  │ │
│  │ └─ created_at, updated_at (TIMESTAMP)    │ │
│  ├──────────────────────────────────────────┤ │
│  │ User Preferences Table                   │ │
│  │ ├─ user_id (PRIMARY KEY)                 │ │
│  │ ├─ home_location (POINT)                 │ │
│  │ ├─ embedding (VECTOR) [taste profile]    │ │
│  │ ├─ preferred_categories (JSON array)     │ │
│  │ ├─ price_preference (VARCHAR)            │ │
│  │ └─ updated_at (TIMESTAMP)                │ │
│  ├──────────────────────────────────────────┤ │
│  │ Indices                                  │ │
│  │ ├─ Spatial index (GIST on location)      │ │
│  │ ├─ Vector HNSW (semantic search)         │ │
│  │ ├─ Category index (filtering)            │ │
│  │ └─ Rating index (sorting)                │ │
│  ├──────────────────────────────────────────┤ │
│  │ Real-Time Location Engine                │ │
│  │ ├─ Nearby POI search (distance radius)   │ │
│  │ ├─ Semantic similarity (restaurants)     │ │
│  │ ├─ Personalization (user preferences)    │ │
│  │ ├─ Ranking (distance + semantics)        │ │
│  │ └─ Filtering (open now, price range)     │ │
│  └──────────────────────────────────────────┘ │
│                                                │
│  Query Types (target <300ms):                 │
│  ├─ Nearby search: "restaurants near me"     │
│  ├─ Semantic search: "fancy dining"          │
│  ├─ Combined: "fancy restaurants near me"    │
│  ├─ Personalized: "places I'd like"          │
│  └─ Regional: per-city variant branches      │
│                                                │
└────────────────────────────────────────────────┘
    ↓ (REST API / real-time WebSocket)
┌────────────────────────────────────────────────┐
│  Mobile/Web Map Application                    │
├────────────────────────────────────────────────┤
│  ├─ User location tracking                    │
│  ├─ Nearby POI markers                        │
│  ├─ Search results ranked by relevance        │
│  ├─ Personalized recommendations              │
│  ├─ Real-time updates (drivers, availability) │
│  └─ Direction integration (Google Maps API)   │
└────────────────────────────────────────────────┘
```

### Example Queries

**Nearby Semantic Search:**
```sql
-- Find "fancy restaurants" near user (combining spatial + semantic)
SELECT
    p.poi_id, p.name, p.rating,
    ST_Distance(p.location::geography, $1::geography) as distance_meters,
    1 - (p.embedding <-> $2) as semantic_relevance,
    (CASE WHEN p.metadata->>'price' = '$$$' THEN 0.3 ELSE 0 END) as fancy_score,
    -- Combine distance (prefer closer) + semantic (prefer relevant) + attributes (fancy)
    (
        (1 - MIN(distance_meters, 10000) / 10000) * 0.4  -- Distance weight
        + semantic_relevance * 0.4                        -- Semantic weight
        + fancy_score * 0.2                               -- Attribute weight
    ) as combined_score
FROM poi
WHERE
    ST_DWithin(p.location::geography, $1::geography, 5000)  -- Within 5km
    AND p.metadata->>'status' = 'open'                       -- Currently open
ORDER BY combined_score DESC
LIMIT 20;
```

**User Personalization with Location:**
```sql
-- Recommend places based on user taste + location + availability
SELECT DISTINCT
    p.poi_id, p.name, p.rating,
    ST_Distance(p.location, up.home_location) as from_home,
    -- Semantic match to user preferences
    (1 - (p.embedding <-> up.embedding)) * 0.5 as taste_match,
    -- Category preference
    (CASE WHEN p.category = ANY(up.preferred_categories) THEN 0.3 ELSE 0 END) as category_match,
    -- Price range
    (CASE WHEN p.metadata->>'price' = up.price_preference THEN 0.2 ELSE 0 END) as price_match
FROM poi p
CROSS JOIN user_preferences up
WHERE up.user_id = $1
    AND ST_DWithin(p.location, up.home_location, 3000)  -- Within 3km home
    AND p.metadata->>'status' = 'open'
ORDER BY (taste_match + category_match + price_match) DESC
LIMIT 20;
```

---

## Success Metrics

### Technical KPIs (targets; feature planned)

| Metric | Target (planned) |
|--------|------------------|
| **Nearby Search Latency** | < 200ms |
| **Semantic Search Latency** | < 200ms |
| **Combined Query Latency** | < 500ms |
| **Real-Time Freshness** | Instant |
| **Spatial Index Coverage** | 100M+ POIs |

### Business KPIs (projected; feature planned)

| Metric | Baseline | Improvement |
|--------|----------|-------------|
| **Search Quality** | 3/5 rating | 4.5/5 rating |
| **Click-Through Rate** | 30% | 50% (+67%) |
| **User Retention** | 60% monthly | 85% monthly |
| **Revenue per User** | $10/month | $15-20/month |
| **Cost per User** | $2 | $0.50 (75% reduction) |

---

## Conclusion

Geospatial functions and indexes are planned for HeliosDB Nano; they are not in the current release. Once they ship, location-based platforms will be able to run **geospatial + semantic search** in one embedded database, with spatial predicates alongside the vector search that Nano already provides, instead of keeping a spatial database and a vector store in sync. The latency and cost figures on this page are targets and estimates, not measurements.

Until then, store coordinates in numeric columns, pre-filter by a bounding box with ordinary SQL, and rank the remaining rows with vector search.

---

**Classification:** Business Use Case - Geospatial & Semantic Search
