이 라이브러리는 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
자세히 알아보기 기여를 환영합니다. 자유롭게 문제를 제출하거나 끌어오기 요청을 제출하세요.
MIT
저작권 © 2023-2024 Eugene Hauptmann
Faiss는 MIT 라이센스를 가지고 있습니다. 최상위 디렉터리의 LICENSE 파일을 참조하세요.
Copyright © Meta Platforms, Inc. 이 프로젝트의 이용약관 및 개인정보 보호정책을 확인하세요.