SQLiteVecManager.h 929 B

123456789101112131415161718192021222324252627282930313233
  1. 
  2. #pragma once
  3. #include <vector>
  4. #include <string>
  5. #include "../sqlite3/sqlite3.h"
  6. #include "../sqlite3/sqlite-vec.h"
  7. class SQLiteVecManager
  8. {
  9. private:
  10. sqlite3 * db;
  11. std::string dbName;
  12. bool useVecExtension;
  13. public:
  14. SQLiteVecManager(const std::string & databaseName);
  15. ~SQLiteVecManager();
  16. bool initializeDatabase(int vectorDimension);
  17. bool addFeatureVector(const std::vector<float> & features, const std::string & imagePath);
  18. std::vector<std::pair<std::string, float>> searchSimilarVectors(const std::vector<float> & queryVector, int k = 5);
  19. void saveDatabase();
  20. bool loadDatabase();
  21. int getFeatureCount() const;
  22. bool isEmpty() const;
  23. private:
  24. std::string vectorToBlob(const std::vector<float> & vec);
  25. std::vector<float> blobToVector(const std::string & blob);
  26. float calculateCosineSimilarity(const std::vector<float> & vec1, const std::vector<float> & vec2);
  27. float distanceToSimilarity(float distance);
  28. };