Commit d6de38c
fix(14-A): handle numpy-array sparse-vector attrs in ingest()
fastembed's sparse embedders return numpy.ndarray for `.indices` and
`.values`. The previous `getattr(svec, "indices", []) or []` short-circuit
raised "ValueError: The truth value of an array with more than one element
is ambiguous" because numpy arrays don't define multi-element __bool__.
Replace the truthiness fallback with explicit `is None` checks. Convert
indices to plain int and values to plain float so the Qdrant SparseVector
gets native Python types regardless of the embedder's output dtype.
Discovered while running the first end-to-end longmemeval_s ingest against
live Qdrant — the unit suite mocked sparse embedders with plain Python
lists, so the numpy path was never exercised.
Add regression test `test_ingest_handles_numpy_sparse_vector_attrs` that
fakes numpy-shaped sparse outputs and asserts ingest() succeeds with
native int/float lists in the upserted SparseVector.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 4ffef84 commit d6de38c
2 files changed
Lines changed: 71 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
192 | 192 | | |
193 | 193 | | |
194 | 194 | | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
195 | 201 | | |
196 | | - | |
197 | | - | |
| 202 | + | |
| 203 | + | |
198 | 204 | | |
199 | 205 | | |
200 | 206 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
309 | 309 | | |
310 | 310 | | |
311 | 311 | | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
0 commit comments