#pragma once #include #include #include "ExecutionEngine.h" namespace faiss { class Index; } namespace zilliz { namespace vecwise { namespace engine { class FaissExecutionEngine : public ExecutionEngine { public: FaissExecutionEngine(uint16_t dimension, const std::string& location); FaissExecutionEngine(std::shared_ptr index, const std::string& location); virtual Status AddWithIds(long n, const float *xdata, const long *xids) override; virtual size_t Count() const override; virtual size_t Size() const override; virtual size_t PhysicalSize() const override; virtual Status Merge(const std::string& location) override; virtual Status Serialize() override; virtual Status Load() override; virtual Status Cache() override; virtual Status Search(long n, const float *data, long k, float *distances, long *labels) const override; virtual std::shared_ptr BuildIndex(const std::string&) override; protected: std::shared_ptr pIndex_; std::string location_; }; } // namespace engine } // namespace vecwise } // namespace zilliz