| 123456789101112131415161718192021222324252627282930313233 |
-
- #pragma once
- #include <vector>
- #include <string>
- #include "../sqlite3/sqlite3.h"
- #include "../sqlite3/sqlite-vec.h"
- class SQLiteVecManager
- {
- private:
- sqlite3 * db;
- std::string dbName;
- bool useVecExtension;
- public:
- SQLiteVecManager(const std::string & databaseName);
- ~SQLiteVecManager();
- bool initializeDatabase(int vectorDimension);
- bool addFeatureVector(const std::vector<float> & features, const std::string & imagePath);
- std::vector<std::pair<std::string, float>> searchSimilarVectors(const std::vector<float> & queryVector, int k = 5);
- void saveDatabase();
- bool loadDatabase();
- int getFeatureCount() const;
- bool isEmpty() const;
- private:
- std::string vectorToBlob(const std::vector<float> & vec);
- std::vector<float> blobToVector(const std::string & blob);
- float calculateCosineSimilarity(const std::vector<float> & vec1, const std::vector<float> & vec2);
- float distanceToSimilarity(float distance);
- };
|