anywidget-vector 0.1.0__py3-none-any.whl → 0.2.1__py3-none-any.whl

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.
Files changed (34) hide show
  1. anywidget_vector/__init__.py +1 -1
  2. anywidget_vector/backends/__init__.py +103 -0
  3. anywidget_vector/backends/chroma/__init__.py +27 -0
  4. anywidget_vector/backends/chroma/client.py +60 -0
  5. anywidget_vector/backends/chroma/converter.py +86 -0
  6. anywidget_vector/backends/grafeo/__init__.py +20 -0
  7. anywidget_vector/backends/grafeo/client.py +33 -0
  8. anywidget_vector/backends/grafeo/converter.py +46 -0
  9. anywidget_vector/backends/lancedb/__init__.py +22 -0
  10. anywidget_vector/backends/lancedb/client.py +56 -0
  11. anywidget_vector/backends/lancedb/converter.py +71 -0
  12. anywidget_vector/backends/pinecone/__init__.py +21 -0
  13. anywidget_vector/backends/pinecone/client.js +45 -0
  14. anywidget_vector/backends/pinecone/converter.py +62 -0
  15. anywidget_vector/backends/qdrant/__init__.py +26 -0
  16. anywidget_vector/backends/qdrant/client.js +61 -0
  17. anywidget_vector/backends/qdrant/converter.py +83 -0
  18. anywidget_vector/backends/weaviate/__init__.py +33 -0
  19. anywidget_vector/backends/weaviate/client.js +50 -0
  20. anywidget_vector/backends/weaviate/converter.py +81 -0
  21. anywidget_vector/static/icons.js +14 -0
  22. anywidget_vector/traitlets.py +84 -0
  23. anywidget_vector/ui/__init__.py +206 -0
  24. anywidget_vector/ui/canvas.js +521 -0
  25. anywidget_vector/ui/constants.js +64 -0
  26. anywidget_vector/ui/properties.js +158 -0
  27. anywidget_vector/ui/settings.js +265 -0
  28. anywidget_vector/ui/styles.css +348 -0
  29. anywidget_vector/ui/toolbar.js +117 -0
  30. anywidget_vector/widget.py +187 -850
  31. {anywidget_vector-0.1.0.dist-info → anywidget_vector-0.2.1.dist-info}/METADATA +70 -3
  32. anywidget_vector-0.2.1.dist-info/RECORD +34 -0
  33. anywidget_vector-0.1.0.dist-info/RECORD +0 -6
  34. {anywidget_vector-0.1.0.dist-info → anywidget_vector-0.2.1.dist-info}/WHEEL +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anywidget-vector
3
- Version: 0.1.0
4
- Summary: Interactive vector visualization for Python notebooks using anywidget
3
+ Version: 0.2.1
4
+ Summary: Interactive 3D vector visualization with query UI for vector databases
5
5
  Project-URL: Homepage, https://grafeo.dev/
6
6
  Project-URL: Repository, https://github.com/GrafeoDB/anywidget-vector
7
7
  Author-email: "S.T. Grond" <widget@grafeo.dev>
@@ -30,7 +30,7 @@ Provides-Extra: dev
30
30
  Requires-Dist: marimo>=0.19.7; extra == 'dev'
31
31
  Requires-Dist: prek>=0.3.1; extra == 'dev'
32
32
  Requires-Dist: pytest>=9.0.2; extra == 'dev'
33
- Requires-Dist: ruff>=0.14.14; extra == 'dev'
33
+ Requires-Dist: ruff>=0.15.0; extra == 'dev'
34
34
  Requires-Dist: ty>=0.0.14; extra == 'dev'
35
35
  Provides-Extra: lancedb
36
36
  Requires-Dist: lancedb>=0.1; extra == 'lancedb'
@@ -264,6 +264,73 @@ widget = VectorSpace(
264
264
  )
265
265
  ```
266
266
 
267
+ ## Distance Metrics
268
+
269
+ Compute distances and visualize similarity relationships between points.
270
+
271
+ ### Supported Metrics
272
+
273
+ | Metric | Description |
274
+ |--------|-------------|
275
+ | `euclidean` | Straight-line distance (L2 norm) |
276
+ | `cosine` | Angle-based distance (1 - cosine similarity) |
277
+ | `manhattan` | Sum of absolute differences (L1 norm) |
278
+ | `dot_product` | Negative dot product (higher = closer) |
279
+
280
+ ### Color by Distance
281
+
282
+ ```python
283
+ # Color points by distance from a reference
284
+ widget.color_by_distance("point_a")
285
+ widget.color_by_distance("point_a", metric="cosine")
286
+ ```
287
+
288
+ ### Find Neighbors
289
+
290
+ ```python
291
+ # Find k nearest neighbors
292
+ neighbors = widget.find_neighbors("point_a", k=5)
293
+ # Returns: [("point_b", 0.1), ("point_c", 0.2), ...]
294
+
295
+ # Find neighbors within distance threshold
296
+ neighbors = widget.find_neighbors("point_a", threshold=0.5)
297
+ ```
298
+
299
+ ### Show Connections
300
+
301
+ ```python
302
+ # Draw lines to k-nearest neighbors
303
+ widget.show_neighbors("point_a", k=5)
304
+
305
+ # Draw lines to all points within threshold
306
+ widget.show_neighbors("point_a", threshold=0.3)
307
+
308
+ # Manual connection settings
309
+ widget = VectorSpace(
310
+ points=data,
311
+ show_connections=True,
312
+ k_neighbors=3,
313
+ distance_metric="cosine",
314
+ connection_color="#00ff00",
315
+ connection_opacity=0.5,
316
+ )
317
+ ```
318
+
319
+ ### Compute Distances
320
+
321
+ ```python
322
+ # Get distances from reference to all points
323
+ distances = widget.compute_distances("point_a")
324
+ # Returns: {"point_b": 0.1, "point_c": 0.5, ...}
325
+
326
+ # Use high-dimensional vectors (not just x,y,z)
327
+ distances = widget.compute_distances(
328
+ "point_a",
329
+ metric="cosine",
330
+ vector_field="embedding" # Use full embedding vector
331
+ )
332
+ ```
333
+
267
334
  ## Export
268
335
 
269
336
  ```python
@@ -0,0 +1,34 @@
1
+ anywidget_vector/__init__.py,sha256=g7DbvLkK3gfipGvXW_B5Gmzs66G-mwjT24tQHHBDYhs,162
2
+ anywidget_vector/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ anywidget_vector/traitlets.py,sha256=XFkKF1sg_CrKdxyCmfv2Jz3RhewjQ05seYpKVnt3I7I,3941
4
+ anywidget_vector/widget.py,sha256=quqrEb1tGqaFrWehJj2aoemV3djBuhBGCO8yV3j1XZg,12578
5
+ anywidget_vector/backends/__init__.py,sha256=-Z5i80ZJKgmmG26l7DBMijxYaqZLmx89Wo6G3krRD-o,3075
6
+ anywidget_vector/backends/chroma/__init__.py,sha256=QVVgTcJZP-pHzw7bPLST9Rr1Nz1MIC1k-ktczzpfViw,693
7
+ anywidget_vector/backends/chroma/client.py,sha256=2N5KxGNKz8YX101D4qHhFag8VQLoqLMXlEPav43f7Gs,1616
8
+ anywidget_vector/backends/chroma/converter.py,sha256=qrJ53aVoi7Lzw1NJL44c6MGmPG-nKzMLS6sB0KHOX_Y,2870
9
+ anywidget_vector/backends/grafeo/__init__.py,sha256=bYLQYUBR31O_s-EBiP_uyEVowctw9-_r_5pFoTAaJQM,611
10
+ anywidget_vector/backends/grafeo/client.py,sha256=36bvlbU1124z_i7A_2FB2phuVdXVD-TOQDkh_vDXswo,824
11
+ anywidget_vector/backends/grafeo/converter.py,sha256=aYnd1Ri04cJMM7h9cyMWaZEa3V2lNzLx1-VwLDjRCVg,1629
12
+ anywidget_vector/backends/lancedb/__init__.py,sha256=ybjmJ8bdwPYfCr9JBwO5wzr9kJ0tDYhSR9En9A2RQzo,644
13
+ anywidget_vector/backends/lancedb/client.py,sha256=7EGfV0dKHiRgdjfEOXFCzRFuMIUKNOwB2ZCVmXsoE64,1519
14
+ anywidget_vector/backends/lancedb/converter.py,sha256=nfOKooKkPnzEg8EiSflXAfNbUvA4vIpxZ5H-JoOut3M,2242
15
+ anywidget_vector/backends/pinecone/__init__.py,sha256=85Bk4gFYTPOu0XXbW6gdyuDw_y6Nn6ZQ-aGLDwuyGwI,534
16
+ anywidget_vector/backends/pinecone/client.js,sha256=jEY3GHrhCp-d4FkBoqK8nAptw7h1HyqiRqP2KB4Zm_w,1337
17
+ anywidget_vector/backends/pinecone/converter.py,sha256=lmjTun4WAlDsslITxntr6DcSaP_Isg4QJEt6nvU-lRw,1738
18
+ anywidget_vector/backends/qdrant/__init__.py,sha256=YkGNJ10Ex-6KXrfqbM1PQFf1pQ3i5pl58Z5v_VKZhyE,617
19
+ anywidget_vector/backends/qdrant/client.js,sha256=KfGvStQ8r_bPQdSk6zWqXavl8IUYaqk3nly8Bn78Huo,1952
20
+ anywidget_vector/backends/qdrant/converter.py,sha256=U8pR7qchTotzxlNVLmu50vUCpote3Zb7tbeQidrhStM,2552
21
+ anywidget_vector/backends/weaviate/__init__.py,sha256=QNXvpAPNi_l2axBu9Hf8AbT5XxMWdE-FfV5bs9ojsGg,796
22
+ anywidget_vector/backends/weaviate/client.js,sha256=ZjrTfzUGzKNUf9Gi_ymypKNteSnIFdi5aHfgemkopFs,1375
23
+ anywidget_vector/backends/weaviate/converter.py,sha256=dsGeOgZnmKGsDWUTP7KxUv66B-NMuJHIu_SgYc-hYoE,2566
24
+ anywidget_vector/static/icons.js,sha256=GDn5-GeME97eMcutLkJAM7RKiNGd7-hYqiBKmmcLqAg,2166
25
+ anywidget_vector/ui/__init__.py,sha256=Nh15-XhS49sKGvv-1moKiqc5dQFzXLc-cy-HWlACwuw,6313
26
+ anywidget_vector/ui/canvas.js,sha256=F5IckHSBedDRxy69sKH4Y28yqeZjyBshrw9LqsUfBTc,18906
27
+ anywidget_vector/ui/constants.js,sha256=y6bu2jMO4kdEBV-mIiLfwhTZcvFIJpmkAV5kKhYWD1Q,2769
28
+ anywidget_vector/ui/properties.js,sha256=96bUGCc1GUHVLQS-acj8TKUCuiMnpVlEfCjoHPu97C8,4894
29
+ anywidget_vector/ui/settings.js,sha256=wj7zaLGz-jhpxSadnKJlMy4DlfIMeuCqTQ8YzxmuWD0,9349
30
+ anywidget_vector/ui/styles.css,sha256=e2AxYnKGpQh2DDtW4mSNFzdT1xBMJkBJFSD3MQ-cOW8,6309
31
+ anywidget_vector/ui/toolbar.js,sha256=7zvmKm6TfX_2a9uIpPZVGYHrHjns1dyOFVUO31HYwfU,4028
32
+ anywidget_vector-0.2.1.dist-info/METADATA,sha256=LHJ79vnNQoNEpmWRgplRgN69Rlkc3SDIe5vCxGiET44,8942
33
+ anywidget_vector-0.2.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
34
+ anywidget_vector-0.2.1.dist-info/RECORD,,
@@ -1,6 +0,0 @@
1
- anywidget_vector/__init__.py,sha256=UA1icM7Y50eVfCf8yambftuG8bxLMIjON68IVJDO4x8,162
2
- anywidget_vector/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- anywidget_vector/widget.py,sha256=60AP_awiX6MUaYPIBRvfFBdFQsyqPIDjronMShQDIH0,34021
4
- anywidget_vector-0.1.0.dist-info/METADATA,sha256=kVS4eGG1n0PCXNItyjPdKRTh0QpwWowXrfMv8ML7dWM,7333
5
- anywidget_vector-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
6
- anywidget_vector-0.1.0.dist-info/RECORD,,