Diese Bibliothek bietet Möglichkeiten zum Kompilieren und Verteilen der FAISS-Bibliothek für iOS.
FAISS ist eine von Facebook AI entwickelte Bibliothek, die eine effiziente Ähnlichkeitssuche ermöglicht. Wenn wir also eine Reihe von Vektoren haben, können wir sie mit Faiss indizieren. Anschließend suchen wir mit einem anderen Vektor (dem Abfragevektor) nach den ähnlichsten Vektoren innerhalb des Index.
Die neueste unterstützte Version von FAISS ist 1.9.0.
platforms
)Moderne Tools für maschinelles Lernen konzentrieren sich auf serverseitige oder Desktop-Lösungen. Nur wenige von ihnen optimieren ihre Codebasis für Mobilgeräte. Dieses Repository ist eine strukturierte Möglichkeit, den FAISS-Quellcode zu kompilieren und an iOS-Entwickler zu verteilen.
Führen Sie ./faiss.sh
aus und es wird dist/faiss.xcframework
erstellt, das Sie in Ihrem Xcode-Projekt verwenden können.
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
Dieses Paket ist über die folgenden Paketmanager verfügbar.
./Pacakage.swift
verweist auf eine Remote-Veröffentlichung, die in diesem GitHub-Repository gehostet wird. Verwenden Sie diese Anweisungen, um dieses GitHub-Repository hinzuzufügen.
Die SPM-Version verweist auf beide Bibliotheken FAISS
in C++ und deren C-Version FAISS_C
.
./FAISS.podspec
und ./FAISS_C.podspec
enthalten alle spezifischen Details zum Build.
In Ihrer Podfile
können Sie diese Bibliothek mit dieser Syntax hinzufügen:
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'
Fügen Sie in Cartfile
Folgendes hinzu:
binary "https://raw.githubusercontent.com/DeveloperMindset-com/faiss-mobile/master/carthage/faiss-static-xcframework.json" ~> 1.9 . 0
Etwas anders für eine C-Version:
binary "https://raw.githubusercontent.com/DeveloperMindset-com/faiss-mobile/master/carthage/faiss-c-static-xcframework.json" ~> 1.9 . 0
Das Release-Management funktioniert mit gh.
brew install gh tree
So geben Sie einen Entwurf frei:
./faiss.sh release
FAISS-Mac-Objective-C
lesen Sie mehr.FAISS-Mac-Objective-C++
lesen Sie mehr.FAISS-iOS-Objective-C
lesen Sie mehr. Beiträge sind willkommen. Sie können gerne ein Problem einreichen oder eine Pull-Anfrage eröffnen.
MIT
Copyright © 2023-2024 Eugene Hauptmann
Faiss ist MIT-lizenziert. Weitere Informationen finden Sie in der LICENSE-Datei im obersten Verzeichnis.
Copyright © Meta Platforms, Inc. Siehe die Nutzungsbedingungen und Datenschutzbestimmungen für dieses Projekt.