SQLiteVecManager.h 967 B

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