Skip to content

[8.2] [MOD-12263] Enhance FT.PROFILE with vector search execution details#7436

Merged
meiravgri merged 1 commit into8.2from
backport-7408-to-8.2
Nov 20, 2025
Merged

[8.2] [MOD-12263] Enhance FT.PROFILE with vector search execution details#7436
meiravgri merged 1 commit into8.2from
backport-7408-to-8.2

Conversation

@meiravgri
Copy link
Collaborator

@meiravgri meiravgri commented Nov 20, 2025

backport #7408 to 8.2
conflicts to code that was moved index.c to profile.c on master


Note

Adds vector search execution details (mode and largest batch info) to FT.PROFILE and updates tests accordingly.

  • Profiling (FT.PROFILE)
    • Print vector search mode via printProfileVectorSearchMode(...) for VECTOR and METRIC - VECTOR DISTANCE (range) iterators.
    • In hybrid batches, also print Batches number, Largest batch size, and Largest batch iteration.
  • Hybrid iterator (src/hybrid_reader.*)
    • Track maxBatchSize and maxBatchIteration; initialize/reset on construction/rewind; update during batched search.
  • Vector index (src/vector_index.*)
    • Add VecSimSearchMode_ToString(...) to stringify search modes for profiling output.
  • Profile helpers (src/profile.h, src/index.c)
    • New macros to emit vector mode and batch stats; integrate into iterator profile printers.
  • Tests (tests/pytests/test_profile.py)
    • Update expectations to include "Vector search mode" and batch stats; add RESP3 test covering SEARCH and AGGREGATE modes.

Written by Cursor Bugbot for commit db0a94a. This will update automatically on new commits. Configure here.

@meiravgri meiravgri changed the title [MOD-12263] Enhance FT.PROFILE with vector search execution details (#7408) [8.2] [MOD-12263] Enhance FT.PROFILE with vector search execution details ( Nov 20, 2025
@meiravgri meiravgri changed the title [8.2] [MOD-12263] Enhance FT.PROFILE with vector search execution details ( [8.2] [MOD-12263] Enhance FT.PROFILE with vector search execution details Nov 20, 2025
@meiravgri meiravgri requested a review from alonre24 November 20, 2025 09:38
@codecov
Copy link

codecov bot commented Nov 20, 2025

Codecov Report

❌ Patch coverage is 89.28571% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 89.40%. Comparing base (a4f0461) to head (db0a94a).
⚠️ Report is 1 commits behind head on 8.2.

Files with missing lines Patch % Lines
src/vector_index.c 80.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##              8.2    #7436      +/-   ##
==========================================
- Coverage   89.42%   89.40%   -0.02%     
==========================================
  Files         253      253              
  Lines       40800    40828      +28     
  Branches     3725     3725              
==========================================
+ Hits        36484    36501      +17     
- Misses       4267     4278      +11     
  Partials       49       49              
Flag Coverage Δ
flow 82.06% <89.28%> (-0.12%) ⬇️
unit 47.53% <28.57%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@meiravgri meiravgri enabled auto-merge November 20, 2025 10:25
@meiravgri meiravgri added this pull request to the merge queue Nov 20, 2025
Merged via the queue into 8.2 with commit c219c51 Nov 20, 2025
25 checks passed
@meiravgri meiravgri deleted the backport-7408-to-8.2 branch November 20, 2025 12:35
@redisearch-backport-pull-request
Copy link
Contributor

Backport failed for 2.8, because it was unable to cherry-pick the commit(s).

Please cherry-pick the changes locally and resolve any conflicts.

git fetch origin 2.8
git worktree add -d .worktree/backport-7436-to-2.8 origin/2.8
cd .worktree/backport-7436-to-2.8
git switch --create backport-7436-to-2.8
git cherry-pick -x c219c5190588feb8c8f788588b7c76f19d0e8fd0

@redisearch-backport-pull-request
Copy link
Contributor

Backport failed for 2.10, because it was unable to cherry-pick the commit(s).

Please cherry-pick the changes locally and resolve any conflicts.

git fetch origin 2.10
git worktree add -d .worktree/backport-7436-to-2.10 origin/2.10
cd .worktree/backport-7436-to-2.10
git switch --create backport-7436-to-2.10
git cherry-pick -x c219c5190588feb8c8f788588b7c76f19d0e8fd0

meiravgri added a commit that referenced this pull request Nov 20, 2025
…ails (#7436)

fix test due to differences in profile output format

align agg and search "shards" entry
github-merge-queue bot pushed a commit that referenced this pull request Nov 20, 2025
…tails (#7436) (#7448)

* [8.2] [MOD-12263] Enhance FT.PROFILE with vector search execution details (#7436)

fix test due to differences in profile output format

align agg and search "shards" entry

* revert align shard and Shards (search and agg)

* handke in test

* fix
meiravgri added a commit that referenced this pull request Nov 20, 2025
…tails (#7436) (#7448)

* [8.2] [MOD-12263] Enhance FT.PROFILE with vector search execution details (#7436)

fix test due to differences in profile output format

align agg and search "shards" entry

* revert align shard and Shards (search and agg)

* handke in test

* fix

(cherry picked from commit be84540)
github-merge-queue bot pushed a commit that referenced this pull request Nov 20, 2025
…ails (#7436) (#7448) (#7451)

[2.10] [MOD-12263] Enhance FT.PROFILE with vector search execution details (#7436) (#7448)

* [8.2] [MOD-12263] Enhance FT.PROFILE with vector search execution details (#7436)

fix test due to differences in profile output format

align agg and search "shards" entry

* revert align shard and Shards (search and agg)

* handke in test

* fix

(cherry picked from commit be84540)
alonre24 added a commit to alonre24/redis that referenced this pull request Jan 26, 2026
**Bug Fixes:**

* [redis#7219](RediSearch/RediSearch#7219) Fix a concurrency issue on Reducer in `FT.AGGREGATE`
* [redis#7255](RediSearch/RediSearch#7255) Fix `BM25STD` underflow wraparound
* [redis#7275](RediSearch/RediSearch#7275) Report used memory as `unsigned long long` to avoid underflows
* [redis#7264](RediSearch/RediSearch#7264) Fix `totalDocsLen` updates
* [redis#6995](RediSearch/RediSearch#6995) Do not fanout `FT.INFO` to replicas
* [redis#7350](RediSearch/RediSearch#7350) Fix `FT.CREATE` failure with LeanVec parameters on non-Intel architectures
* [redis#7384](RediSearch/RediSearch#7384) Fix index load from RDB temporary memory overhead
* [redis#7459](RediSearch/RediSearch#7459) Fix Fork GC potential double-free on error path
* [redis#7458](RediSearch/RediSearch#7458) Fix a GC performence regression
* [redis#7470](RediSearch/RediSearch#7470) Avoid draining worker thread pool from FLUSH callback to avoid deadlocks
* [redis#7554](RediSearch/RediSearch#7554) Handle the case where `SCORE` is sent alone without extra fields (coordinator)
* [redis#7685](RediSearch/RediSearch#7685) Fix cursor logical leak
* [redis#7794](RediSearch/RediSearch#7794) Fix `cmp_strings()` to correctly handle binary data with embedded NULLs in TOLIST reducer in FT.AGGREGATE
* [redis#7873](RediSearch/RediSearch#7873) Handle warnings in empty `FT.AGGREGATE` replies (cluster)
* [redis#7886](RediSearch/RediSearch#7886) Remove non-TEXT fields from the spec keys dictionary
* [redis#7904](RediSearch/RediSearch#7904) Refactor keys dictionary handling
* [redis#7901](RediSearch/RediSearch#7901) Support multiple warnings in reply
* [redis#8083](RediSearch/RediSearch#8083) Fix incorrect FULLTEXT field metric counts
* [redis#8153](RediSearch/RediSearch#8153) Fix configuration registration issues

**Improvements:**

* [redis#7154](RediSearch/RediSearch#7154) `FT.AGGREGATE` can return Background Indexing OOM warnings
* [redis#7083](RediSearch/RediSearch#7083) Add the default text scorer as a configuration option
* [redis#7341](RediSearch/RediSearch#7341) Rename `FT.PROFILE` counter fields
* [redis#7436](RediSearch/RediSearch#7436) Enhance `FT.PROFILE` with vector search execution details
* [redis#7435](RediSearch/RediSearch#7435) Ensure full `FT.PROFILE` output on timeout with RETURN policy
* [redis#7534](RediSearch/RediSearch#7534) Reduce the number of worker threads asynchronously to avoid deadlocks during queries
* [redis#7614](RediSearch/RediSearch#7614) Track timeout warnings and errors in INFO
* [redis#7646](RediSearch/RediSearch#7646) Track `maxprefixexpansions` warnings and errors in INFO
* [redis#7577](RediSearch/RediSearch#7577) Track query syntax/argument errors (basis for query error tracking)
* [redis#7737](RediSearch/RediSearch#7737) Add `Internal cursor reads` metric to cluster `FT.PROFILE` output
* [redis#7759](RediSearch/RediSearch#7759) Extend indexing metrics
* [redis#7710](RediSearch/RediSearch#7710) Support `WITHCOUNT` keyword in `FT.AGGREGATE`
* [redis#7957](RediSearch/RediSearch#7957) Persist query warnings across cursor reads
* [redis#8054](RediSearch/RediSearch#8054) Add logging for index-related commands
* [redis#8151](RediSearch/RediSearch#8151) Fix shard total profile time reporting in `FT.PROFILE`
* [redis#8103](RediSearch/RediSearch#8103) Output current thread IndexSpec information on crash
YaacovHazan pushed a commit to redis/redis that referenced this pull request Jan 26, 2026
**Bug Fixes:**

* [#7219](RediSearch/RediSearch#7219) Fix a
concurrency issue on Reducer in `FT.AGGREGATE`
* [#7255](RediSearch/RediSearch#7255) Fix
`BM25STD` underflow wraparound
* [#7275](RediSearch/RediSearch#7275) Report
used memory as `unsigned long long` to avoid underflows
* [#7264](RediSearch/RediSearch#7264) Fix
`totalDocsLen` updates
* [#6995](RediSearch/RediSearch#6995) Do not
fanout `FT.INFO` to replicas
* [#7350](RediSearch/RediSearch#7350) Fix
`FT.CREATE` failure with LeanVec parameters on non-Intel architectures
* [#7694](RediSearch/RediSearch#7694) Use
asynchronous jobs for GC in SVS to accelerate execution
* [#7384](RediSearch/RediSearch#7384) Fix index
load from RDB temporary memory overhead
* [#7459](RediSearch/RediSearch#7459) Fix Fork
GC potential double-free on error path
* [#7458](RediSearch/RediSearch#7458) Fix a GC
performence regression
* [#7470](RediSearch/RediSearch#7470) Avoid
draining worker thread pool from FLUSH callback to avoid deadlocks
* [#7554](RediSearch/RediSearch#7554) Handle the
case where `SCORE` is sent alone without extra fields (coordinator)
* [#7685](RediSearch/RediSearch#7685) Fix cursor
logical leak
* [#7794](RediSearch/RediSearch#7794) Fix
`cmp_strings()` to correctly handle binary data with embedded NULLs in
TOLIST reducer in FT.AGGREGATE
* [#7873](RediSearch/RediSearch#7873) Handle
warnings in empty `FT.AGGREGATE` replies (cluster)
* [#7886](RediSearch/RediSearch#7886) Remove
non-TEXT fields from the spec keys dictionary
* [#7904](RediSearch/RediSearch#7904) Refactor
keys dictionary handling
* [#7901](RediSearch/RediSearch#7901) Support
multiple warnings in reply
* [#8083](RediSearch/RediSearch#8083) Fix
incorrect FULLTEXT field metric counts
* [#8153](RediSearch/RediSearch#8153) Fix
configuration registration issues

**Improvements:**

* [#7154](RediSearch/RediSearch#7154)
`FT.AGGREGATE` can return Background Indexing OOM warnings
* [#7083](RediSearch/RediSearch#7083) Add the
default text scorer as a configuration option
* [#7341](RediSearch/RediSearch#7341) Rename
`FT.PROFILE` counter fields
* [#7436](RediSearch/RediSearch#7436) Enhance
`FT.PROFILE` with vector search execution details
* [#7435](RediSearch/RediSearch#7435) Ensure
full `FT.PROFILE` output on timeout with RETURN policy
* [#7534](RediSearch/RediSearch#7534) Reduce the
number of worker threads asynchronously to avoid deadlocks during
queries
* [#7614](RediSearch/RediSearch#7614) Track
timeout warnings and errors in INFO
* [#7646](RediSearch/RediSearch#7646) Track
`maxprefixexpansions` warnings and errors in INFO
* [#7577](RediSearch/RediSearch#7577) Track
query syntax/argument errors (basis for query error tracking)
* [#7737](RediSearch/RediSearch#7737) Add
`Internal cursor reads` metric to cluster `FT.PROFILE` output
* [#7759](RediSearch/RediSearch#7759) Extend
indexing metrics
* [#7710](RediSearch/RediSearch#7710) Support
`WITHCOUNT` keyword in `FT.AGGREGATE`
* [#7957](RediSearch/RediSearch#7957) Persist
query warnings across cursor reads
* [#8054](RediSearch/RediSearch#8054) Add
logging for index-related commands
* [#8151](RediSearch/RediSearch#8151) Fix shard
total profile time reporting in `FT.PROFILE`
* [#8103](RediSearch/RediSearch#8103) Output
current thread IndexSpec information on crash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants