
ब्लैक-होल अटैक का अनुसंधान कार्यान्वयन, जो केंद्रीयता-संचालित हबनेस के माध्यम से वेक्टर डेटाबेस इंडेक्स को ज़हरीला बनाता है, FAISS पाइपलाइनों और डिटेक्शन/मिटिगेशन रक्षा मूल्यांकन के साथ।
यह रिपॉज़िटरी पेपर Black-Hole Attack from Embedding Space Defects के साथ आने वाले कार्यान्वयन को समाहित करती है। ब्लैक-होल अटैक उच्च-आयामी एम्बेडिंग स्पेस में एक ज्यामितीय दोष—केंद्रीयता-प्रेरित हबनेस—का शोषण करके वेक्टर डेटाबेस को ज़हरीला बनाता है: क्लस्टर सेंट्रोइड्स के निकट इंजेक्ट किए गए कुछ ही संख्या के दुर्भावनापूर्ण वेक्टर उपयोगकर्ता क्वेरीज़ के एक बड़े हिस्से के लिए निकटतम पड़ोसी बन जाते हैं, बिना उन क्वेरीज़ का कोई ज्ञान आवश्यक हुए।
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 | टॉप‑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 | आउटपुट JSON के लिए data/result/ के अंतर्गत सबडायरेक्टरी |
पेपर में वर्णित चार आक्रमण पथ निम्नलिखित इनवोकेशन्स के अनुरूप हैं:
| पथ | कमांड |
|---|---|
| (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},
}