Faiss - это библиотека для эффективного поиска сходства и кластеризации плотных векторов. Он содержит алгоритмы, которые ищут в наборах векторов любого размера, вплоть до тех, которые, возможно, не вписываются в ОЗУ. Он также содержит вспомогательный код для оценки и настройки параметров. Faiss написан в C ++ с полными обертками для Python/Numpy. Некоторые из наиболее полезных алгоритмов реализованы на графическом процессоре. Он разработан в основном в фундаментальной исследовательской группе Meta.
См. ChangeLog.md для подробной информации о последних функциях.
Faiss содержит несколько методов для поиска сходства. Предполагается, что экземпляры представлены как векторы и идентифицируются целым числом, и что векторы можно сравнить с расстояниями L2 (евклидова) или точечными продуктами. Векторы, похожие на вектор запросов, - это те, которые имеют самое низкое расстояние L2 или самый высокий точечный продукт с вектором запросов. Он также поддерживает сходство косинуса, поскольку это точечный продукт на нормализованных векторах.
Некоторые из методов, подобных методам, основанным на бинарных векторах и компактных кодах квантования, используют исключительно сжатое представление векторов и не требуются для поддержания исходных векторов. Как правило, это происходит за счет менее точного поиска, но эти методы могут масштабироваться до миллиардов векторов в основной памяти на одном сервере. Другие методы, такие как HNSW и NSG, добавляют структуру индексации поверх необработанных векторов, чтобы сделать поиск более эффективным.
Реализация GPU может принять ввод из памяти CPU или GPU. На сервере с графическими процессорами индексы GPU можно использовать замену для индексов CPU (например, замените IndexFlatL2
на GpuIndexFlatL2
), а копии в/из памяти графического процессора обрабатываются автоматически. Результаты будут быстрее, однако, если как входные, так и выходные данные останутся резидентами в графическом процессоре. Использование как одиночного, так и с несколькими GPU поддерживается.
Faiss поставляется с предварительно компилированными библиотеками для Anaconda в Python, см. Faiss-CPU и Faiss-GPU. Библиотека в основном реализована в C ++, единственная зависимость - это реализация BLAS. Дополнительная поддержка GPU предоставляется через CUDA или AMD ROCM, а интерфейс Python также является необязательным. Он компилируется с Cmake. Смотрите install.md для деталей.
FAISS построен вокруг индекса, который хранит набор векторов, и обеспечивает функцию для поиска в них с сравнением вектора продукта L2 и/или DOT. Некоторые типы индексов являются простыми базовыми показателями, такими как точный поиск. Большинство доступных структур индексации соответствуют различным компромиссам в отношении
Дополнительная реализация GPU обеспечивает, что, вероятно, (по состоянию на март 2017 года) самая быстрое точное и приблизительное (сжатое домен) ближайшую внедрение соседей для поиска соседей для высокоразмерных векторов, самых быстрых K-средних и наиболее быстрых известных алгоритмов K-выбора. Реализация подробно описана здесь.
Ниже приведены точки входа для документации:
Основными авторами Faiss являются:
Ссылки на CITE, когда вы используете FAISS в исследовательской статье:
@article{douze2024faiss,
title={The Faiss library},
author={Matthijs Douze and Alexandr Guzhva and Chengqi Deng and Jeff Johnson and Gergely Szilvasy and Pierre-Emmanuel Mazaré and Maria Lomeli and Lucas Hosseini and Hervé Jégou},
year={2024},
eprint={2401.08281},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
Для версии GPU Faiss, пожалуйста, цитируйте:
@article{johnson2019billion,
title={Billion-scale similarity search with {GPUs}},
author={Johnson, Jeff and Douze, Matthijs and J{'e}gou, Herv{'e}},
journal={IEEE Transactions on Big Data},
volume={7},
number={3},
pages={535--547},
year={2019},
publisher={IEEE}
}
Для публичного обсуждения FAISS или по вопросам, есть группа Facebook по адресу https://www.facebook.com/groups/faissusers/
Мы отслеживаем страницу проблем репозитория. Вы можете сообщить об ошибках, задавать вопросы и т. Д.
Faiss лицензирован MIT, см. Файл лицензии в каталоге верхнего уровня.
Copyright © Meta Platforms, Inc.