API-Referenz

Such-API

IVGraph bietet mehrere Suchmodi auf Basis von Elasticsearch: Volltextsuche (BM25), Autovervollständigung, semantische Suche (Vektor), hybride Suche (BM25 + Vektor) und Ähnlichkeitssuche.

Authentifizierung: Für alle Endpunkte ist ein JWT erforderlich.

Voraussetzung: Elasticsearch muss laufen und der Workspace muss indexiert sein (geschieht automatisch nach der Synchronisierung).

Volltextsuche

GET /api/search/

Durchsuche Titel und Inhalte von Knoten mit BM25-Ranking.

Parameter:

Parameter Typ Erforderlich Standard Beschreibung
q string ja — Suchanfrage
connection_id UUID nein erste Verbindung des Nutzers Bestimmte zu durchsuchende Verbindung
size int nein 50 Maximale Anzahl an Ergebnissen
highlight bool nein true Textauszüge mit Hervorhebungen einschließen
type string nein all Filter: page, database oder user

Beispiel:

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/?q=project+planning&size=10"
import requests

resp = requests.get(
    "https://ivgraph.com/api/search/",
    headers={"Authorization": "Bearer <jwt_token>"},
    params={"q": "project planning", "size": 10}
)
results = resp.json()["results"]
const resp = await fetch(
  "https://ivgraph.com/api/search/?q=project+planning&size=10",
  { headers: { Authorization: "Bearer <jwt_token>" } }
);
const { results } = await resp.json();

Antwort:

{
  "query": "project planning",
  "total": 8,
  "results": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440001",
      "type": "page",
      "title": "Project Planning Guide",
      "score": 12.5,
      "highlight": "...comprehensive <em>project</em> <em>planning</em> methodology..."
    }
  ]
}

Autovervollständigung

GET /api/search/suggest/

Präfixbasierte Autovervollständigung für die Suche während der Eingabe.

Parameter:

Parameter Typ Erforderlich Standard Beschreibung
q string ja — Präfix (mindestens 2 Zeichen)
size int nein 10 Maximale Anzahl an Vorschlägen

Beispiel:

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/suggest/?q=pro"

Antwort:

{
  "prefix": "pro",
  "suggestions": [
    {"id": "uuid-1", "title": "Project Alpha", "type": "page"},
    {"id": "uuid-2", "title": "Product Roadmap", "type": "page"},
    {"id": "uuid-3", "title": "Projects Tracker", "type": "database"}
  ]
}

Semantische Suche

GET /api/search/semantic/

Vektorbasierte Ähnlichkeitssuche mit Embeddings. Findet Inhalte mit ähnlicher Bedeutung, nicht nur Übereinstimmungen bei Suchbegriffen.

Parameter:

Parameter Typ Erforderlich Standard Beschreibung
q string ja — Suchanfrage in natürlicher Sprache
connection_id UUID nein erste Verbindung des Nutzers Zu durchsuchende Verbindung
size int nein 10 Maximale Anzahl an Ergebnissen

Beispiel:

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/semantic/?q=how+do+we+handle+user+onboarding"

Antwort:

{
  "query": "how do we handle user onboarding",
  "total": 5,
  "search_type": "semantic",
  "results": [
    {"id": "uuid-1", "type": "page", "title": "New User Welcome Flow", "score": 0.89},
    {"id": "uuid-2", "type": "page", "title": "Onboarding Checklist", "score": 0.82}
  ]
}

Hybride Suche

GET /api/search/hybrid/

Kombiniert die BM25-Suche nach Suchbegriffen mit der semantischen Vektorsuche – für Ergebnisse, die das Beste aus beiden Ansätzen vereinen.

Parameter: Wie bei der semantischen Suche.

Beispiel:

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/hybrid/?q=authentication+flow"

Ähnliche Knoten

GET /api/search/similar/{node_id}/

Finde anhand von Vektor-Embeddings Knoten, die einem bestimmten Knoten ähneln.

Parameter:

Parameter Typ Erforderlich Standard Beschreibung
node_id UUID ja — ID des Ausgangsknotens (im URL-Pfad)
connection_id UUID nein erste Verbindung des Nutzers Zu durchsuchende Verbindung
size int nein 10 Maximale Anzahl an Ergebnissen

Beispiel:

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/similar/550e8400-e29b-41d4-a716-446655440001/"

Seiteninhalt

GET /api/search/content/{page_id}/

Rufe Seiteninhalte als Markdown und Klartext ab.

Parameter:

Parameter Typ Erforderlich Beschreibung
page_id UUID ja Seiten-ID (im URL-Pfad)

Beispiel:

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/content/550e8400-e29b-41d4-a716-446655440001/"

Antwort:

{
  "page_id": "550e8400-e29b-41d4-a716-446655440001",
  "title": "Project Alpha",
  "markdown": "# Project Alpha\n\nMain project page...",
  "plain_text": "Project Alpha\nMain project page...",
  "has_content": true
}

Indexverwaltung

POST /api/search/index/

Stoße die Neuindexierung des Elasticsearch-Index für die Verbindung des Nutzers an.

curl -X POST -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/index/"

Antwort:

{"message": "Indexing complete", "index_name": "ivg_conn-uuid", "indexed_count": 342}

DELETE /api/search/index/

Lösche den Suchindex für die Verbindung des Nutzers.

curl -X DELETE -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/index/"

GET /api/search/connections/

Liste alle Suchindizes des Nutzers auf.

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/connections/"

Antwort:

{
  "user": "username",
  "connections": [
    {
      "connection_id": "conn-uuid",
      "schema_name": "airbyte_conn_uuid",
      "index_name": "ivg_conn-uuid",
      "document_count": 342,
      "last_sync": "2026-04-10T10:00:00Z"
    }
  ]
}

Fehler

Status Bedeutung
400 Fehlende oder ungültige Abfrageparameter
401 Nicht authentifiziert
404 Verbindung oder Seite nicht gefunden
503 Elasticsearch nicht verfügbar