antirez
4dca45ad24
Remove sprintf() from cJSON.
2025-03-27 12:19:56 +01:00
antirez
b17499f907
Fix projection output len.
2025-03-27 12:19:40 +01:00
antirez
29c27bc13e
Make HNSW CAS commit atomic.
...
This way we don't need to mess with node->value at a latter time
where an explicit lock would be required. Now we have:
1. Prepare context (neighbors).
2. Commit, and set the associated value.
2025-03-27 12:18:58 +01:00
antirez
c61c535c32
Make Redis module merging simpler.
...
This way there is no need to change any file: the only
needed change is the initialization function name, that
is now controlled by the define.
2025-03-27 10:45:05 +01:00
antirez
2f17e4fb04
Prettify parseVector().
2025-03-27 08:35:47 +01:00
antirez
63057253d8
Document threading model in a top comment.
2025-03-27 08:31:15 +01:00
antirez
3d31fc3bee
VSIM thread: manipulate results while still locked.
2025-03-27 08:11:13 +01:00
antirez
f70dc8acb2
Clarify VRANDMEMBER tradeoff.
2025-03-26 23:47:47 +01:00
antirez
9180659f8b
Clarify failure behaior of VectorSetRdbLoad().
2025-03-26 23:44:39 +01:00
antirez
c2d80e8ced
Clarify that if CAS fails we insert blocking.
2025-03-26 23:41:55 +01:00
antirez
e3243819ef
Don't mess with node attributes without protection.
...
The background VSIMs use the node attributes (via the callback)
so we can't modify them without waiting for the background
operations to terminate.
2025-03-26 23:36:14 +01:00
antirez
a6c8a15cad
VADD: fix leak on thread creation failure.
2025-03-26 22:50:47 +01:00
antirez
3e2649f1f1
hnsw_insert() should never fail in practice.
...
We pass our aborting allocation function to the HNSW lib, the
only other reason for it to fail is pthread mutex locking failing
but this is also practically impossible AFAIK in modern systems,
and if it happens (for kernel reosurces shortage) anyway to
abort is the best thing to do: otherwise we would have to return
that we could not complete the operation for some reason, which
is not uniform with everything Redis does. In Redis under
normal conditions writes must succeed if they are semantically
correct, or the server crash for OOM.
2025-03-26 22:46:00 +01:00
antirez
8dfc501fb8
VSIM: fix double free if thread creation fails.
2025-03-26 19:43:59 +01:00
antirez
9d4325ee25
VSIM NOTHREAD, mainly for testing goals.
2025-03-26 16:52:28 +01:00
antirez
707c132392
Count threaded exec time in stats.
2025-03-26 16:48:02 +01:00
antirez
08e3f958fa
README: remove no longer valid RP issue.
...
now the projection matrix is deterministic.
2025-03-26 11:33:32 +01:00
antirez
23b3e21817
README: suggest using FP32 vs VALUES.
2025-03-26 11:28:05 +01:00
antirez
16e3c5a8f9
Locks error checking improved.
2025-03-24 19:10:28 +01:00
antirez
adfd2dc7c0
Remove useless OOM checks, but handle mutex creation failure.
2025-03-24 12:54:41 +01:00
antirez
8bf9b8abc1
Use Hadamard-based projection.
...
Works better and being deterministic (only relative to the projection
size) the replicas will have the same matrix automatically.
2025-03-24 12:48:04 +01:00
antirez
958ebee091
README: specify how to add REDUCE in VADD.
2025-03-24 09:55:45 +01:00
antirez
8007ccd51b
Use RESP3-friendly bool replies.
2025-03-23 20:14:40 +01:00
antirez
9cc750fd66
Test: projection regression test fixed.
2025-03-23 15:04:58 +01:00
antirez
aa92b37589
VINFO: use a single field for random projection info.
2025-03-23 14:49:52 +01:00
antirez
8f479b22b9
Tests: replication test.
2025-03-23 14:45:34 +01:00
Salvatore Sanfilippo
854c7fdddb
Merge pull request #6 from rowantrollope/main
...
Fix possible crash with random projection
2025-03-23 14:44:53 +01:00
Rowan Trollope
31bc07955c
Fix possible crash with random projection
2025-03-22 09:11:20 -07:00
antirez
f330d6175a
Clarify HNSW_MAX_THREADS vs one thread per request.
2025-03-20 15:42:11 +01:00
antirez
758e963a4e
VRANDMEMBER documentation.
2025-03-19 09:02:15 +01:00
antirez
3424757f4d
Test: added another threading stress test.
...
This access pattern triggered the bug fixed
about VADD and CAS in 70ffa8c
.
2025-03-18 23:18:26 +01:00
antirez
70ffa8ce5c
Fix VADD_CASReply() NULL reference on ID mismatch.
...
This bug was fixed thanks to the kind help of Dvir Dukhan
(@DvirDukhan) that found it and provided useful context.
2025-03-18 21:37:06 +01:00
antirez
99176b3e04
Test: VRANDMEMBER test added.
2025-03-18 16:49:27 +01:00
antirez
22ce9f3fad
VRANDMEMBER command implemented.
2025-03-17 23:52:15 +01:00
antirez
706721f8c8
HSNW: random node.
2025-03-16 00:08:43 +01:00
antirez
8a5cf17cb2
HNSW: cursor fixes and thread safety.
2025-03-15 23:31:24 +01:00
antirez
a363e5fe6d
README: memory usage section.
2025-03-15 23:16:28 +01:00
antirez
6e434bcaaf
HNSW: use node max link property.
...
This is both more correct in formal terms, and in practical
terms as well, as we could over-allocate nodes sometimes.
2025-03-15 10:30:14 +01:00
antirez
68d3067125
w2v test: fix recall EF usage.
2025-03-15 10:24:20 +01:00
antirez
d94058fad9
w2v test: recall histograms + configurable M.
2025-03-15 09:46:42 +01:00
antirez
c1c7eeaa69
Document VADD M parameter.
2025-03-15 09:28:55 +01:00
antirez
542736ce25
w2v test: proper recall test added.
2025-03-15 00:24:10 +01:00
antirez
13a0a63bef
Copyright Sanfilipo -> Redis Ltd.
2025-03-14 23:06:22 +01:00
antirez
d996eb82ef
VADD: make M configurable at creation time.
2025-03-13 16:58:55 +01:00
antirez
4e57d3f76f
README: grammar.
2025-03-13 15:56:05 +01:00
antirez
2fcf389f2a
README: troubleshooting and understandability.
2025-03-13 13:25:48 +01:00
antirez
9500539c55
HNSW: implement last resort node reallocation.
2025-03-13 11:30:07 +01:00
antirez
095842a748
README: scaling information.
2025-03-12 22:58:33 +01:00
antirez
63ae981599
README: show main scalability property of vsets.
2025-03-12 18:41:49 +01:00
antirez
cc3874ab87
VADD CAS: fallback when thread creation fails.
2025-03-12 16:57:03 +01:00