Semantic search over feedback records
Embeds the search query and returns feedback record IDs with similarity scores (cosine, 0..1). Only available when embeddings are configured (EMBEDDING_PROVIDER and EMBEDDING_MODEL set). Supported providers: openai, google (AI Studio), google-vertex. When embeddings are disabled, this endpoint returns 503 Service Unavailable. Request body must include query and tenant_id (required for tenant isolation).
Query Parameters
Omit for the first page. For the next page, use the exact value from the previous response's next_cursor. Opaque (base64-encoded); keyset pagination.
Number of results to return (default 10, max 100). Consistent with list endpoints.
Minimum similarity score (0..1); only results with score >= min_score are returned. Default 0.7 to reduce noise.
Body Parameters
Search query text (embedded and compared via cosine similarity)
Tenant ID (required for isolation; must match feedback record tenant_id)
Returns
Limit used in query (echoed for consistency with list endpoints)
Opaque cursor for the next page (keyset paging). Present only when there may be more results (full page returned). Omit when no next page. Use this exact value as the cursor query param for the next page.
Semantic search over feedback records
curl http://localhost:8080/v1/feedback-records/search/semantic \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $HUB_API_KEY" \
-d '{
"query": "What do users think about login speed?",
"tenant_id": "org-123"
}'{
"data": [
{
"feedback_record_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"field_label": "field_label",
"score": 0,
"value_text": "value_text"
}
],
"limit": 0,
"next_cursor": "eyJkIjowLjEsImkiOiIwMThlMTIzNC01Njc4LTlhYmMtZGVmMC0xMTExMTExMTExMTEifQ=="
}Returns Examples
{
"data": [
{
"feedback_record_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"field_label": "field_label",
"score": 0,
"value_text": "value_text"
}
],
"limit": 0,
"next_cursor": "eyJkIjowLjEsImkiOiIwMThlMTIzNC01Njc4LTlhYmMtZGVmMC0xMTExMTExMTExMTEifQ=="
}