| 1234567891011121314151617181920212223242526272829303132 |
- #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);
- };
|