summaryrefslogtreecommitdiff
path: root/vectordb.h
diff options
context:
space:
mode:
Diffstat (limited to 'vectordb.h')
-rw-r--r--vectordb.h39
1 files changed, 34 insertions, 5 deletions
diff --git a/vectordb.h b/vectordb.h
index db1d33d..5c41a0a 100644
--- a/vectordb.h
+++ b/vectordb.h
@@ -3,9 +3,15 @@
#include "llama.h"
-#define VDB_MAX_DOCS 1000
-#define VDB_EMBED_SIZE 768
-#define VDB_MAX_TEXT 1024
+#include <errno.h>
+
+#define VDB_MAX_DOCS 1000
+#define VDB_EMBED_SIZE 768
+#define VDB_MAX_TEXT 1024
+
+#define VDB_MAGIC 0x31424456u /* "VDB1" */
+#define VDB_VERSION 1u
+#define VDB_TOKENS 512
typedef struct {
float embedding[VDB_EMBED_SIZE];
@@ -18,6 +24,27 @@ typedef struct {
struct llama_context *embed_ctx;
} VectorDB;
+typedef struct {
+ uint32_t magic;
+ uint32_t version;
+ uint32_t embed_size;
+ uint32_t max_text;
+ uint32_t count;
+} VdbFileHeader;
+
+typedef enum {
+ VDB_SUCCESS = 0,
+ VDB_OPEN_ERR = 9001,
+ VDB_CLOSE_ERR = 9002,
+ VDB_HEADER_WRITE_ERR = 9003,
+ VDB_HEADER_READ_ERR = 9004,
+ VDB_MAGIC_MISMATCH_ERR = 9005,
+ VDB_EMBED_MISMATCH_ERR = 9006,
+ VDB_COUNT_TOO_LARGE_ERR = 9007,
+ VDB_DOC_WRITE_ERR = 9008,
+ VDB_DOC_READ_ERR = 9009,
+} VectorDBErrorCode;
+
void vdb_init(VectorDB *db, struct llama_context *embed_ctx);
void vdb_free(VectorDB *db);
@@ -26,7 +53,9 @@ void vdb_add_document(VectorDB *db, const char *text);
void vdb_embed_query(VectorDB *db, const char *text, float *out_embedding);
void vdb_search(VectorDB *db, float *query_embedding, int top_k, int *results);
-int vdb_save(const VectorDB *db, const char *path);
-int vdb_load(VectorDB *db, const char *path);
+VectorDBErrorCode vdb_save(const VectorDB *db, const char *path);
+VectorDBErrorCode vdb_load(VectorDB *db, const char *path);
+
+const char* vdb_error(VectorDBErrorCode err);
#endif