#ifndef HUMANUS_MEMORY_MEM0_VECTOR_STORE_BASE_H #define HUMANUS_MEMORY_MEM0_VECTOR_STORE_BASE_H #include "config.h" #include #include #include namespace humanus::mem0 { class VectorStore { private: static std::unordered_map> instances_; protected: std::shared_ptr config_; // Constructor VectorStore(const std::shared_ptr& config) : config_(config) {} public: // Get the singleton instance static std::shared_ptr get_instance(const std::string& config_name = "default", const std::shared_ptr& config = nullptr); virtual ~VectorStore() = default; virtual void reset() = 0; /** * @brief 插入向量到集合中 * @param vector 向量数据 * @param vector_id 向量ID * @param metadata 可选的元数据 */ virtual void insert(const std::vector& vector, const size_t vector_id, const json& metadata = json::object()) = 0; /** * @brief 搜索相似向量 * @param query 查询向量 * @param limit 返回结果数量限制 * @param filters 可选的过滤条件 * @return 相似向量的MemoryItem列表 */ virtual std::vector search(const std::vector& query, int limit = 5, const std::string& filters = "") = 0; /** * @brief 通过ID删除向量 * @param vector_id 向量ID */ virtual void delete_vector(size_t vector_id) = 0; /** * @brief 更新向量及其负载 * @param vector_id 向量ID * @param vector 可选的新向量数据 * @param metadata 可选的新负载数据 */ virtual void update(size_t vector_id, const std::vector vector = std::vector(), const json& metadata = json::object()) = 0; /** * @brief 通过ID获取向量 * @param vector_id 向量ID * @return 向量数据 */ virtual MemoryItem get(size_t vector_id) = 0; /** * @brief 列出所有记忆 * @param filters 可选的过滤条件 * @param limit 可选的结果数量限制 * @return 记忆ID列表 */ virtual std::vector list(const std::string& filters = "", int limit = 0) = 0; }; } // namespace humanus::mem0 #endif // HUMANUS_MEMORY_MEM0_VECTOR_STORE_BASE_H