BETA — offen für öffentliche Tests

Pop-Search

Engine für strukturierte Ähnlichkeit & Anomalie-Erkennung

Laden Sie Ihren Katalog — Produkte, Transaktionen, Sensordaten — als normale Datensätze. Sie erhalten ähnliche Datensätze und statistische Ausreißer zurück, direkt auf Ihren numerischen Rohfeldern. Keine Vektoren. Keine Modelle. Keine Pipeline.

Ohne Vektoren Interpretierbare Scores Ein Binary, ein Node Läuft auf 2-Core / 4 GB Self-hosted

Was es ist

Eine neue Art der Suche: Ähnlichkeit ohne Vektoren

Pop-Search ist eine Engine für strukturierte Ähnlichkeit & Anomalie-Erkennung. Sie laden Ihre Daten als gewöhnliche Datensätze — und Pop-Search findet Datensätze, die einem gegebenen ähnlich sind, und solche, die statistisch nicht dazu passen. Und das mit den Feldern, die Sie bereits haben.

Die Idee in einem Satz: Suche ohne Vektoren. Eine Vektordatenbank verlangt, dass Sie ein Embedding-Modell trainieren, jeden Datensatz durchtreiben und eine Blackbox akzeptieren. Pop-Search überspringt das alles. Ihre numerischen Felder tragen bereits Bedeutung — Preis, Bewertung, Latenz, Temperatur — also arbeitet Pop-Search direkt darauf.

Jedes Ähnlichkeits-Ergebnis kommt mit einem Score, den Sie lesen können, und einem Grund, den Sie erklären können — wichtig, wenn die Antwort einer Preiskontrolle, einer Fraud-Warteschlange oder einem Wartungsticket standhalten muss.

So funktioniert's

Laden. Abfragen. Läuft auf Minimal-Hardware.

Sie laden Ihre Daten. Pop-Search indiziert Ihre numerischen Felder, sodass Ähnlichkeit, Bereichsfilterung und Anomalie-Erkennung schnell laufen — selbst auf einem kleinen 2-Core-/4 GB-Server.

01

Import

Datensätze als JSON oder CSV-Batch laden. Definieren Sie, welche Felder numerisch und welche kategorial sind.

02

Indexierung

Pop-Search indiziert Ihre numerischen Felder für schnelle Ähnlichkeits-, Bereichs- und Anomalie-Abfragen.

03

Abfrage

Suchen mit Bereichen + Filtern, ähnliche Datensätze finden und Ausreißer erkennen — über HTTP, mit interpretierbaren Ergebnissen.

⚖ Der Algorithmus ist Patent angemeldet

Die Interna können wir noch nicht teilen. Kurzversion: deterministisch, interpretierbar und ohne Vektoren — und gebaut, um auch auf bescheidener Hardware schnell zu bleiben. Dies ist eine Beta, offen für öffentliche Tests des Algorithmus. Was Sie hier sehen, ist, was wir heute zeigen können; die Details folgen.

Was Sie bekommen

Alles, was der Job „ähnliche finden + Ausreißer finden“ braucht

🎯

Ähnliche Datensätze

Die nächsten Datensätze nach Feld-Nähe, jeweils mit interpretierbarem 0–1-Score.

🚩

Anomalie-Erkennung

Statistische Ausreißer pro numerischem Feld, mit z-Score, den Sie schwellen und erklären können.

🧮

Schnelles Filtern

Numerische Bereiche + kategoriale Gleichheit, kombiniert mit UND / ODER / muss-nicht.

📊

Facetten & Aggregationen

Gruppieren Sie Ihre Treffer nach beliebigem Feld, um die Form des Ergebnis-Satzes zu sehen.

🏷️

Feld-Labels

Menschenlesbare Labels für Ihre numerischen Felder anhängen und danach abfragen.

🔐

Multi-Tenant

Isolierte Sammlungen pro API-Key. Ein Server, viele Kunden.

📦

Self-hosted, Single-Node

Ein statisches Binary. Lokale Datei-Persistenz. Keine externe Datenbank, kein Cluster.

📥

CSV + JSON Import

CSV-Batch (optional gzip) oder Streaming-JSON. Aktualisieren, löschen, kompaktieren.

Warum es anders ist

Keine Vektordatenbank. Keine Textsuchmaschine.

Die Tools, zu denen man heute greift, wurden für einen anderen Job gebaut.

Vektordatenbank
(Qdrant / Milvus)
Suchmaschine
(Elastic / Meili)
Postgres / SQLPop-Search
Braucht Embeddings?Japgvector: japgvector: jaNein
Braucht Modell / GPUJaOptionalOptionalNein
Ähnlichkeit numerischer FelderVia VektorenNeinHandgeschriebene SQLNativ
Anomalie-/Ausreißer-ErkennungNeinNeinHandgemachtNativ
Interpretierbare ErgebnisseBlackboxText-RelevanzSie definierenJa
Läuft auf 2-Core / 4 GBSchwerJaJaJa

Hardware

Gebaut für die Box, die Sie schon haben

Die gesamte Engine ist ein statisches Binary mit lokaler Datei-Persistenz. Es läuft bequem auf einem kleinen VPS — der Art Box, die ein Dutzend kleine Services hostet — ohne JVM, ohne Cluster, ohne externe Datenbank und ohne GPU.

2
vCPU
4 GB
RAM
40 GB
Disk
1
Binary, Single-Node

Das ist der komplette Footprint — und es ist noch Platz für den Rest des Stacks.

Schnellstart

Fünf Aufrufe bis zur laufenden Demo

Die Base-URL ist der Host, der diese Seite ausliefert (die API liefert ihre eigene Doku aus, daher sind Playground und API derselbe Origin). Bei aktivierter Authentifizierung senden Sie Ihren Key im X-Pop-Api-Key-Header.

1. Sammlung erstellen — Felder deklarieren.

curl -s $BASE/collections -H 'Content-Type: application/json' -d '{
  "name": "products",
  "fields": {
    "price":    { "type": "numeric", "min": 0.99, "max": 10000, "bins": 20, "log": true },
    "rating":   { "type": "numeric", "min": 0, "max": 5, "bins": 16 },
    "category": { "type": "categorical", "levels": ["electronics","furniture","outdoor","kitchen"] }
  }
}'

2. Datensätze importieren (JSON-Array, oder POST /collections/products/ingest/csv für Batch).

curl -s $BASE/collections/products/records -H 'Content-Type: application/json' -d '[
  { "id": "e1", "price": 249.99, "rating": 4.6, "category": "electronics" },
  { "id": "e2", "price": 89.99,  "rating": 4.2, "category": "electronics" }
]'

3. Suchen — numerischer Bereich + kategorialer Filter, verknüpft mit UND.

curl -s $BASE/collections/products/search -H 'Content-Type: application/json' -d '{
  "must": [ { "field": "price", "gte": 50, "lte": 500 }, { "field": "category", "eq": "electronics" } ],
  "limit": 20, "with_values": true
}'

4. Ähnliche finden — die nächsten Datensätze zu einem gegebenen.

curl -s $BASE/collections/products/similar -H 'Content-Type: application/json' -d '{
  "record": { "price": 249.99, "rating": 4.6, "category": "electronics" },
  "k": 10, "with_values": true
}'

5. Anomalien erkennen — statistische Ausreißer auf einem Feld.

curl -s $BASE/collections/products/anomalies -H 'Content-Type: application/json' -d '{
  "field": "price", "z": 2.5, "limit": 50
}'

Live-Playground

Probieren Sie es direkt hier

Kein Konto, kein Setup. Der Button unten lädt einen Katalog mit 45 Produkten in diesen Server (Sammlung demo), und Sie fragen ihn live ab. Es ist exakt die API aus der Doku — der Playground ruft sie nur aus Ihrem Browser auf.

Klicken Sie auf „Beispielkatalog laden“, um zu starten.

Ähnliche finden

Wählen Sie ein Produkt; wir geben seine nächsten Nachbarn nach Feld-Nähe zurück (interpretierbarer Score).

Preis-Ausreißer

Statistische Anomalien auf dem price-Feld. Drei Produkte sind absichtlich falsch bepreist — können Sie alle drei finden? Senken Sie die z-Schwelle, um das Netz zu verbreitern.

Gefilterte Suche

Numerischer Bereich + kategorialer Filter, verknüpft mit UND — die Kern-„Bereich + UND/ODER“-Abfrage.

API-Referenz

Jeder Endpunkt

JSON rein, JSON raus. Alle Abfrage-Endpunkte nehmen einen JSON-Body. Fehler geben ein JSON { "error": "..." } mit passendem HTTP-Status zurück.

MethodeEndpunktWas es macht
POST/collectionsSammlung aus einer Feld-Spec erstellen
GET/collectionsSammlungen des Aufrufers auflisten
GET/collections/{name}Sammlungs-Statistiken (Datensatzanzahl, bins pro Feld)
DEL/collections/{name}Sammlung löschen
POST/collections/{name}/recordsJSON-Array von Datensätzen importieren
GET/collections/{name}/records/{id}Einen Datensatz per ID abrufen
PATCH/collections/{name}/records/{id}Felder eines Datensatzes aktualisieren
DEL/collections/{name}/records/{id}Einen Datensatz löschen
POST/collections/{name}/ingest/csvCSV-Batch-Import (plain oder gzip)
POST/collections/{name}/searchBereichs- + UND/ODER/muss-nicht-Abfrage, Facetten, Sortierung
POST/collections/{name}/similarNächste Datensätze zu einem gegebenen (mit Score)
POST/collections/{name}/anomaliesStatistische Ausreißer auf einem numerischen Feld
PUT/collections/{name}/labelsMenschenlesbare Labels für die Bereiche eines numerischen Feldes setzen
GET/collections/{name}/labelsFeld-Labels abrufen
DEL/collections/{name}/labelsFeld-Labels entfernen
POST/collections/{name}/relearnFeld-Statistiken nach Datenverschiebung neu aufbauen
POST/collections/{name}/compactPlatz gelöschter Datensätze zurückgewinnen
GET/health · /status · /metricsBetriebs-Endpunkte

Abfrage-Bedingungen unterstützen gte / lte (numerischer Bereich), eq / neq / in (exakt oder Menge), label (Feld-Label), anomaly (z-Schwelle) und exists (optionale Felder). Kombinieren mit must (UND), any (ODER), must_not (ausschließen).