<!-- Source: https://docs.squirro.com/en/latest/technical/search/how-to-guides/how-remote-models.html -->
# How to integrate remote models that power semantic search and other NLP tasks

**Server Configuration** `topic.nlp.remote-services-connection`

```json
{
    "auth": {
        "password": "",
        "username": ""
    },
    "headers": [],
    "timeout": null,
    "service_variant": "transformers.reranker.*",
    "url": "https://<YOUR_HOST>/transformers/rerankers/baai-bge-v2-m3/"
}
```

Remote Services (service_variants) are registered following the format of `<model namespace>.<language>.<worker>`, for example `spacy.en.fast`.
A fallback worker per namespace can be configured as the default in case a requested worker for a service variant cannot be resolved/reached. The fallback is configured using the `*` syntax (`<model namespace>.*`).

Supported model namespaces and tasks are:

- **reranker**: `transformers.reranker.*` (To rerank passages for a given query)
- **sentence-embeddings**: `transformers.sentence-embeddings.*` (To embedd queries and passages)
- **qa**: `transformers.qa.*` (Extractive Question Answering)
- **spacy**: `spacy.*` (Spacy NLP analysis)

## API Specification for given namespaces

Squirro provides docker images for each namespace, with pre-packaged models. It is possible to integrate any kind of model (on-premises, managed) by implementing a service that adheres to the API specification of the namespace, and registering it accordingly within `topic.nlp.remote-services-connection`.

The services are expected to implement a top-level `_invoke` API, with a specific payload for each task (request and response schema).

See the expected API parameters below:

### Reranker

Referenced schemas

### Sentence Embeddings

Referenced schemasEnumerations
