{"id":21973637,"url":"https://github.com/alash3al/vecdb","last_synced_at":"2025-10-23T17:43:48.810Z","repository":{"id":247482619,"uuid":"825963924","full_name":"alash3al/vecdb","owner":"alash3al","description":"a vector embedding database with multiple storage engines and AI embedding integrations","archived":false,"fork":false,"pushed_at":"2024-08-08T08:39:34.000Z","size":55,"stargazers_count":33,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T10:33:39.250Z","etag":null,"topics":["ai","database","gemini","machine-learning","text-embedding","vector-database","vector-embeddings"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alash3al.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-08T21:06:47.000Z","updated_at":"2025-03-12T10:08:02.000Z","dependencies_parsed_at":"2024-07-09T02:32:15.372Z","dependency_job_id":"adf92db1-2f9c-4ced-87f8-b77bb162be8f","html_url":"https://github.com/alash3al/vecdb","commit_stats":null,"previous_names":["alash3al/vecdb"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alash3al%2Fvecdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alash3al%2Fvecdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alash3al%2Fvecdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alash3al%2Fvecdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alash3al","download_url":"https://codeload.github.com/alash3al/vecdb/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251328670,"owners_count":21571959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","database","gemini","machine-learning","text-embedding","vector-database","vector-embeddings"],"created_at":"2024-11-29T15:33:46.536Z","updated_at":"2025-10-23T17:43:48.713Z","avatar_url":"https://github.com/alash3al.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"VecDB\n======\n\u003e a very simple vector embedding database, \n\u003e you can say that it is a hash-table that let you find items similar to the item you're searching for.\n\nWhy!\n====\n\u003e I'm a databases enthusiast, and this is a for fun and learning project that could be used in production ;).\n\u003e \n\u003e **P.S**: I like to re-invent the wheel in my free time, because it is my free time!\n\nData Model\n==========\n\u003e I'm using the `{key =\u003e value}` model,\n\u003e - `key` should be a unique value that represents the item.\n\u003e - `value` should be the vector itself (List of Floats).\n\nConfigurations\n==============\n\u003e by default `vecdb` searches for `config.yml` in the current working directory.\n\u003e but you can override it using the `--config /path/to/config.yml` flag by providing your own custom file path.\n\n```yaml\n# http server related configs\nserver:\n  # the address to listen on in the form of '[host]:port'\n  listen: \"0.0.0.0:3000\"\n\n# storage related configs\nstore:\n  # the driver you want to use\n  # currently vecdb supports \"bolt\" which is based on boltdb the in process embedded the database\n  driver: \"bolt\"\n  # the arguments required by the driver\n  # for bolt, it requires a key called `database` points to the path you want to store the data in.\n  args:\n    database: \"./vec.db\"\n\n# embeddings related configs\nembedder:\n  # whether to enable the embedder and all endpoints using it or not\n  enabled: true\n  # the driver you want to use, currently vecdb supports gemini\n  driver: gemini\n  # the arguments required by the driver\n  # currently gemini driver requires `api_key` and `text_embedding_model`\n  args:\n    # by default vecdb will replace anything between ${..} with the actual value from the ENV var\n    api_key: \"${GEMINI_API_KEY}\"\n    text_embedding_model: \"text-embedding-004\"\n```\n\nComponents\n===========\n- Raw Vectors Layer (low-level)\n  - send [VectorWriteRequest](#VectorWriteRequest) to `POST /v1/vectors/write` when you have a vector and want to store it somewhere.\n  - send [VectorSearchRequest](#VectorSearchRequest) to `POST /v1/vectors/search` when you have a vector and want to list all similar vectors' keys/ids ordered by cosine similarity in descending order.\n- Embedding Layer (optional)\n  - send [TextEmbeddingWriteRequest](#TextEmbeddingWriteRequest) to `POST /v1/embeddings/text/write` when you have a text and want `vecdb` to build and store the vector for you using the configured embedder (gemini for now).\n  - send [TextEmbeddingSearchRequest](#TextEmbeddingSearchRequest) to `POST /v1/embeddings/text/search` when you have a text and want `vecdb` to build a vector and search for similar vectors' keys for you ordered by cosine similarity in descending order.\n\nRequests\n========\n\n### VectorWriteRequest\n```json5\n{\n  \"bucket\": \"BUCKET_NAME\", // consider it a collection or a table\n  \"key\": \"product-id-1\", // should be unique and represents a valid value in your main data store (example: the row id in your mysql/postgres ... etc)\n  \"vector\": [1.929292, 0.3848484, -1.9383838383, ... ] // the vector you want to store \n}\n```\n\n### VectorSearchRequest\n```json5\n{\n  \"bucket\": \"BUCKET_NAME\", // consider it a collection or a table\n  \"vector\": [1.929292, 0.3848484, -1.9383838383, ... ], // you will get a list ordered by cosine-similarity in descending order\n  \"min_cosine_similarity\": 0.0, // the more you increase, the fewer data you will get\n  \"max_result_count\": 10 // max vectors to return (vecdb will first order by cosine similarity then apply the limit)\n}\n```\n\n### TextEmbeddingWriteRequest\n\u003e if you set `embedder.enabled` to `true`.\n\n```json5\n{\n  \"bucket\": \"BUCKET_NAME\", // consider it a collection or a table\n  \"key\": \"product-id-1\", // should be unique and represents a valid value in your main data store (example: the row id in your mysql/postgres ... etc)\n  \"content\": \"This is some text representing the product\" // this will be converted to a vector using the configured embedder \n}\n```\n\n### TextEmbeddingSearchRequest\n\u003e if you set `embedder.enabled` to `true`.\n\n```json5\n{\n  \"bucket\": \"BUCKET_NAME\", // consider it a collection or a table\n  \"content\": \"A Product Text\", // you will get a list ordered by cosine-similarity in descending order\n  \"min_cosine_similarity\": 0.0, // the more you increase, the fewer data you will get\n  \"max_result_count\": 10 // max vectors to return (vecdb will first order by cosine similarity then apply the limit)\n}\n```\n\nDownload/Install\n================\n- [Binary](https://github.com/alash3al/vecdb/releases)\n- [Docker Image](https://github.com/alash3al/vecdb/pkgs/container/vecdb)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falash3al%2Fvecdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falash3al%2Fvecdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falash3al%2Fvecdb/lists"}