faiss mobile
1.9.0
該函式庫提供了為 iOS 編譯和分發 FAISS 函式庫的方法。
FAISS 是一個由 Facebook AI 開發的程式庫,可實現高效的相似性搜尋。因此,給定一組向量,我們可以使用 Faiss 對它們進行索引 - 然後使用另一個向量(查詢向量),我們在索引中搜尋最相似的向量。
FAISS 最新支援的版本是 1.9.0。
platforms
)現代機器學習工具專注於伺服器端或桌面解決方案,很少有針對行動裝置最佳化程式碼庫的工具,該儲存庫是一種結構化方式,用於編譯 FAISS 原始碼並將其分發給 iOS 開發人員。
運行./faiss.sh
,它將創建您可以在 Xcode 專案中使用的dist/faiss.xcframework
。
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 版本指向 C++ 中的函式庫FAISS
及其 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
了解更多。 歡迎貢獻,請隨時提交問題或提出拉取請求。
麻省理工學院
版權所有 © 2023-2024 尤金‧豪普特曼
Faiss 已獲得 MIT 許可,請參閱頂層目錄中的 LICENSE 檔案。
版權所有 © Meta Platforms, Inc.。