VECTOR INDEX with M=200 returns farthest candidates on 1D monotonic vectors
@JoeJRW ya está trabajando en esto.
Desde el 1/6/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
alisql version: 8.0.44-alisql-dev
Hi,I understand that ANN indexes may sacrifice accuracy for performance. However, in the following example, setting M=200 causes the query to return vectors near the end of the dataset, which are almost the farthest possible results from the query vector.
This seems different from a typical approximation error. Is this expected behavior, or does it indicate a bug in the vector index implementation?
DROP TABLE IF EXISTS tab_vidx_m3_1d_060;
DROP TABLE IF EXISTS tab_vidx_m6_1d_060;
DROP TABLE IF EXISTS tab_vidx_m200_1d_060;
DROP PROCEDURE IF EXISTS proc_insert_m_1d_060;
CREATE TABLE tab_vidx_m3_1d_060 (
id INT PRIMARY KEY,
v VECTOR(1),
VECTOR INDEX vi(v) DISTANCE=EUCLIDEAN M=3
);
CREATE TABLE tab_vidx_m6_1d_060 (
id INT PRIMARY KEY,
v VECTOR(1),
VECTOR INDEX vi(v) DISTANCE=EUCLIDEAN M=6
);
CREATE TABLE tab_vidx_m200_1d_060 (
id INT PRIMARY KEY,
v VECTOR(1),
VECTOR INDEX vi(v) DISTANCE=EUCLIDEAN M=200
);
DELIMITER //
CREATE PROCEDURE proc_insert_m_1d_060()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= 10000 DO
INSERT INTO tab_vidx_m3_1d_060 VALUES
(i, VEC_FromText(CONCAT('[', i, ']')));
INSERT INTO tab_vidx_m6_1d_060 VALUES
(i, VEC_FromText(CONCAT('[', i, ']')));
INSERT INTO tab_vidx_m200_1d_060 VALUES
(i, VEC_FromText(CONCAT('[', i, ']')));
SET i = i + 1;
END WHILE;
END //
DELIMITER ;
CALL proc_insert_m_1d_060();
DROP PROCEDURE IF EXISTS proc_insert_m_1d_060;
SELECT id
FROM tab_vidx_m3_1d_060 FORCE INDEX(vi)
ORDER BY VEC_DISTANCE(v, VEC_FromText('[1]'))
LIMIT 10;
SELECT id
FROM tab_vidx_m6_1d_060 FORCE INDEX(vi)
ORDER BY VEC_DISTANCE(v, VEC_FromText('[1]'))
LIMIT 10;
SELECT id
FROM tab_vidx_m200_1d_060 FORCE INDEX(vi)
ORDER BY VEC_DISTANCE(v, VEC_FromText('[1]'))
LIMIT 10;
- Lenguaje dominante
- C++
- Estrellas
- 6k
- Forks
- 902
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de alibaba/AliSQL
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
-
Deployment Architecture Issues Abierto
Todos los issues de alibaba/AliSQL
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
ArthurSonzogni/FTXUI#1363 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
ginkgo-project/ginkgo#2108 ·
-
[CI] Nightly Clang build broken: structured binding captured in a lambda in FileDataSource.cpp Abiertobug build
Dificultad 1/5 Menos de una hora Aptitud para principiantes 91/100
facebookincubator/velox#19194 ·
-
JIT-compiled number -> Decimal conversion silently overflows instead of raising DECIMAL_OVERFLOW Abiertofuzz
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
ClickHouse/ClickHouse#122114 ·