Эта библиотека предоставляет средства для компиляции и распространения библиотеки FAISS для iOS.
FAISS — это библиотека, разработанная Facebook AI, которая обеспечивает эффективный поиск по сходству. Итак, учитывая набор векторов, мы можем проиндексировать их с помощью Faiss — затем, используя другой вектор (вектор запроса), мы ищем наиболее похожие векторы в индексе.
Последняя поддерживаемая версия FAISS — 1.9.0.
platforms
)Современные инструменты машинного обучения ориентированы на серверные или настольные решения, немногие из них оптимизируют свои базы кода для мобильных устройств. Этот репозиторий представляет собой структурированный способ компилировать исходный код FAISS и распространять его среди разработчиков iOS.
Запустите ./faiss.sh
, и он создаст dist/faiss.xcframework
, который вы сможете использовать в своем проекте Xcode.
tree dist/faiss.xcframework -P ' *.a '
dist/faiss.xcframework
├── ios-arm64_arm64e
│ ├── Headers
│ │ └── faiss
│ │ ├── c_api
│ │ │ ├── impl
│ │ │ └── utils
│ │ ├── impl
│ │ │ └── code_distance
│ │ ├── invlists
│ │ └── utils
│ │ ├── approx_topk
│ │ ├── approx_topk_hamming
│ │ ├── distances_fused
│ │ ├── hamming_distance
│ │ └── transpose
│ └── libfaiss.a
├── ios-arm64_arm64e_x86_64-simulator
│ ├── Headers
│ │ └── faiss
│ │ ├── c_api
│ │ │ ├── impl
│ │ │ └── utils
│ │ ├── impl
│ │ │ └── code_distance
│ │ ├── invlists
│ │ └── utils
│ │ ├── approx_topk
│ │ ├── approx_topk_hamming
│ │ ├── distances_fused
│ │ ├── hamming_distance
│ │ └── transpose
│ └── libfaiss.a
├── macos-arm64_arm64e_x86_64
│ ├── Headers
│ │ └── faiss
│ │ ├── c_api
│ │ │ ├── impl
│ │ │ └── utils
│ │ ├── impl
│ │ │ └── code_distance
│ │ ├── invlists
│ │ └── utils
│ │ ├── approx_topk
│ │ ├── approx_topk_hamming
│ │ ├── distances_fused
│ │ ├── hamming_distance
│ │ └── transpose
│ └── libfaiss.a
├── tvos-arm64
│ ├── Headers
│ │ └── faiss
│ │ ├── c_api
│ │ │ ├── impl
│ │ │ └── utils
│ │ ├── impl
│ │ │ └── code_distance
│ │ ├── invlists
│ │ └── utils
│ │ ├── approx_topk
│ │ ├── approx_topk_hamming
│ │ ├── distances_fused
│ │ ├── hamming_distance
│ │ └── transpose
│ └── libfaiss.a
├── tvos-x86_64-simulator
│ ├── Headers
│ │ └── faiss
│ │ ├── c_api
│ │ │ ├── impl
│ │ │ └── utils
│ │ ├── impl
│ │ │ └── code_distance
│ │ ├── invlists
│ │ └── utils
│ │ ├── approx_topk
│ │ ├── approx_topk_hamming
│ │ ├── distances_fused
│ │ ├── hamming_distance
│ │ └── transpose
│ └── libfaiss.a
├── watchos-arm64_32_armv7k
│ ├── Headers
│ │ └── faiss
│ │ ├── c_api
│ │ │ ├── impl
│ │ │ └── utils
│ │ ├── impl
│ │ │ └── code_distance
│ │ ├── invlists
│ │ └── utils
│ │ ├── approx_topk
│ │ ├── approx_topk_hamming
│ │ ├── distances_fused
│ │ ├── hamming_distance
│ │ └── transpose
│ └── libfaiss.a
└── watchos-i386-simulator
├── Headers
│ └── faiss
│ ├── c_api
│ │ ├── impl
│ │ └── utils
│ ├── impl
│ │ └── code_distance
│ ├── invlists
│ └── utils
│ ├── approx_topk
│ ├── approx_topk_hamming
│ ├── distances_fused
│ ├── hamming_distance
│ └── transpose
└── libfaiss.a
106 directories, 7 files
dist/faiss_c.xcframework
├── Info.plist
├── ios-arm64_arm64e
│ ├── Headers
│ │ ├── AutoTune_c.h
│ │ ├── Clustering_c.h
│ │ ├── IndexBinary_c.h
│ │ ├── IndexFlat_c.h
│ │ ├── IndexIVFFlat_c.h
│ │ ├── IndexIVF_c.h
│ │ ├── IndexLSH_c.h
│ │ ├── IndexPreTransform_c.h
│ │ ├── IndexReplicas_c.h
│ │ ├── IndexScalarQuantizer_c.h
│ │ ├── IndexShards_c.h
│ │ ├── Index_c.h
│ │ ├── MetaIndexes_c.h
│ │ ├── VectorTransform_c.h
│ │ ├── clone_index_c.h
│ │ ├── error_c.h
│ │ ├── error_impl.h
│ │ ├── faiss_c.h
│ │ ├── impl
│ │ │ └── AuxIndexStructures_c.h
│ │ ├── index_factory_c.h
│ │ ├── index_io_c.h
│ │ ├── macros_impl.h
│ │ └── utils
│ │ └── distances_c.h
│ └── libfaiss_c.a
├── ios-arm64_arm64e_x86_64-simulator
│ ├── Headers
│ │ ├── AutoTune_c.h
│ │ ├── Clustering_c.h
│ │ ├── IndexBinary_c.h
│ │ ├── IndexFlat_c.h
│ │ ├── IndexIVFFlat_c.h
│ │ ├── IndexIVF_c.h
│ │ ├── IndexLSH_c.h
│ │ ├── IndexPreTransform_c.h
│ │ ├── IndexReplicas_c.h
│ │ ├── IndexScalarQuantizer_c.h
│ │ ├── IndexShards_c.h
│ │ ├── Index_c.h
│ │ ├── MetaIndexes_c.h
│ │ ├── VectorTransform_c.h
│ │ ├── clone_index_c.h
│ │ ├── error_c.h
│ │ ├── error_impl.h
│ │ ├── faiss_c.h
│ │ ├── impl
│ │ │ └── AuxIndexStructures_c.h
│ │ ├── index_factory_c.h
│ │ ├── index_io_c.h
│ │ ├── macros_impl.h
│ │ └── utils
│ │ └── distances_c.h
│ └── libfaiss_c.a
├── macos-arm64_arm64e_x86_64
│ ├── Headers
│ │ ├── AutoTune_c.h
│ │ ├── Clustering_c.h
│ │ ├── IndexBinary_c.h
│ │ ├── IndexFlat_c.h
│ │ ├── IndexIVFFlat_c.h
│ │ ├── IndexIVF_c.h
│ │ ├── IndexLSH_c.h
│ │ ├── IndexPreTransform_c.h
│ │ ├── IndexReplicas_c.h
│ │ ├── IndexScalarQuantizer_c.h
│ │ ├── IndexShards_c.h
│ │ ├── Index_c.h
│ │ ├── MetaIndexes_c.h
│ │ ├── VectorTransform_c.h
│ │ ├── clone_index_c.h
│ │ ├── error_c.h
│ │ ├── error_impl.h
│ │ ├── faiss_c.h
│ │ ├── impl
│ │ │ └── AuxIndexStructures_c.h
│ │ ├── index_factory_c.h
│ │ ├── index_io_c.h
│ │ ├── macros_impl.h
│ │ └── utils
│ │ └── distances_c.h
│ └── libfaiss_c.a
├── tvos-arm64
│ ├── Headers
│ │ ├── AutoTune_c.h
│ │ ├── Clustering_c.h
│ │ ├── IndexBinary_c.h
│ │ ├── IndexFlat_c.h
│ │ ├── IndexIVFFlat_c.h
│ │ ├── IndexIVF_c.h
│ │ ├── IndexLSH_c.h
│ │ ├── IndexPreTransform_c.h
│ │ ├── IndexReplicas_c.h
│ │ ├── IndexScalarQuantizer_c.h
│ │ ├── IndexShards_c.h
│ │ ├── Index_c.h
│ │ ├── MetaIndexes_c.h
│ │ ├── VectorTransform_c.h
│ │ ├── clone_index_c.h
│ │ ├── error_c.h
│ │ ├── error_impl.h
│ │ ├── faiss_c.h
│ │ ├── impl
│ │ │ └── AuxIndexStructures_c.h
│ │ ├── index_factory_c.h
│ │ ├── index_io_c.h
│ │ ├── macros_impl.h
│ │ └── utils
│ │ └── distances_c.h
│ └── libfaiss_c.a
├── tvos-x86_64-simulator
│ ├── Headers
│ │ ├── AutoTune_c.h
│ │ ├── Clustering_c.h
│ │ ├── IndexBinary_c.h
│ │ ├── IndexFlat_c.h
│ │ ├── IndexIVFFlat_c.h
│ │ ├── IndexIVF_c.h
│ │ ├── IndexLSH_c.h
│ │ ├── IndexPreTransform_c.h
│ │ ├── IndexReplicas_c.h
│ │ ├── IndexScalarQuantizer_c.h
│ │ ├── IndexShards_c.h
│ │ ├── Index_c.h
│ │ ├── MetaIndexes_c.h
│ │ ├── VectorTransform_c.h
│ │ ├── clone_index_c.h
│ │ ├── error_c.h
│ │ ├── error_impl.h
│ │ ├── faiss_c.h
│ │ ├── impl
│ │ │ └── AuxIndexStructures_c.h
│ │ ├── index_factory_c.h
│ │ ├── index_io_c.h
│ │ ├── macros_impl.h
│ │ └── utils
│ │ └── distances_c.h
│ └── libfaiss_c.a
├── watchos-arm64_32_armv7k
│ ├── Headers
│ │ ├── AutoTune_c.h
│ │ ├── Clustering_c.h
│ │ ├── IndexBinary_c.h
│ │ ├── IndexFlat_c.h
│ │ ├── IndexIVFFlat_c.h
│ │ ├── IndexIVF_c.h
│ │ ├── IndexLSH_c.h
│ │ ├── IndexPreTransform_c.h
│ │ ├── IndexReplicas_c.h
│ │ ├── IndexScalarQuantizer_c.h
│ │ ├── IndexShards_c.h
│ │ ├── Index_c.h
│ │ ├── MetaIndexes_c.h
│ │ ├── VectorTransform_c.h
│ │ ├── clone_index_c.h
│ │ ├── error_c.h
│ │ ├── error_impl.h
│ │ ├── faiss_c.h
│ │ ├── impl
│ │ │ └── AuxIndexStructures_c.h
│ │ ├── index_factory_c.h
│ │ ├── index_io_c.h
│ │ ├── macros_impl.h
│ │ └── utils
│ │ └── distances_c.h
│ └── libfaiss_c.a
└── watchos-i386-simulator
├── Headers
│ ├── AutoTune_c.h
│ ├── Clustering_c.h
│ ├── IndexBinary_c.h
│ ├── IndexFlat_c.h
│ ├── IndexIVFFlat_c.h
│ ├── IndexIVF_c.h
│ ├── IndexLSH_c.h
│ ├── IndexPreTransform_c.h
│ ├── IndexReplicas_c.h
│ ├── IndexScalarQuantizer_c.h
│ ├── IndexShards_c.h
│ ├── Index_c.h
│ ├── MetaIndexes_c.h
│ ├── VectorTransform_c.h
│ ├── clone_index_c.h
│ ├── error_c.h
│ ├── error_impl.h
│ ├── faiss_c.h
│ ├── impl
│ │ └── AuxIndexStructures_c.h
│ ├── index_factory_c.h
│ ├── index_io_c.h
│ ├── macros_impl.h
│ └── utils
│ └── distances_c.h
└── libfaiss_c.a
29 directories, 169 files
Этот пакет доступен с помощью следующих менеджеров пакетов.
./Pacakage.swift
указывает на удаленный выпуск, размещенный в этом репозитории GitHub. Используйте эти инструкции, чтобы добавить этот репозиторий GitHub.
Версия SPM указывает как на библиотеку FAISS
на C++, так и на ее версию C FAISS_C
.
./FAISS.podspec
и ./FAISS_C.podspec
включают все конкретные сведения о сборке.
В свой Podfile
вы можете добавить эту библиотеку, используя следующий синтаксис:
pod 'FAISS' , :git => 'https://github.com/DeveloperMindset-com/faiss-mobile.git' , :tag => 'v1.9.0'
pod 'FAISS_C' , :git => 'https://github.com/DeveloperMindset-com/faiss-mobile.git' , :tag => 'v1.9.0'
В Cartfile
добавьте следующее:
binary "https://raw.githubusercontent.com/DeveloperMindset-com/faiss-mobile/master/carthage/faiss-static-xcframework.json" ~> 1.9 . 0
Немного отличается для версии C:
binary "https://raw.githubusercontent.com/DeveloperMindset-com/faiss-mobile/master/carthage/faiss-c-static-xcframework.json" ~> 1.9 . 0
Управление релизами работает с использованием gh.
brew install gh tree
Чтобы опубликовать черновик:
./faiss.sh release
FAISS-Mac-Objective-C
подробнее.FAISS-Mac-Objective-C++
подробнее.FAISS-iOS-Objective-C
подробнее. Вклады приветствуются, не стесняйтесь сообщать о проблеме или открывать запрос на включение.
Массачусетский технологический институт
Copyright © 2023-2024 Евгений Гауптманн
Faiss имеет лицензию MIT, см. файл LICENSE в каталоге верхнего уровня.
Авторские права © Meta Platforms, Inc. См. Условия использования и Политику конфиденциальности для этого проекта.