From 2c94e81f6b2aa9f968f2f97a384e74bee9daabf7 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 5 Mar 2024 10:14:09 -0600 Subject: [PATCH] partial docs work --- .../dnn/circular/bitfield_filling_curve_2.svg | 4542 +++++++++++++++++ .../vectors/dnn/circular/package-info.java | 25 + .../lib/vectors/dnn/package-info.java | 24 +- 3 files changed, 4590 insertions(+), 1 deletion(-) create mode 100644 virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/circular/bitfield_filling_curve_2.svg create mode 100644 virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/circular/package-info.java diff --git a/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/circular/bitfield_filling_curve_2.svg b/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/circular/bitfield_filling_curve_2.svg new file mode 100644 index 000000000..cbc9ce0af --- /dev/null +++ b/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/circular/bitfield_filling_curve_2.svg @@ -0,0 +1,4542 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + 8 + 4 + 9 + 2 + 10 + 5 + 11 + 12 + 6 + 13 + 3 + 14 + 7 + 15 + + + msb max 012 5/7 0 4 2 5 1 x 3 x + 0 1 0/2 1/1 +0/1 0000 -> 0000 1 1 1/2 1/2 +0/1 0001 -> 1000 2 2 1/4 1/4 +0/2 0010 -> 0100 3 2 3/4 1/4 +1/2 0011 -> 1100 4 3 1/8 1/8 +0/4 0100 -> 0010 5 3 3/8 1/8 +1/4 0101 -> 0110 6 3 5/8 1/8 +2/4 0110 -> 1010 7 3 7/8 1/8 +3/4 0111 -> 1110 8 4 1/16 1/16 +0/8 1000 -> 0001 9 4 3/16 1/16 +1/8 1001 -> 0011 10 4 5/16 1/16 +2/8 1010 -> 0101 11 4 7/16 1/16 +3/8 1011 -> 0111 12 4 9/16 1/16 +4/8 1100 -> 1010 13 4 11/16 1/16 +5/8 1101 -> 1101 14 4 13/16 1/16 +6/8 1110 -> 1100 15 4 15/16 1/16 +7/8 1111 -> 1111 (0) + + + + + + + + + + + + + + diff --git a/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/circular/package-info.java b/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/circular/package-info.java new file mode 100644 index 000000000..631ea6ed5 --- /dev/null +++ b/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/circular/package-info.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2024 nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + *

This package contains an implementation of + * {@link io.nosqlbench.virtdata.lib.vectors.dnn.circular.CircularPartitioner}, + * a space-filling curve which maps ordinals onto 2-d vectors which fall on the unit circle + * with increasing density. This allows vector values to get progressive closer together radially + * as the arc intervals are divided in half at each level of resolution.

+ * + */ +package io.nosqlbench.virtdata.lib.vectors.dnn.circular; diff --git a/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/package-info.java b/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/package-info.java index bd8d5c9df..388bdc721 100644 --- a/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/package-info.java +++ b/virtdata-lib-vectors/src/main/java/io/nosqlbench/virtdata/lib/vectors/dnn/package-info.java @@ -15,6 +15,28 @@ */ /** - * This is an experimental package based on the DNN or "Das/Direct Nearest Neighbor" method. + *

This package contains experimental support for new methods for testing vector stores. + * projective simulation ... TBD + * of vector spaces + * within which provably correct KNN relationships can be derived from affine ordinal relationships. + * In other words, vectors in some projective space which are addressable by some ordinal identity + * can be constructed with procedural generation methods, and provably correct KNN neighborhoods of + * some size can be derived on the fly in a closed form calculation.

+ * + *

The vector spaces constructed in this way are not intended nor guaranteed to be dimensionally disperse. + * They are meant to provide an algebraic basis for exercising vector storage systems with increasing + * cardinality of vectors. This means that vector stores can be tested to incrementally higher limits + * while their performance and accuracy are both measured.

+ * + *

Each vector scheme in this method has the following properties: + *

+ *

+ * + *

This work is largely inspired by the DNN or "Das/Direct Nearest Neighbor" method, pioneered by + * Shaunak Das at DataStax. Additional implementations and ideas are contributed by the vector performance + * team and our testing community.

*/ package io.nosqlbench.virtdata.lib.vectors.dnn;