Skip to content

Unified data platform for physical AI

Powering agentic systems with millisecond queries at petabyte scale and billions of records.

Example workload

Search: construction zones where v42 disengagd

Compiled in 4 ms

near   embedding("construction zone")
where  software = 'v42'
  and  disengaged = true
limit  4

4 nearest matches

  1. 1d = 0.214in view
  2. 2d = 0.229
  3. 3d = 0.241
  4. 4d = 0.256

Search: palets in the aisles at reno-2 this week

Compiled in 5 ms

near   embedding("pallet in the aisle")
where  site = 'reno-2'
  and  ts >= date_trunc('week', now())
limit  4

4 nearest matches

  1. 1d = 0.197in view
  2. 2d = 0.213
  3. 3d = 0.224
  4. 4d = 0.238

Search: frnaka arms failing to grasp clear cups

Compiled in 3 ms

near   embedding("grasping a clear cup")
where  robot = 'franka'
  and  success = false
limit  4

4 nearest matches

  1. 1d = 0.188in view
  2. 2d = 0.205
  3. 3d = 0.219
  4. 4d = 0.233
Simulated roof lidar. Simulated AMR lidar. Simulated depth camera. Illustration. The quoted text is embedded with the same model as the scans; matches are the nearest rows that pass the filter.

What we can do

  1. disengagement
    Fig. 1 A failure's nearest neighbors in embedding space. Rows that fail the filter drop out.

    Triage a failure

    Start from a disengagement or failed grasp and find every event like it on the same platform, software, and conditions, and send the set to labeling.

    near   clip(:event)
    where  platform = 'a'
      and  software = 'v42'
  2. cameralidarcanhit−2 s+5 s
    Fig. 2 A hit on camera, lidar, and CAN streams, widened to two seconds before and five after.

    Pull the context

    Expand every hit to the seconds around it and hand the source references to the viewer you already use.

    near   clip(:hit)
    expand window 2 s before, 5 s after
  3. v41v42same situations
    Fig. 3 The same six situations: v41 handled five, v42 missed three.

    Catch a regression

    Search the same situations under two releases and compare what each one did before you ship.

    near   clip(:miss)
    where  software in ('v41', 'v42')
  4. "unprotected left, heavy rain"commonrare
    Fig. 4 How often each scenario occurs. The matches sit in the rare end.

    Mine the long tail

    Describe a rare scenario in words and get the closest real examples, even when the conditions leave one row in a million.

    near   embedding("unprotected left, heavy rain")
    where  time_of_day = 'night'
  5. sfphxaus
    Fig. 5 The best one or two frames per episode, balanced across three cities.

    Build an eval set

    Assemble test sets that cover the scenarios you care about: the best few per episode, spread across cities, weather, and sites.

    near   clip(:scenario)
    where  city in ('sf', 'phx', 'aus')
    top    5 per episode_id
  6. insert pegteleop demos
    Fig. 6 Teleop trajectories; the three closest to the new task are highlighted.

    Pick demonstrations

    Find the teleop episodes closest to a new task, on the right robot and gripper, to fine-tune a policy.

    near   embedding("insert peg into hole")
    where  robot = 'franka'
      and  success = true

Illustrations. Each figure is drawn from its query, not from a measurement.

Works on the data you already have.

  1. embeddingplatformsoftwaretssource_refav4212:03s3://…/0412av4112:04s3://…/0412bv4209:51s3://…/1187av4218:20s3://…/2291

    Bring your datasets and logs

    FiftyOne or LeRobot datasets, MCAP or rosbag logs. Falcon keeps an embedding per frame, clip, or episode, the fields you filter on, and a reference back to the source.

  2. nearclip(:event)whereplatform = 'a'software = 'v42'top 5 perepisode_id

    Ask with meaning and conditions

    Start from an example or a sentence. Filter on any column and time range, and group results by episode or run.

  3. 5 nearest, all pass1d = 0.081ep 2291s3://fleet/22912d = 0.094ep 0412s3://fleet/04123d = 0.117ep 3310s3://fleet/33104d = 0.132ep 1187s3://fleet/11875d = 0.146ep 0958s3://fleet/0958

    Get exactly what matches

    Every result passes your filter, and you get the k you asked for whenever that many exist. EXPLAIN SEARCH shows the plan that ran.

The filter decides the plan.

Falcon estimates how many rows pass, and where they sit, picks a plan, and switches when the estimate was wrong.

Filter
Illustration. A 2-D stand-in for embedding space: 900 rows whose columns correlate with their neighborhoods. Every number here comes from running each plan on it.

Plan

Graph traversal

Rows that pass
75%
Near the query
72%

Most rows pass, so walking the similarity graph toward the query finds matches almost immediately.

EXPLAIN SEARCH

rows pass
75% (675 of 900)
plan
graph traversal, ef = 24
visited
45 rows, 33 pass
result
k = 5 d 0.003–0.015 recall 5/5

Top matches at distances 0.003, 0.009, 0.012, 0.014, 0.015.

Plan

Partition search

Rows that pass
13%
Near the query
60%

13% pass, and they cluster around the query. Probing the three closest partitions covers them.

EXPLAIN SEARCH

rows pass
13% (115 of 900)
plan
partition search, probe 3 of 16
scanned
181 rows, 71 pass
result
k = 5 d 0.003–0.019 recall 5/5

Top matches at distances 0.003, 0.005, 0.009, 0.011, 0.019.

Plan

Exact scan

Rows that pass
0.6%
Near the query
0%

Only 5 rows pass. Scoring every one is the fastest plan, and it’s exact.

EXPLAIN SEARCH

rows pass
0.6% (5 of 900)
plan
exact scan of rows that pass
scored
5 rows
result
k = 5 d 0.192–0.319 recall 5/5

Top matches at distances 0.192, 0.209, 0.257, 0.271, 0.319.

Plan

Partition search, then exact scan

Rows that pass
7.8%
Near the query
0%

7.8% pass, but they sit far from the query. The probe found 1 of the 5 needed, so the planner switched to scoring all 70.

EXPLAIN SEARCH

rows pass
7.8% (70 of 900)
plan
partition search, probe 3 of 16
scanned
181 rows, 1 pass: too few
switch
exact scan of 70 rows that pass
result
k = 5 d 0.089–0.288 recall 5/5

Top matches at distances 0.089, 0.159, 0.231, 0.288, 0.288.

Most fixed strategies have a cliff

Schematic p95 latency against the share of rows that pass the filter, from 100% to 0.1%. Search-then-filter slows sharply as filters narrow. Filter-then-scan is slow for broad filters and fast for tiny ones. The filter-aware graph is best for broad filters and degrades below a few percent. Partition search is best in between. Falcon’s planner is designed to follow the fastest strategy at each point.
Schematic, not a benchmark: textbook cost shapes with matches spread evenly. Correlation moves the cliffs, which is why the planner also watches yield while it runs. Published results will state recall, k, memory, and hardware.

Bring your hardest query.