
Исследовательская реализация атаки «чёрная дыра», которая отравляет индексы векторных баз данных через управляемую центральностью хабность, с конвейерами FAISS и оценкой средств обнаружения и защиты.
Этот репозиторий содержит реализацию, сопровождающую статью Black-Hole Attack from Embedding Space Defects. Атака «чёрной дыры» эксплуатирует геометрический дефект в высокоразмерных пространствах эмбеддингов — центральность-обусловленную хабность (centrality-driven hubness) — для отравления векторных баз данных: небольшое число вредоносных векторов, внедрённых вблизи центроидов кластеров, становятся ближайшими соседями для значительной доли пользовательских запросов, при этом не требуется никакого знания об этих запросах.
faiss-gpu; CPU: faiss-cpu)scripts/encode_*.py; сам конвейер атаки не импортирует torch)Установите основные зависимости:
pip install numpy pandas pyarrow scikit-learn tqdm faiss-gpu
# Download BEIR datasets
bash scripts/download_data.sh
# Encode to vectors + build FAISS indexes
bash scripts/process_data.sh
Отредактируйте массивы MODELS и DATASETS в каждом скрипте, чтобы выбрать конкретные модели или наборы данных.
# Full-Export Attack on HotpotQA with Contriever
python run.py --model contriever --src hotpotqa
Это запускает полный конвейер: загрузка векторов → кластеризация → генерация состязательных векторов → внедрение → построение отравленного индекса → оценка MO@10, ASR, FPR.
| Флаг | По умолчанию | Описание |
|---|---|---|
--model / --src | contriever / hotpotqa | Модель эмбеддингов и исходный набор данных |
--mode | default | default (в рамках одного набора данных) или transfer (между наборами данных) |
--preprocess | default | default, query_trans или multi_query_transfer |
--cluster | kmeans | kmeans, minibatch_kmeans, faiss_gpu |
--num-copies / --epsilon | 10 / 0.001 | Количество возмущённых копий на центроид; величина возмущения |
--eval-k / --sample-queries | 10 / 3000 | Оценка top‑k; количество сэмплируемых запросов |
--eval-index-types | FlatIP | Типы индексов для оценки: FlatIP, HNSW, IVF, IVFPQ |
--eval-runners | evaluate | Этапы оценки: evaluate, evaluate_recall, evaluate_defense, evaluate_defense_performance_loss, evaluate_mitigation_defense, evaluate_mitigation_performance_loss |
--result-subdir | auto | Подкаталог в data/result/ для выходного JSON |
Четыре вектора атак, описанные в статье, соответствуют следующим вызовам:
| Вектор | Команда |
|---|---|
| (1) Полный экспорт базы данных | python run.py --mode default --preprocess default |
| (2) Частичный экспорт базы данных | Экспортируйте часть векторов извне перед кластеризацией; остальная часть конвейера идентична (1) |
| (3) Атака через суррогатный набор данных | python run.py --mode transfer --preprocess multi_query_transfer --victim <dataset> |
| (4) Отравление публичных предварительно встроенных наборов данных | Измените файлы .npy предварительно встроенного набора данных и повторно загрузите его на HuggingFace |
Для (3) атакующий строит вредоносные векторы из запросов всех остальных наборов данных и внедряет их в жертву. Файлы запросов .npy для исходных суррогатных наборов данных должны присутствовать в data/vector/.
Чтобы запустить защиту на основе обнаружения:
python run.py --model contriever --src hotpotqa \
--eval-runners evaluate_defense evaluate_defense_performance_loss
Для защиты на основе смягчения (один или несколько методов):
python run.py --model contriever --src hotpotqa \
--eval-runners evaluate_mitigation_defense evaluate_mitigation_performance_loss \
--mitigation-methods cl2 zn nohub
demo/ содержит самодостаточный минимальный пример, который строит небольшую базу знаний из набора данных BEIR, кодирует её, внедряет вредоносные векторы и измеряет влияние на уровне извлечения. Он использует собственный requirements.txt и не зависит от src/. Подробности о CLI см. в demo/src/main.py.
config.json определяет поддерживаемые модели (contriever, bge, gte) и наборы данных (14 бенчмарков BEIR). Чтобы добавить новую модель, расширьте config.json и убедитесь, что файлы векторов .npy существуют в data/vector/<model>_<dataset>.npy.
@misc{li2026trustvectorsvectordatabase,
title={Can You Trust the Vectors in Your Vector Database? Black-Hole Attack from Embedding Space Defects},
author={Hanxi Li and Jianan Zhou and Jiale Lao and Yibo Wang and Zhengmao Ye and Yang Cao and Junfen Wang and Mingjie Tang},
year={2026},
eprint={2604.05480},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2604.05480},
}