API/behavior changes

New pooling parameter for huggingFace embedders

Composite embedder

This feature allows using different embedders at search and indexing time, which can be used to optimize the embedder to each use case:

Example

{
    "embedders": {
        "text": {
            "source": "composite",
            "searchEmbedder": {
                "source": "huggingFace", // locally computed embeddings using a model from the Hugging Face Hub
                "model": "baai/bge-base-en-v1.5",
                "revision": "a5beb1e3e68b9ab74eb54cfd186867f64f240e1a"
            },
            "indexingEmbedder": {
                "source": "rest", // remotely computed embeddings using Hugging Face inference endpoints
                "url": "<https://URL.endpoints.huggingface.cloud>",
                "apiKey": "hf_XXXXXXX",
                "documentTemplate": "Your {{doc.template}}",
                "request": {
                    "inputs": [
                        "{{text}}",
                        "{{..}}"
                    ]
                },
                "response": [
                    "{{embedding}}",
                    "{{..}}"
                ]
            }
        }
    }
}

{
    "embedders": {
        "text": {
            "source": "composite",
            "searchEmbedder": {
                "source": "huggingFace",
                "model": "baai/bge-base-en-v1.5",
                "revision": "a5beb1e3e68b9ab74eb54cfd186867f64f240e1a",
                "pooling": "forceMean"
            },
            "indexingEmbedder": {
                "source": "rest",
                "url": "<https://api.cloudflare.com/client/v4/accounts/ACCOUNT_NUMBER/ai/run/@cf/baai/bge-base-en-v1.5>",
                "apiKey": "API_KEY",
                "documentTemplate": "Your {{doc.template}}",
                "request": {
                    "text": [
                        "{{text}}",
                        "{{..}}"
                    ]
                },
                "response": {
                    "result": {
                        "data": [
                            "{{embedding}}",
                            "{{..}}"
                        ]
                    }
                }
            }
        }
    }
}

Telemetry

Name Description Example
e.g. infos.log_level e.g. “value of --log-level” e.g. “debug”
infos.experimental_composite_embedders true if the compositeEmbedders feature is set to true for this instance, otherwise false false
composite_embedders sent with Experimental features Updated event true if the compositeEmbedders feature is set to true after that call to /experimental-features true

Error handling