diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index 6009144df..52943852d 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "a0aedea63d6994977974130fc9050ce00971a6fc", - "syncedAt": "2026-04-27T10:25:48.709Z" + "sha": "775ed36c16c2a03fe137ac9a84960b3426319262", + "syncedAt": "2026-04-27T10:26:57.175Z" } diff --git a/docs/.generated/config-baseline.sha256 b/docs/.generated/config-baseline.sha256 index 9e00f0b70..c0b20b529 100644 --- a/docs/.generated/config-baseline.sha256 +++ b/docs/.generated/config-baseline.sha256 @@ -1,4 +1,4 @@ -454c34daa3f5f66a97f6a701968756a77a110fe611e013b0245fe6a9ef274997 config-baseline.json -56edd542252c0ec8b3005dcddcf083a568d5e7700f7675c509c2963e36a4597c config-baseline.core.json +6bd751bdfd55d644e8a83c575c4db8f67efae00df772c71553b7e7673c5ccc13 config-baseline.json +2bf9795740688c55b8ac50ecbfe954c3d3b0dce0a17b08e89a9385d56e197bee config-baseline.core.json 07963db49502132f26db396c56b36e018b110e6c55a68b3cb012d3ec96f43901 config-baseline.channel.json -f14d1d609ce93893f3bbd6c533251d30328f4deed5cf06da7cb2c9208147dc7a config-baseline.plugin.json +ed65cefbef96f034ce2b73069d9d5bacc341a43489ff9b20a34d40956b877f79 config-baseline.plugin.json diff --git a/docs/concepts/memory-search.md b/docs/concepts/memory-search.md index d0f0f8b6d..30a403802 100644 --- a/docs/concepts/memory-search.md +++ b/docs/concepts/memory-search.md @@ -32,6 +32,11 @@ explicitly: For local embeddings with no API key, install the optional `node-llama-cpp` runtime package next to OpenClaw and use `provider: "local"`. +Some OpenAI-compatible embedding endpoints require asymmetric labels such as +`input_type: "query"` for searches and `input_type: "document"` or `"passage"` +for indexed chunks. Configure those with `memorySearch.queryInputType` and +`memorySearch.documentInputType`; see the [Memory configuration reference](/reference/memory-config#provider-specific-config). + ## Supported providers | Provider | ID | Needs API key | Notes | diff --git a/docs/providers/openai.md b/docs/providers/openai.md index 8c2662c70..7bff13088 100644 --- a/docs/providers/openai.md +++ b/docs/providers/openai.md @@ -86,6 +86,30 @@ through PI, `openclaw doctor` warns and leaves the route unchanged. | Realtime voice | Voice Call `realtime.provider: "openai"` / Control UI Talk | Yes | | Embeddings | memory embedding provider | Yes | +## Memory embeddings + +OpenClaw can use OpenAI, or an OpenAI-compatible embedding endpoint, for +`memory_search` indexing and query embeddings: + +```json5 +{ + agents: { + defaults: { + memorySearch: { + provider: "openai", + model: "text-embedding-3-small", + }, + }, + }, +} +``` + +For OpenAI-compatible endpoints that require asymmetric embedding labels, set +`queryInputType` and `documentInputType` under `memorySearch`. OpenClaw forwards +those as provider-specific `input_type` request fields: query embeddings use +`queryInputType`; indexed memory chunks and batch indexing use +`documentInputType`. See the [Memory configuration reference](/reference/memory-config#provider-specific-config) for the full example. + ## Getting started Choose your preferred auth method and follow the setup steps. diff --git a/docs/reference/memory-config.md b/docs/reference/memory-config.md index 65d96f9fd..88ee5f5c0 100644 --- a/docs/reference/memory-config.md +++ b/docs/reference/memory-config.md @@ -149,6 +149,37 @@ For custom OpenAI-compatible endpoints or overriding provider defaults: Changing model or `outputDimensionality` triggers an automatic full reindex. + + + OpenAI-compatible embedding endpoints can opt into provider-specific `input_type` request fields. This is useful for asymmetric embedding models that require different labels for query and document embeddings. + + | Key | Type | Default | Description | + | ------------------- | -------- | ------- | ------------------------------------------------------- | + | `inputType` | `string` | unset | Shared `input_type` for query and document embeddings | + | `queryInputType` | `string` | unset | Query-time `input_type`; overrides `inputType` | + | `documentInputType` | `string` | unset | Index/document `input_type`; overrides `inputType` | + + ```json5 + { + agents: { + defaults: { + memorySearch: { + provider: "openai", + remote: { + baseUrl: "https://embeddings.example/v1", + apiKey: "env:EMBEDDINGS_API_KEY", + }, + model: "asymmetric-embedder", + queryInputType: "query", + documentInputType: "passage", + }, + }, + }, + } + ``` + + Changing these values affects embedding cache identity for provider batch indexing and should be followed by a memory reindex when the upstream model treats the labels differently. + Bedrock uses the AWS SDK default credential chain — no API keys needed. If OpenClaw runs on EC2 with a Bedrock-enabled instance role, just set the provider and model: