@mastra/upstash 0.0.0-working-memory-per-user-20250620163010 → 0.0.0-zod-v4-compat-part-2-20250822105954
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +268 -6
- package/LICENSE.md +12 -4
- package/README.md +98 -0
- package/dist/index.cjs +1629 -626
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1645 -642
- package/dist/index.js.map +1 -0
- package/dist/storage/domains/legacy-evals/index.d.ts +28 -0
- package/dist/storage/domains/legacy-evals/index.d.ts.map +1 -0
- package/dist/storage/domains/memory/index.d.ts +86 -0
- package/dist/storage/domains/memory/index.d.ts.map +1 -0
- package/dist/storage/domains/operations/index.d.ts +40 -0
- package/dist/storage/domains/operations/index.d.ts.map +1 -0
- package/dist/storage/domains/scores/index.d.ts +65 -0
- package/dist/storage/domains/scores/index.d.ts.map +1 -0
- package/dist/storage/domains/traces/index.d.ts +28 -0
- package/dist/storage/domains/traces/index.d.ts.map +1 -0
- package/dist/storage/domains/utils.d.ts +12 -0
- package/dist/storage/domains/utils.d.ts.map +1 -0
- package/dist/storage/domains/workflows/index.d.ts +36 -0
- package/dist/storage/domains/workflows/index.d.ts.map +1 -0
- package/dist/storage/index.d.ts +208 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/vector/filter.d.ts +21 -0
- package/dist/vector/filter.d.ts.map +1 -0
- package/dist/vector/index.d.ts +79 -0
- package/dist/vector/index.d.ts.map +1 -0
- package/dist/vector/prompt.d.ts +6 -0
- package/dist/vector/prompt.d.ts.map +1 -0
- package/dist/vector/types.d.ts +23 -0
- package/dist/vector/types.d.ts.map +1 -0
- package/docker-compose.yaml +1 -1
- package/package.json +12 -12
- package/src/storage/domains/legacy-evals/index.ts +279 -0
- package/src/storage/domains/memory/index.ts +972 -0
- package/src/storage/domains/operations/index.ts +168 -0
- package/src/storage/domains/scores/index.ts +216 -0
- package/src/storage/domains/traces/index.ts +172 -0
- package/src/storage/domains/utils.ts +57 -0
- package/src/storage/domains/workflows/index.ts +243 -0
- package/src/storage/index.test.ts +13 -0
- package/src/storage/index.ts +149 -1078
- package/src/vector/filter.test.ts +7 -6
- package/src/vector/filter.ts +10 -4
- package/src/vector/hybrid.test.ts +1455 -0
- package/src/vector/index.test.ts +4 -4
- package/src/vector/index.ts +155 -69
- package/src/vector/types.ts +26 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.json +1 -1
- package/tsup.config.ts +22 -0
- package/dist/_tsup-dts-rollup.d.cts +0 -318
- package/dist/_tsup-dts-rollup.d.ts +0 -318
- package/dist/index.d.cts +0 -4
- package/src/storage/upstash.test.ts +0 -1386
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,282 @@
|
|
|
1
1
|
# @mastra/upstash
|
|
2
2
|
|
|
3
|
-
## 0.0.0-
|
|
3
|
+
## 0.0.0-zod-v4-compat-part-2-20250822105954
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- Updated dependencies [94f4812]
|
|
8
|
+
- Updated dependencies [e202b82]
|
|
9
|
+
- Updated dependencies [e00f6a0]
|
|
10
|
+
- Updated dependencies [35c5798]
|
|
11
|
+
- @mastra/core@0.0.0-zod-v4-compat-part-2-20250822105954
|
|
12
|
+
|
|
13
|
+
## 0.13.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- f42c4c2: update peer deps for packages to latest core range
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- 674a348: dependencies updates:
|
|
22
|
+
- Updated dependency [`@upstash/redis@^1.35.1` ↗︎](https://www.npmjs.com/package/@upstash/redis/v/1.35.1) (from `^1.35.0`, in `dependencies`)
|
|
23
|
+
- b92bc89: Added hybrid search support to @mastra/upstash vector store. Supports sparse vectors, fusion algorithm, and query mode.
|
|
24
|
+
- b8efbb9: feat: add flexible deleteMessages method to memory API
|
|
25
|
+
- Added `memory.deleteMessages(input)` method that accepts multiple input types:
|
|
26
|
+
- Single message ID as string: `deleteMessages('msg-123')`
|
|
27
|
+
- Array of message IDs: `deleteMessages(['msg-1', 'msg-2'])`
|
|
28
|
+
- Message object with id property: `deleteMessages({ id: 'msg-123' })`
|
|
29
|
+
- Array of message objects: `deleteMessages([{ id: 'msg-1' }, { id: 'msg-2' }])`
|
|
30
|
+
- Implemented in all storage adapters (LibSQL, PostgreSQL, Upstash, InMemory)
|
|
31
|
+
- Added REST API endpoint: `POST /api/memory/messages/delete`
|
|
32
|
+
- Updated client SDK: `thread.deleteMessages()` accepts all input types
|
|
33
|
+
- Updates thread timestamps when messages are deleted
|
|
34
|
+
- Added comprehensive test coverage and documentation
|
|
35
|
+
|
|
36
|
+
- Updated dependencies [510e2c8]
|
|
37
|
+
- Updated dependencies [2f72fb2]
|
|
38
|
+
- Updated dependencies [27cc97a]
|
|
39
|
+
- Updated dependencies [3f89307]
|
|
40
|
+
- Updated dependencies [9eda7d4]
|
|
41
|
+
- Updated dependencies [9d49408]
|
|
42
|
+
- Updated dependencies [41daa63]
|
|
43
|
+
- Updated dependencies [ad0a58b]
|
|
44
|
+
- Updated dependencies [254a36b]
|
|
45
|
+
- Updated dependencies [2ecf658]
|
|
46
|
+
- Updated dependencies [7a7754f]
|
|
47
|
+
- Updated dependencies [fc92d80]
|
|
48
|
+
- Updated dependencies [e0f73c6]
|
|
49
|
+
- Updated dependencies [0b89602]
|
|
50
|
+
- Updated dependencies [4d37822]
|
|
51
|
+
- Updated dependencies [23a6a7c]
|
|
52
|
+
- Updated dependencies [cda801d]
|
|
53
|
+
- Updated dependencies [a77c823]
|
|
54
|
+
- Updated dependencies [ff9c125]
|
|
55
|
+
- Updated dependencies [09bca64]
|
|
56
|
+
- Updated dependencies [b8efbb9]
|
|
57
|
+
- Updated dependencies [71466e7]
|
|
58
|
+
- Updated dependencies [0c99fbe]
|
|
59
|
+
- @mastra/core@0.12.0
|
|
60
|
+
|
|
61
|
+
## 0.13.0-alpha.2
|
|
62
|
+
|
|
63
|
+
### Minor Changes
|
|
64
|
+
|
|
65
|
+
- f42c4c2: update peer deps for packages to latest core range
|
|
66
|
+
|
|
67
|
+
### Patch Changes
|
|
68
|
+
|
|
69
|
+
- @mastra/core@0.12.0-alpha.5
|
|
70
|
+
|
|
71
|
+
## 0.12.4-alpha.1
|
|
72
|
+
|
|
73
|
+
### Patch Changes
|
|
74
|
+
|
|
75
|
+
- b92bc89: Added hybrid search support to @mastra/upstash vector store. Supports sparse vectors, fusion algorithm, and query mode.
|
|
76
|
+
- b8efbb9: feat: add flexible deleteMessages method to memory API
|
|
77
|
+
- Added `memory.deleteMessages(input)` method that accepts multiple input types:
|
|
78
|
+
- Single message ID as string: `deleteMessages('msg-123')`
|
|
79
|
+
- Array of message IDs: `deleteMessages(['msg-1', 'msg-2'])`
|
|
80
|
+
- Message object with id property: `deleteMessages({ id: 'msg-123' })`
|
|
81
|
+
- Array of message objects: `deleteMessages([{ id: 'msg-1' }, { id: 'msg-2' }])`
|
|
82
|
+
- Implemented in all storage adapters (LibSQL, PostgreSQL, Upstash, InMemory)
|
|
83
|
+
- Added REST API endpoint: `POST /api/memory/messages/delete`
|
|
84
|
+
- Updated client SDK: `thread.deleteMessages()` accepts all input types
|
|
85
|
+
- Updates thread timestamps when messages are deleted
|
|
86
|
+
- Added comprehensive test coverage and documentation
|
|
87
|
+
|
|
88
|
+
- Updated dependencies [27cc97a]
|
|
89
|
+
- Updated dependencies [41daa63]
|
|
90
|
+
- Updated dependencies [254a36b]
|
|
91
|
+
- Updated dependencies [0b89602]
|
|
92
|
+
- Updated dependencies [4d37822]
|
|
93
|
+
- Updated dependencies [ff9c125]
|
|
94
|
+
- Updated dependencies [b8efbb9]
|
|
95
|
+
- Updated dependencies [71466e7]
|
|
96
|
+
- Updated dependencies [0c99fbe]
|
|
97
|
+
- @mastra/core@0.12.0-alpha.2
|
|
98
|
+
|
|
99
|
+
## 0.12.4-alpha.0
|
|
100
|
+
|
|
101
|
+
### Patch Changes
|
|
102
|
+
|
|
103
|
+
- 674a348: dependencies updates:
|
|
104
|
+
- Updated dependency [`@upstash/redis@^1.35.1` ↗︎](https://www.npmjs.com/package/@upstash/redis/v/1.35.1) (from `^1.35.0`, in `dependencies`)
|
|
105
|
+
- Updated dependencies [510e2c8]
|
|
106
|
+
- Updated dependencies [2f72fb2]
|
|
107
|
+
- Updated dependencies [3f89307]
|
|
108
|
+
- Updated dependencies [9eda7d4]
|
|
109
|
+
- Updated dependencies [9d49408]
|
|
110
|
+
- Updated dependencies [2ecf658]
|
|
111
|
+
- Updated dependencies [7a7754f]
|
|
112
|
+
- Updated dependencies [fc92d80]
|
|
113
|
+
- Updated dependencies [23a6a7c]
|
|
114
|
+
- Updated dependencies [09bca64]
|
|
115
|
+
- @mastra/core@0.12.0-alpha.0
|
|
116
|
+
|
|
117
|
+
## 0.12.3
|
|
118
|
+
|
|
119
|
+
### Patch Changes
|
|
120
|
+
|
|
121
|
+
- ce088f5: Update all peerdeps to latest core
|
|
122
|
+
- @mastra/core@0.11.1
|
|
123
|
+
|
|
124
|
+
## 0.12.2
|
|
125
|
+
|
|
126
|
+
### Patch Changes
|
|
127
|
+
|
|
128
|
+
- 7ba91fa: Throw mastra errors methods not implemented yet
|
|
129
|
+
- Updated dependencies [f248d53]
|
|
130
|
+
- Updated dependencies [2affc57]
|
|
131
|
+
- Updated dependencies [66e13e3]
|
|
132
|
+
- Updated dependencies [edd9482]
|
|
133
|
+
- Updated dependencies [18344d7]
|
|
134
|
+
- Updated dependencies [9d372c2]
|
|
135
|
+
- Updated dependencies [40c2525]
|
|
136
|
+
- Updated dependencies [e473f27]
|
|
137
|
+
- Updated dependencies [032cb66]
|
|
138
|
+
- Updated dependencies [703ac71]
|
|
139
|
+
- Updated dependencies [a723d69]
|
|
140
|
+
- Updated dependencies [7827943]
|
|
141
|
+
- Updated dependencies [5889a31]
|
|
142
|
+
- Updated dependencies [bf1e7e7]
|
|
143
|
+
- Updated dependencies [65e3395]
|
|
144
|
+
- Updated dependencies [4933192]
|
|
145
|
+
- Updated dependencies [d1c77a4]
|
|
146
|
+
- Updated dependencies [bea9dd1]
|
|
147
|
+
- Updated dependencies [dcd4802]
|
|
148
|
+
- Updated dependencies [cbddd18]
|
|
149
|
+
- Updated dependencies [7ba91fa]
|
|
150
|
+
- @mastra/core@0.11.0
|
|
151
|
+
|
|
152
|
+
## 0.12.2-alpha.0
|
|
153
|
+
|
|
154
|
+
### Patch Changes
|
|
155
|
+
|
|
156
|
+
- 7ba91fa: Throw mastra errors methods not implemented yet
|
|
157
|
+
- Updated dependencies [f248d53]
|
|
158
|
+
- Updated dependencies [2affc57]
|
|
159
|
+
- Updated dependencies [66e13e3]
|
|
160
|
+
- Updated dependencies [edd9482]
|
|
161
|
+
- Updated dependencies [18344d7]
|
|
162
|
+
- Updated dependencies [9d372c2]
|
|
163
|
+
- Updated dependencies [40c2525]
|
|
164
|
+
- Updated dependencies [e473f27]
|
|
165
|
+
- Updated dependencies [032cb66]
|
|
166
|
+
- Updated dependencies [703ac71]
|
|
167
|
+
- Updated dependencies [a723d69]
|
|
168
|
+
- Updated dependencies [5889a31]
|
|
169
|
+
- Updated dependencies [65e3395]
|
|
170
|
+
- Updated dependencies [4933192]
|
|
171
|
+
- Updated dependencies [d1c77a4]
|
|
172
|
+
- Updated dependencies [bea9dd1]
|
|
173
|
+
- Updated dependencies [dcd4802]
|
|
174
|
+
- Updated dependencies [7ba91fa]
|
|
175
|
+
- @mastra/core@0.11.0-alpha.2
|
|
176
|
+
|
|
177
|
+
## 0.12.1
|
|
178
|
+
|
|
179
|
+
### Patch Changes
|
|
180
|
+
|
|
181
|
+
- bef10e5: dependencies updates:
|
|
182
|
+
- Updated dependency [`@upstash/vector@^1.2.2` ↗︎](https://www.npmjs.com/package/@upstash/vector/v/1.2.2) (from `^1.2.1`, in `dependencies`)
|
|
183
|
+
- Updated dependencies [2873c7f]
|
|
184
|
+
- Updated dependencies [1c1c6a1]
|
|
185
|
+
- Updated dependencies [f8ce2cc]
|
|
186
|
+
- Updated dependencies [8c846b6]
|
|
187
|
+
- Updated dependencies [c7bbf1e]
|
|
188
|
+
- Updated dependencies [8722d53]
|
|
189
|
+
- Updated dependencies [565cc0c]
|
|
190
|
+
- Updated dependencies [b790fd1]
|
|
191
|
+
- Updated dependencies [132027f]
|
|
192
|
+
- Updated dependencies [0c85311]
|
|
193
|
+
- Updated dependencies [d7ed04d]
|
|
194
|
+
- Updated dependencies [cb16baf]
|
|
195
|
+
- Updated dependencies [f36e4f1]
|
|
196
|
+
- Updated dependencies [7f6e403]
|
|
197
|
+
- @mastra/core@0.10.11
|
|
198
|
+
|
|
199
|
+
## 0.12.1-alpha.0
|
|
200
|
+
|
|
201
|
+
### Patch Changes
|
|
202
|
+
|
|
203
|
+
- bef10e5: dependencies updates:
|
|
204
|
+
- Updated dependency [`@upstash/vector@^1.2.2` ↗︎](https://www.npmjs.com/package/@upstash/vector/v/1.2.2) (from `^1.2.1`, in `dependencies`)
|
|
205
|
+
- Updated dependencies [2873c7f]
|
|
206
|
+
- Updated dependencies [1c1c6a1]
|
|
207
|
+
- Updated dependencies [565cc0c]
|
|
208
|
+
- @mastra/core@0.10.11-alpha.2
|
|
209
|
+
|
|
210
|
+
## 0.12.0
|
|
211
|
+
|
|
212
|
+
### Minor Changes
|
|
213
|
+
|
|
214
|
+
- 8a3bfd2: Update peerdeps to latest core
|
|
215
|
+
|
|
216
|
+
### Patch Changes
|
|
217
|
+
|
|
218
|
+
- 15e9d26: Added per-resource working memory for LibSQL, Upstash, and PG
|
|
8
219
|
- d8f2d19: Add updateMessages API to storage classes (only support for PG and LibSQL for now) and to memory class. Additionally allow for metadata to be saved in the content field of a message.
|
|
220
|
+
- 0fb9d64: [MASTRA-4018] Update saveMessages in storage adapters to upsert messages
|
|
9
221
|
- 2097952: [MASTRA-4021] Fix PG getMessages and update messageLimit for all storage adapters
|
|
10
|
-
-
|
|
222
|
+
- 0e17048: Throw mastra errors in storage packages
|
|
223
|
+
- Updated dependencies [15e9d26]
|
|
224
|
+
- Updated dependencies [d1baedb]
|
|
11
225
|
- Updated dependencies [d8f2d19]
|
|
226
|
+
- Updated dependencies [4d21bf2]
|
|
227
|
+
- Updated dependencies [07d6d88]
|
|
12
228
|
- Updated dependencies [9d52b17]
|
|
13
229
|
- Updated dependencies [2097952]
|
|
230
|
+
- Updated dependencies [792c4c0]
|
|
231
|
+
- Updated dependencies [5d74aab]
|
|
232
|
+
- Updated dependencies [a8b194f]
|
|
233
|
+
- Updated dependencies [4fb0cc2]
|
|
234
|
+
- Updated dependencies [d2a7a31]
|
|
235
|
+
- Updated dependencies [502fe05]
|
|
236
|
+
- Updated dependencies [144eb0b]
|
|
14
237
|
- Updated dependencies [8ba1b51]
|
|
15
|
-
|
|
238
|
+
- Updated dependencies [4efcfa0]
|
|
239
|
+
- Updated dependencies [0e17048]
|
|
240
|
+
- @mastra/core@0.10.7
|
|
241
|
+
|
|
242
|
+
## 0.12.0-alpha.3
|
|
243
|
+
|
|
244
|
+
### Minor Changes
|
|
245
|
+
|
|
246
|
+
- 8a3bfd2: Update peerdeps to latest core
|
|
247
|
+
|
|
248
|
+
### Patch Changes
|
|
249
|
+
|
|
250
|
+
- Updated dependencies [792c4c0]
|
|
251
|
+
- Updated dependencies [502fe05]
|
|
252
|
+
- Updated dependencies [4efcfa0]
|
|
253
|
+
- @mastra/core@0.10.7-alpha.3
|
|
254
|
+
|
|
255
|
+
## 0.11.1-alpha.2
|
|
256
|
+
|
|
257
|
+
### Patch Changes
|
|
258
|
+
|
|
259
|
+
- 15e9d26: Added per-resource working memory for LibSQL, Upstash, and PG
|
|
260
|
+
- 0fb9d64: [MASTRA-4018] Update saveMessages in storage adapters to upsert messages
|
|
261
|
+
- Updated dependencies [15e9d26]
|
|
262
|
+
- Updated dependencies [07d6d88]
|
|
263
|
+
- Updated dependencies [5d74aab]
|
|
264
|
+
- Updated dependencies [144eb0b]
|
|
265
|
+
- @mastra/core@0.10.7-alpha.2
|
|
266
|
+
|
|
267
|
+
## 0.11.1-alpha.1
|
|
268
|
+
|
|
269
|
+
### Patch Changes
|
|
270
|
+
|
|
271
|
+
- 2097952: [MASTRA-4021] Fix PG getMessages and update messageLimit for all storage adapters
|
|
272
|
+
- 0e17048: Throw mastra errors in storage packages
|
|
273
|
+
- Updated dependencies [d1baedb]
|
|
274
|
+
- Updated dependencies [4d21bf2]
|
|
275
|
+
- Updated dependencies [2097952]
|
|
276
|
+
- Updated dependencies [4fb0cc2]
|
|
277
|
+
- Updated dependencies [d2a7a31]
|
|
278
|
+
- Updated dependencies [0e17048]
|
|
279
|
+
- @mastra/core@0.10.7-alpha.1
|
|
16
280
|
|
|
17
281
|
## 0.11.1-alpha.0
|
|
18
282
|
|
|
@@ -1473,7 +1737,6 @@
|
|
|
1473
1737
|
### Minor Changes
|
|
1474
1738
|
|
|
1475
1739
|
- c87eb4e: Combine Upstash packages into `@mastra/upstash`.
|
|
1476
|
-
|
|
1477
1740
|
- Move and combine packages to `stores/upstash`
|
|
1478
1741
|
- Reorganize source files into `src/vector` and `src/store`
|
|
1479
1742
|
- Add deprecation notices to old packages
|
|
@@ -1807,7 +2070,6 @@
|
|
|
1807
2070
|
### Minor Changes
|
|
1808
2071
|
|
|
1809
2072
|
- c87eb4e: Combine Upstash packages into `@mastra/upstash`.
|
|
1810
|
-
|
|
1811
2073
|
- Move and combine packages to `stores/upstash`
|
|
1812
2074
|
- Reorganize source files into `src/vector` and `src/store`
|
|
1813
2075
|
- Add deprecation notices to old packages
|
package/LICENSE.md
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
# Apache License 2.0
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Copyright (c) 2025 Kepler Software, Inc.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
package/README.md
CHANGED
|
@@ -41,6 +41,100 @@ const results = await vectorStore.query({
|
|
|
41
41
|
});
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
### Hybrid Vector Search (Dense + Sparse)
|
|
45
|
+
|
|
46
|
+
Upstash supports hybrid search that combines semantic search (dense vectors) with keyword-based search (sparse vectors) for improved relevance and accuracy.
|
|
47
|
+
|
|
48
|
+
#### Upserting Hybrid Vectors
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { UpstashVector } from '@mastra/upstash';
|
|
52
|
+
|
|
53
|
+
const vectorStore = new UpstashVector({
|
|
54
|
+
url: process.env.UPSTASH_VECTOR_REST_URL,
|
|
55
|
+
token: process.env.UPSTASH_VECTOR_TOKEN
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const vectors = [[0.1, 0.2, 0.3, ...], [0.4, 0.5, 0.6, ...]];
|
|
59
|
+
const sparseVectors = [
|
|
60
|
+
{ indices: [1, 5, 10], values: [0.8, 0.6, 0.4] },
|
|
61
|
+
{ indices: [2, 6, 11], values: [0.7, 0.5, 0.3] }
|
|
62
|
+
];
|
|
63
|
+
const metadata = [{ title: 'Document 1' }, { title: 'Document 2' }];
|
|
64
|
+
|
|
65
|
+
const ids = await vectorStore.upsert({
|
|
66
|
+
indexName: 'hybrid-index',
|
|
67
|
+
vectors,
|
|
68
|
+
sparseVectors,
|
|
69
|
+
metadata
|
|
70
|
+
});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
#### Querying with Hybrid Search
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
import { FusionAlgorithm, QueryMode } from '@upstash/vector';
|
|
77
|
+
|
|
78
|
+
// Query with both dense and sparse vectors (default hybrid mode)
|
|
79
|
+
const results = await vectorStore.query({
|
|
80
|
+
indexName: 'hybrid-index',
|
|
81
|
+
queryVector: [0.1, 0.2, 0.3, ...],
|
|
82
|
+
sparseVector: { indices: [1, 5], values: [0.9, 0.7] },
|
|
83
|
+
topK: 10,
|
|
84
|
+
fusionAlgorithm: FusionAlgorithm.RRF,
|
|
85
|
+
includeVector: false
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Dense-only query (backward compatible)
|
|
89
|
+
const denseResults = await vectorStore.query({
|
|
90
|
+
indexName: 'hybrid-index',
|
|
91
|
+
queryVector: [0.1, 0.2, 0.3, ...],
|
|
92
|
+
topK: 10
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// Query only the dense component for custom reranking
|
|
96
|
+
const denseOnlyResults = await vectorStore.query({
|
|
97
|
+
indexName: 'hybrid-index',
|
|
98
|
+
queryVector: [0.1, 0.2, 0.3, ...],
|
|
99
|
+
queryMode: QueryMode.DENSE,
|
|
100
|
+
topK: 10
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// Query only the sparse component for custom reranking
|
|
104
|
+
const sparseOnlyResults = await vectorStore.query({
|
|
105
|
+
indexName: 'hybrid-index',
|
|
106
|
+
queryVector: [0.1, 0.2, 0.3, ...], // Still needed for dense index structure
|
|
107
|
+
sparseVector: { indices: [1, 5], values: [0.9, 0.7] },
|
|
108
|
+
queryMode: QueryMode.SPARSE,
|
|
109
|
+
topK: 10
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// Explicit hybrid mode (same as default)
|
|
113
|
+
const explicitHybridResults = await vectorStore.query({
|
|
114
|
+
indexName: 'hybrid-index',
|
|
115
|
+
queryVector: [0.1, 0.2, 0.3, ...],
|
|
116
|
+
sparseVector: { indices: [1, 5], values: [0.9, 0.7] },
|
|
117
|
+
queryMode: QueryMode.HYBRID,
|
|
118
|
+
fusionAlgorithm: FusionAlgorithm.RRF,
|
|
119
|
+
topK: 10
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### Fusion Algorithms & Query Modes
|
|
124
|
+
|
|
125
|
+
Upstash provides built-in fusion algorithms to combine dense and sparse search results:
|
|
126
|
+
|
|
127
|
+
- **RRF (Reciprocal Rank Fusion)**: Default algorithm that combines rankings from both dense and sparse searches
|
|
128
|
+
- **DBSF (Distribution-Based Score Fusion)**
|
|
129
|
+
|
|
130
|
+
Query modes enable fine-grained control over hybrid index queries:
|
|
131
|
+
|
|
132
|
+
- **`QueryMode.HYBRID`**: Default mode that queries both dense and sparse components and fuses results
|
|
133
|
+
- **`QueryMode.DENSE`**: Query only the dense component, useful for custom reranking scenarios
|
|
134
|
+
- **`QueryMode.SPARSE`**: Query only the sparse component, useful for custom reranking scenarios
|
|
135
|
+
|
|
136
|
+
Use query modes when you want to implement custom fusion logic or need separate dense/sparse results for advanced reranking algorithms.
|
|
137
|
+
|
|
44
138
|
### Vector Store Configuration
|
|
45
139
|
|
|
46
140
|
The Upstash vector store requires the following configuration:
|
|
@@ -70,13 +164,17 @@ The Upstash store requires the following configuration:
|
|
|
70
164
|
## Features
|
|
71
165
|
|
|
72
166
|
- Serverless vector database and key-value store
|
|
167
|
+
- **Hybrid vector search** combining dense and sparse vectors
|
|
168
|
+
- **Advanced fusion algorithms** (RRF) for optimal search ranking
|
|
73
169
|
- Pay-per-use pricing
|
|
74
170
|
- Low latency global access
|
|
75
171
|
- REST API interface
|
|
76
172
|
- Built-in vector similarity search
|
|
77
173
|
- Durable storage for chat history and agent memory
|
|
174
|
+
- Backward compatible with existing dense vector implementations
|
|
78
175
|
|
|
79
176
|
## Related Links
|
|
80
177
|
|
|
81
178
|
- [Upstash Vector Documentation](https://docs.upstash.com/vector)
|
|
179
|
+
- [Upstash Hybrid Indexes Documentation](https://docs.upstash.com/vector/features/hybridindexes)
|
|
82
180
|
- [Upstash Redis Documentation](https://docs.upstash.com/redis)
|