Typesense

Latest version: v1.0.3

Safety actively analyzes 722491 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 6

28.0

This release contains important new features, performance improvements and bug fixes.

New Features

- Support union / merging of search results across collections containing similar type of fields. (https://github.com/typesense/typesense/pull/2051)
- Dictionary based stemming: stemming is now configurable through an import of a custom dictionary that maps a word to a root form. (https://github.com/typesense/typesense/pull/2062)
- Allow search results to be randomized via `sort_by=_rand(seed)` clause. (https://github.com/typesense/typesense/pull/1918)
- Ability to re-rank hybrid search hits by augmenting their keyword / semantic match score when the
hit was identified by only either keyword or vector search. (https://github.com/typesense/typesense/pull/1968)
- Sort hits based on a pivot value. (https://github.com/typesense/typesense/pull/2003)
- Support decay functions in `sort_by` to support gaussian, linear, and exponential decay of values. (https://github.com/typesense/typesense/pull/2036)
- Field level `token_separators` and `symbols_to_index` are now supported. (https://github.com/typesense/typesense/pull/2118)
- Support bucketing of text match scores based on `bucket_size` parameter. (https://github.com/typesense/typesense/pull/2120)
- Ability to truncate a collection. (https://github.com/typesense/typesense/pull/2127)
- Index and search on geo polygons. (https://github.com/typesense/typesense/pull/2150)

Enhancements

- Support `distance_threshold` parameter for vector query that uses inner product distance.
- Allow updating of remote model's `api_key` parameter. (https://github.com/typesense/typesense/pull/1944)
- Support `max_filter_by_candidates` search parameter that controls the number of similar words that Typesense considers during fuzzy search on `filter_by` values (default is `4`).
- Performance and stability fixes for joins.
- API endpoint that returns status of alter schema operations that are in-progress. (https://github.com/typesense/typesense/pull/2123)
- Faceting performance improvements.

Bug Fixes

- Fixed fields with `async_reference` property not being restored correctly on restart.
- Fixed sorting with nested reference fields.
- Addressed edge cases in conversation API.
- Assign default sorting score if reference is not found while sorting by a reference field.
- Fix `distance_threshold` in `vector_query` not working correctly while sorting.
- Add validation to ensure that embedding fields are of type `float[]`.
- Fix vector query format validation error messages.
- Fix race condition in high concurrency image embedding.
- Fix `flat_search_cutoff` not working for hybrid search.

Deprecations / behavior changes

There are no deprecations / behavior changes in this release.

Upgrading

Before upgrading your existing Typesense cluster to v28.0, please review the behavior
changes above to prepare your application for the upgrade.

We'd recommend testing on your development / staging environments before upgrading.

Typesense Cloud

If you're on Typesense Cloud:

1. Go to [https://cloud.typesense.org/clusters](https://cloud.typesense.org/clusters).
2. Click on your cluster
3. Click on "Cluster Configuration" on the left-side pane, and then click on "Modify"
4. Select a new Typesense Server version in the dropdown
5. Schedule a time for the upgrade.

Self Hosted

If you're self-hosting Typesense, here are instructions on how to upgrade: https://typesense.org/docs/28.0/api/#self-hosted

Downgrading

Once you upgrade to `v28` of Typesense Server, you can only downgrade back to `v27` or `v26`.

Documentation

View the complete API documentation for this release here: [https://typesense.org/docs/28.0/api/](https://typesense.org/docs/28.0/api/)

27.1

This release fixes some bugs and performance regressions identified in `v27.0`.

Bug Fixes

- **[New in v27.1]** Fixed an important performance regression in evaluation of range filter queries.
- **[New in v27.1]** When infix search does not find highlight, use normal search.
- **[New in v27.1]** Don't return error if `limit_hits` threshold is breached. Instead, just return empty results.
- **[New in v27.1]** Add guard for non-indexed default sorting field.
- **[New in v27.1]** Fix OpenAI error handling during conversation model init.
- **[New in v27.1]** Fixed usage of `distance_threshold` parameter for inner product vector distance.
- **[New in v27.1]** Fixed and improved validation for analytics rules and events.
- **[New in v27.1]** Fixed an edge case with scoped API key usage with joins.
- **[New in v27.1]** Fixed prefix highlighting bugs that occurred due to use of stemming.
- **[New in v27.1]** Initialize analytics db store only if analytics dir is given. We will create a directory if it does not exist.
- **[New in v27.1]** Fixed exporting regression that prevented embedding fields, joined fields and non-schema fields from being exported.
- **[New in v27.1]** Fixed `geo_distance_meters` returning values in `km` / `mi`.

Upgrading

Before upgrading your existing Typesense cluster to v27.x, please review the behavior changes above to prepare your application for the upgrade.

We'd recommend testing on your development / staging environments before upgrading.

Typesense Cloud

If you're on Typesense Cloud:

1. Go to [https://cloud.typesense.org/clusters](https://cloud.typesense.org/clusters).
2. Click on your cluster
3. Click on "Cluster Configuration" on the left-side pane, and then click on "Modify"
4. Select a new Typesense Server version in the dropdown
5. Schedule a time for the upgrade.

Self Hosted

If you're self-hosting Typesense, here are instructions on how to upgrade: https://typesense.org/docs/27.1/api/#self-hosted

Downgrading

Once you upgrade to `v27` of Typesense Server, you can only downgrade back to `v26` or `v0.25.x`.

Documentation

View the complete API documentation for this release here: [https://typesense.org/docs/27.1/api/](https://typesense.org/docs/27.1/api/)

27.0

This release contains important new features, performance improvements and bug fixes.

New Features

- A new `text_match_type` mode called `sum_score` which sums the field-level text match scores to arrive at a document-level score.
- This mode is helpful in cases where you need to consider a document with more matches across more weighted fields, to be more relevant.
- [Docs](https://typesense.org/docs/27.0/api/search.html#ranking-and-sorting-parameters)
- Enable/disable typo tolerance on alphanumeric words in the query via the
`enable_typos_for_alpha_numerical_tokens` search parameter. Default: `true`.
- For eg: If you need to disable typo tolerance for a word that contains a mix of letters and numbers like `turbo100`, you can now set `enable_typos_for_alpha_numerical_tokens: false` as a search parameter.
- [Docs](https://typesense.org/docs/27.0/api/search.html#typo-tolerance-parameters)
- Conversation History from Conversational Searches is now stored as a regular Typesense collection.
- This is new feature, also has a corresponding breaking change. See the `Deprecations / behavior changes` section below.
- [Docs](https://typesense.org/docs/27.0/api/conversational-search-rag.html#create-a-conversation-history-collection)
- Support synonyms on query prefixes and typo-corrected query tokens via the `synonym_prefix`
and `synonym_num_typos` parameters.
- Defaults to [`synonym_prefix: false`](https://typesense.org/docs/27.0/api/search.html#ranking-and-sorting-parameters) and [`synonym_num_typos: 0`](https://typesense.org/docs/27.0/api/search.html#typo-tolerance-parameters).
- Customization of faceting index used for search via the `facet_strategy` parameter.
- By default, Typesense picks an efficient `facet_strategy` for you based on some built-heuristics. But this flag now lets you explicitly control which strategy to use: `exhaustive` or `top_values` or `automatic` (default).
- [Docs](https://typesense.org/docs/27.0/api/search.html#faceting-parameters)
- Support nested reference collections (when using JOINs), in `include_fields` search parameter, Eg: `include_fields: $Collection_B(title, $Collection_A(title))`
- Support `sort_by` of nested join fields. Eg: `sort_by: $Collection_B( $Collection_A(price) )`
- Ability to use JOINs when using the documents export endpoint, with the `filter_by` and `include_fields` parameters.
- Support exact prefix value filtering via the `:=` operation. For example, given `filter_by: name:= S*`.
we will match `Steve Jobs` but NOT `Adam Stator`.

Enhancements

**Search Parameters:**

- Added `enable_synonyms` boolean flag to enable/disable the application of synonyms during search (default: `true`).
- Added `filter_curated_hits` search parameter which allows you to customize filter behavior for pinned hits.
- Added search parameter `enable_analytics` that prevents the given query from being used for analytics aggregation.
- Support array fields in `facet_return_parent` search parameter.
- Allow special characters in range facet labels.
- Increase max length of facet value stored to `255` characters.

**Server-side improvements:**

- Added `--filter-by-max-ops` server-side flag that can customize the maximum number of operators that can be present
in a `filter_by` clause (default: `100`).
- Added `--max-per-page` server-side flag that increases the number of hits that can be fetched within a single page. Default: `250`.
- Allow dynamic update of cache size via the `/config` API with the `cache-num-entries` key.
- Use 64K page size for Jemalloc on ARM64 / Linux.
- Log in-flight search queries during a crash.

**AI Search:**

- Added API key support for vLLM conversation models using the `api_key` parameter
- Suppress punctuations and non-speech tokens from appearing in voice search (e.g. `hmm`).

**API Endpoints:**

- Support `include_fields` and `exclude_fields` in the single document fetch (`GET /collections/x/documents/id`) end-point.
- `GET /collections` API endpoint now respects the collections allowed in the API key associated with the request.
- Support for `exclude_fields` in the `GET /collections` API end-point. This is useful when you have a lot of fields which bloats the payload.

**Performance:**

- Implemented lazy filtering of numerical fields which speeds up a subset of searches when `enable_lazy_filter` boolean parameter is enabled.
- Improved working memory used when loading large embedding models.

Bug Fixes

- Fixed a few bugs in the use of conversational search feature on a HA set-up.
- Fixed an edge case in use of `_eval()` along with hybrid search.
- Fixed an edge case in vector query by document ID returning k+1 hits.
- Fixed a bug in the use of `flat_search_cutoff` parameter of vector search that returned suboptimal results.
- Fixed a few bugs and edge cases involving reference fields and joins.
- Fixed wildcard query not excluding un-indexed fields while searching.
- Fixed a crash that occurred while loading collections that's related to indexing a collection not referenced by other collections.
- Fixed an edge case in the sorting clause of `_eval` operation that caused a rare crash.
- Fixed stemming for non-English locales.
- Fixed semantic search faceting happening on the entire result set instead of only on `k` returned docs.
- Fixed geosearch not returning real distances when `precision` parameter was used.
- Fixed quirks around deletion of analytics event rules.
- Fixed an issue with deletion & update of array reference fields.
- Return `store` field property in collection schema response.
- Fixed a hanging issue when OpenAI API returned no response.
- Fixed persistence of `range_index` and `stem` field properties.
- Fixed highlighting of text stored in fields inside array of objects.
- Fix `_vector_query` parameter in `sort_by` clause being treated as a sorting field.
- Fix overrides not working with semantic search.
- Fixed a regression in v26 that prevented an empty array from being used as a valid value in filter_by clause.
- Fix `return_id` not being returned in import API response during failures.

Deprecations / behavior changes

**Conversational Search:**

To address some limitations that we found with the previous design of the conversational search feature,
we now use a Typesense collection for storing the conversation history.

During upgrade, we will attempt to create a
default collection with the name `ts_conversation_history_model_id` and migrate existing conversations
to this collection.

**However,** given the edge cases we found and have now fixed with the new approach on multi-node Highly Available
clusters, this automated migration may not work: if it does not, please refer to the guide on how to
[re-create the conversation model](https://typesense.org/docs/27.0/api/conversational-search-rag.html).

**Exhaustive `total_values` in facet stats**

We refactored the faceting data structures to improve efficiency. This had an impact on how the `total_values` in
`facet_stats` is computed for low-cardinality facet fields: it's now computed only within the
results returned, instead of on the whole dataset.

To get an accurate `total_values` for the entire dataset, send this additional search parameter:

json
{
"facet_strategy": "exhaustive"
}


This will force Typesense to compute facets in an exhaustive manner and allows the `total_values` key in the response to be exact.

Upgrading

Before upgrading your existing Typesense cluster to v27.0, please review the behavior changes above to prepare your application for the upgrade.

We'd recommend testing on your development / staging environments before upgrading.

Typesense Cloud

If you're on Typesense Cloud:

1. Go to [https://cloud.typesense.org/clusters](https://cloud.typesense.org/clusters).
2. Click on your cluster
3. Click on "Cluster Configuration" on the left-side pane, and then click on "Modify"
4. Select a new Typesense Server version in the dropdown
5. Schedule a time for the upgrade.

Self Hosted

If you're self-hosting Typesense, here are instructions on how to upgrade: https://typesense.org/docs/27.0/api/#self-hosted

Downgrading

Once you upgrade to `v27` of Typesense Server, you can only downgrade back to `v26` or `v0.25.x`.

Documentation

View the complete API documentation for this release here: [https://typesense.org/docs/27.0/api/](https://typesense.org/docs/27.0/api/)

26.0

This release contains important new features, performance improvements and bug fixes.

New Versioning Scheme

Starting with this release, we're dropping the `0.x.y` versioning scheming and switching to a `x.y` versioning scheme.

So we're going from `0.25 --> 26.0`.

Typesense has been production-ready for a few years now, and is actively used at scale in production, serving billions of search requests per month just on Typesense Cloud, and several billions more in self-hosted clusters.

We originally intended the `0.x` versioning scheme to communicate that there might be backward in-compatible changes between versions. In reality though, we've only had to do two backward incompatible changes over the years. However, the usage of the previous `0.x` versioning scheme seemed to mis-communicate Typesense's production-readiness among new users, causing confusion.

Switching from `0.x` to `1.x` also seemed to mis-communicate the progress and feature-set maturity we've built over the years.
So we decided to simply drop the `0.` and switch to whole numbers for major versions, to convey Typesense's progress over the last 8 years.

New Features

- **Built-in Conversational Search (RAG):** You can now seamlessly run a semantic search and then pass the result to an LLM
for summarizing the result as an answer.
- Built-in support for OpenAI and Cloudflare Workers AI hosted models.
- [Docs](https://typesense.org/docs/26.0/api/conversational-search-rag.html)
- **Image Search:** Search through images using text descriptions of their contents, or perform similarity searches, using the CLIP model.
- [Docs](https://typesense.org/docs/26.0/api/image-search.html)
- **Voice Search:** Capture and send query via voice recordings -- Typesense will transcribe (via Whisper model) and provide search results.
- [Docs](https://typesense.org/docs/26.0/api/voice-search-query.html)
- **JOINs:** Connect one or more collections via common reference fields and join them during query time. This
allows you to model SQL-like relationships elegantly.
- [Docs](https://typesense.org/docs/26.0/api/joins.html)
- **Search Personalization using Historical Queries:** The `vector_query` parameter in Vector Search supports a `qs` parameter (stands for plural of the `q` parameter) that accepts a
comma-separated list of historical search queries. We compute the average embedding of these queries and use that as the vector for search.
- [Docs](https://typesense.org/docs/26.0/api/vector-search.html#searching-with-historical-queries)
- **Analytics:**
- Ability to track queries that don't produce hits. [Docs](https://typesense.org/docs/26.0/api/analytics-query-suggestions.html#no-hits-queries)
- Ability to track counts of document-level analytics (eg: clicks, views, etc) to improve search relevance. [Docs](https://typesense.org/docs/26.0/api/analytics-query-suggestions.html#counting-events-for-popularity)
- **Sorting based on Filter Score:** You can now use `_eval` in `sort_by` and assign scores to records that match particular filters, to boost or bury a set of records together.
the filter expression.
- [Docs](https://typesense.org/docs/26.0/api/search.html#sorting-based-on-filter-score)
- **Stemming:** Allows handling common word variations of the same root word. This is helpful for different word-forms of the same root word (eg: plurals / singular).
- Eg: Searching for `walking`, will also return results with `walk`, `walked`, `walks`, etc when stemming is enabled.
- [Docs](https://typesense.org/docs/26.0/api/collections.html#schema-parameters). See the `stem: true` property under the `fields` parameter.
- **Prefix Filtering:** During filtering, you can now query on records that begin with a given prefix string.
- Eg: `company_name: Acm*` will return names that begin with `acm`.
- Previously, only full-word or full-attribute-value matching was possible in `filter_by` and only `q` supported prefix matches.
- **Stop Words:** Specify a list of common words (e.g.`a`, `am`, `the`, `are`, etc.) that should be excluded from the indexing and search process to improve search relevance and performance.
- [Docs](https://typesense.org/docs/26.0/api/stopwords.html)
- **Curate / Override by Tags:** You can tag override rules with tags and then trigger curation by referring to the rule
by the tag name directly at search time.
- [Docs](https://typesense.org/docs/26.0/api/curation.html#add-tags-to-rules)


Enhancements

- Collection schema changes only block writes now, and reads will be serviced as usual. Previously both reads and writes were blocked.
- **Sort facets alphabetically or by the value of another field:** Sort facet values can now be sorted in
alphabetical order for display via `"facet_by": "phone(sort_by: _alpha:asc)"` or on the value of another field
via `"facet_by": "recipe.name(sort_by: recipe.calories:asc)"`
- **Fetching parent of faceted field:** When you facet on a nested field like `color.name` you can now set
`"facet_return_parent": "color.name"`. This will return the parent color object as parent property in the facet response.
- **Improved faceting and filtering performance:** Query planner has been optimized to handle many common patterns better.
- **NOT contains**: Exclude results that contains a specific string during filtering. For example, `"filter_by": "artist:! Jackson"`
will exclude all documents whose `artist` field value contains the word `jackson`.
- **Excluding IDs via filtering:** The `id` field now support the `:!=` operation, so `"filter_by": "id:!=[id1, id2]"`
will exclude documents that have an `id` value of `id1` or `id2`.
- **Configurable HNSW Parameters:** `M`, `efConstruction` and `efSearch` have been made configurable.
- **Disable typos for numerical tokens:** Use `enable_typos_for_numerical_tokens: false` parameter to disable typos on numerical.
- **Customize URL for OpenAI embedding API:** This allows you to use other OpenAI compatible APIs.
- **Pagination for collections, synonyms & overrides listing:** These API end-points now support `limit` and `offset` GET parameters.
- **Store custom metadata with collection schema:** While creating a collection you can send a `metadata` object field,
which is persisted along with collection schema. This is useful for record keeping.
- **Store metadata with override rules:** Store a `metadata` object within an override, so that the search end-point response
will return the pre-defined metadata associated for that rule. This can can be used to display a message on the front-end.
- **Faster numerical range queries:** You can set `range_index: true` in a field's schema for fast range queries
(this will incur additional memory overhead though).
- Prevent the contents of a field from being stored on-disk via the `store: false` field property.
- Expose information about applied typo tolerance or dropped tokens in `text_match_info` response.
- Option to ignore "not found" error when deleting an object that's already deleted.
- Allow a field which is configured as `index: false` + `optional: false`. Previously this was not allowed.
- Exposed swap usage as a metric in `/metrics.json` API.
- The `/health` API returns additional information about memory/disk exhaustion.
- Support overriding wildcard query via `"q": "*"` in rules.
- Build support for Apple M1 / M2 / M3
- Add option to expand prefix search query via the `expand_query` parameter for suggestion aggregation.
- Auto deletion of expired API keys when the `autodelete: true` property is set during key creation.
- Make the size of search cache configurable via the `--cache-num-entries` server flag. Default is `1000`.
- Add flag for logging search query at the start of req cycle.
- Improved on-disk compaction: prunes older records more aggressively, leading to better bounds on data storage.

Bug Fixes

- Fixed multiple synonym substitutions in query yielding no results.
- Fix `typo_tokens_threshold` not considering the number of grouped hits.
- Fixed odd behavior when `_eval` condition in `sort_by` contained a comma.
- Fixed `object` type auto-creating schema for nested fields even for non-indexed fields.
- Fixed open quote present in search query treated as phrase search.
- Fixed facet by range not working with decimal numbers or with numerical labels or labels that contain spaces.
- Fixed extra new line showing up in the import API response.
- Fixed face range end values being exclusive in nature when it should be inclusive.
- Fixed edge cases in handling unicode in German / Thai locales.
- Fixed facet counts being incorrect when combined with grouping and pinning.
- Fixed highlighting quirks on long documents.
- Fixed inheritance of sort field property for nested fields.
- Fixed propagation of dynamic field properties for child nested fields.
- Fixed some edge cases in phrase search.
- Fixed update doc API returning 200 status code, instead of 201.

Deprecations / behavior changes

There are no depreciation or behavior changes in this version.

Upgrading

Before upgrading your existing Typesense cluster to v26.0, please review the behavior changes above to prepare your application for the upgrade.

We'd recommend testing on your development / staging environments before upgrading.

Typesense Cloud

If you're on Typesense Cloud:

1. Go to [https://cloud.typesense.org/clusters](https://cloud.typesense.org/clusters).
2. Click on your cluster
3. Click on "Cluster Configuration" on the left-side pane, and then click on "Modify"
4. Select a new Typesense Server version in the dropdown
5. Schedule a time for the upgrade.

Self Hosted

If you're self-hosting Typesense, here are instructions on how to upgrade: https://typesense.org/docs/26.0/api/#self-hosted

Downgrading

Once you upgrade to `v26` of Typesense Server, you can only downgrade back to `v0.25.x`.

Documentation

View the complete API documentation for this release here: [https://typesense.org/docs/26.0/api/](https://typesense.org/docs/26.0/api/)

0.25.2

This release fixes some important bugs identified in `v0.25.1` and also adds several enhancements to existing features. So we highly recommend upgrading to it.

Enhancements

- New search parameter flag `prioritize_num_matching_fields` that allows you to configure whether the text match score should consider number of matching fields as a ranking criteria. This defaults to `true`.
- Unload embedding model and free memory when no collections use a given model.
- Allow the hybrid search / keyword search weight (`alpha`) to be configurable in `vector_query`.
- Allow the direction of drop tokens to be configurable via `drop_tokens_mode` search parameter.
- Handle zero width non-joiner character for Persian.
- Ability to apply vector search only on the results of keyword search.
- Prevent Typesense from loading an embedding model that exceeds available memory.
- Improvements to range faceting: float value support, min/max ranges by leaving range param blank, support spaces in range label.
- Support `remote_embedding_timeout_ms` and `remote_embedding_num_tries` for indexing.
- Better isolation of operations across collections.
- Parameterize compaction of store during collection drop via the `compact_store` parameter.
- Server argument for configuring the periodic DB compaction interval via `db-compaction-interval`. Default: `604800` (seconds).
- When using `group_by`, you can now control if documents with a `null` value in the grouped field should be placed in one group together, or should not be grouped using the `group_missing_values` parameter.

Bug fixes

- Improve precision of HNSW index under frequent deletion and updates of vectors.
- Fixed a regression in analytics aggregation for aggregation intervals configured to > 60 seconds.
- Fixed a bug that prevented two embedding field names from sharing the same prefix.
- Fixed reindexing of old documents with embeddings on collection schema update.
- Fixed group by search that used facet range query.
- Fixed edge cases in indexing and querying of optional nested fields.
- Fixed hanging when PaLM API is down.
- Fixed an edge case in deletion of values from infix search index.
- Fixed hybrid search not considering `hidden_hits` search parameter.
- Tweaked text embedding mean-pooling code to match the vectors generated by Python libraries.
- Fixed truncation of certain float values in facet response.

Upgrade

Before upgrading your existing Typesense cluster to `v0.25.2`, please review the behavior changes above to prepare your application for the upgrade.

- For self-hosted Typesense deployment, please refer to the important upgrade section of the [0.25.2 documentation](https://typesense.org/docs/0.25.2/api/#upgrading). This particular version requires a specific set of upgrade steps especially for multi-node clusters.
- For Typesense Cloud, visit your [clusters page](https://cloud.typesense.org/clusters), click on the cluster you want to upgrade, click on "Cluster Configuration" on the right pane, then "Modify", pick `0.25.2` and schedule a time for your upgrade.

Downgrade

Once you upgrade to `v0.25.x` of Typesense Server the internal structure of the data directory becomes incompatible with older versions of Typesense (`v0.24`).

However, if you need to downgrade to `v0.24`, we've released a special version `v0.24.2` that backports these data structure changes back to `v0.24` while keeping other `v0.24.1` features as is.

So `v0.25.x` can only be downgraded to `v0.24.2`.

But `v0.25.2` can be downgraded to `v0.25.1` and `v0.25.0` if needed.

Documentation

View the complete API documentation for this release here: [https://typesense.org/docs/0.25.2/api/](https://typesense.org/docs/0.25.2/api/)

0.25.1

This release fixes some important bugs identified in the recently released `v0.25.0`. So we highly recommend upgrading to it.

Bug Fixes

- Handle mismatched vector dimensions during indexing
- Allow remote embedders to use multiple per-collection credentials
- Fixed altering of schema involving embedding fields
- Fixed charset in content-type header of export API response
- Fixed an issue in analytics query aggregation that caused crash on empty collections
- Fixed group by on vector search
- Improved error handling of remote embedding APIs
- Fixed tokenizer of embedding models that use XLM-RoBERTa
- Fixed upsert of unchanged docs containing embedding fields, that would cause the embedding field value to be removed
- Fixed text match score calculation to consider the presence of dropped tokens when ranking

Upgrade

Before upgrading your existing Typesense cluster to `v0.25.1`, please review the behavior changes above to prepare your application for the upgrade.

- For self-hosted Typesense deployment, please refer to the important upgrade section of the [0.25.1 documentation](https://typesense.org/docs/0.25.1/api/#upgrading). This particular version requires a specific set of upgrade steps especially for multi-node clusters.
- For Typesense Cloud, visit your [clusters page](https://cloud.typesense.org/clusters), click on the cluster you want to upgrade, click on "Cluster Configuration" on the right pane, then "Modify", pick `0.25.1` and schedule a time for your upgrade.

Downgrade

Once you upgrade to `v0.25` of Typesense Server the internal structure of the data directory becomes incompatible with older versions of Typesense (`v0.24`).

However, if you need to downgrade to `v0.24`, we've released a special version `v0.24.2` that backports these data structure changes back to `v0.24` while keeping other `v0.24.1` features as is.

So `v0.25` can only be downgraded to `v0.24.2`.

But `v0.25.1` can be downgraded to `v0.25.0`.

Documentation

View the complete API documentation for this release here: [https://typesense.org/docs/0.25.1/api/](https://typesense.org/docs/0.25.1/api/)

Page 1 of 6

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.