semantic_search
Search entities by meaning using natural language, retrieving risk-listed companies and people closest to your query even without exact keywords. Pair with lexical search for complete coverage.
Instructions
Meaning-based entity search over the corpus (BGE-M3 vector ANN over the resolved dossier cards). Finds companies and people whose profile is semantically closest to a natural-language query — a description, a role, a risk pattern — even when no keyword matches. Optional kind (Company/Person/Asset) and jurisdiction (ISO code) filters. Returns entity_id, caption, kind, jurisdiction, risk and a similarity score; feed entity_id into get_dossier / trace_ownership_path. TODAY THIS IS EFFECTIVELY A RISK-LIST SEARCH, NOT A CORPUS SEARCH. The response carries its own coverage object — read it, it is authoritative and it moves. Measured 2026-08-11: embedded 990,055 of a 47,486,969 universe (ratio 0.0208), and per the endpoint's own note that embedded slice is ~99.6% risk-listed and ~97% natural persons. So a query about an ordinary trading company will return sanctioned people and vessels that merely sound related — verified: 'sanctioned russian aluminium holding' returned RU sanctioned SHIPS as its top hits. An empty or off-target result means 'not embedded yet' far more often than 'not found'. ALWAYS pair this with search_entities, which is lexical and covers the full corpus, before concluding anything about an entity's existence. Latency: 6.4s measured on a cold k=5 call — budget for it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Max hits (default 10). | |
| kind | No | Optional entity-kind filter (Company / Person / Asset / …). | |
| query | Yes | Natural-language search, e.g. 'sanctioned Russian aluminium holding company'. | |
| jurisdiction | No | Optional ISO jurisdiction filter (e.g. GB, RU). |