Support reusing a training result across multiple vector index writers
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comienza rastreando VectorIndexTrainer::train, el punto de entrada propuesto training.create_writer() y la ruta existente from_trained de IVF-PQ en todos los tipos de índice compatibles. Después, inspecciona la API unificada y sus bindings de C, C++, Java/JNI y Python. Se considera terminado cuando los writers independientes reutilicen un único resultado de entrenamiento completado, manteniendo los payloads vacíos, las APIs consumidoras existentes y el formato actual en disco.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Motivation
Callers that build one vector index file per segment currently need a separate training pass for every writer. The trained centroids, quantizers, and rotations can often be shared when those segments come from the same table or data distribution, but the unified API consumes VectorIndexTraining when it creates a writer.
For N segments, this makes the lifecycle effectively:
train -> writer 1
train -> writer 2
...
train -> writer N
IVF-PQ already has an internal from_trained path, but this capability is not available through the unified API or consistently across the supported index types and language bindings.
Proposed API
Allow a completed training result to create multiple independent writers:
let training = VectorIndexTrainer::train(config, training_vectors, training_count)?;
let first = training.create_writer();
let second = training.create_writer();
Each writer should start with the same trained model and an empty vector/ID payload. The existing consuming APIs should remain unchanged for one-shot callers.
Equivalent opt-in entry points should be exposed through C, C++, Java/JNI, and Python.
Expected benefit
In a release-mode synthetic build with 128-dimensional vectors, 8,192 training rows, and eight segments of 2,048 vectors each, training once reduced writer preparation time by 84-87% across IVF-Flat, IVF-SQ, IVF-PQ, IVF-RQ, and DiskANN. Including vector insertion and serialization, elapsed time fell by 73-84%.
The benefit comes from reducing N training passes to one; it does not change the index algorithms themselves.
Compatibility and scope
- No default behavior change: callers opt in to reusable training explicitly.
- Existing consuming APIs remain available.
- No on-disk format change.
- No cross-process training-model serialization or index merging in this issue.
- Lenguaje dominante
- Rust
- Estrellas
- 25
- Forks
- 24
- Merge medio
- 3 d 6 h
- PR fusionados (30 d)
- 5
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la 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 apache/paimon-vector-index
-
Add optional GPU acceleration for IVF-SQ training and constructionPosiblemente ocupada @TheR1sing3un la tomó hace 42 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
apache/paimon-vector-index#100 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
apache/paimon-vector-index#97 · 2 comentarios ·
-
[Feature] Add CI benchmarks to compare vector index PRs with their basePosiblemente ocupada @wangzhigang1999 la tomó hace 46 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
Todos los issues de apache/paimon-vector-index
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
DayuanJiang/PecoFence#139 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
nearai/compose-manager#73 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
akitaonrails/ai-memory#1664 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día