Skip to main content

An easy-to-use vector database.

Project description

Powered by Dipamkara

Bhakti is

  1. A light-weight vector database

  2. Easy to use

  3. Thread safe

  4. Portable

  5. Reliable

  6. Suitable for small-sized datasets

Installation

  • From PYPI

    pip install bhakti
    
  • From Github

    Download .whl first then run

    pip install ./bhakti-X.X.X-py3-none-any.whl
    

Quick Start

Before all, make sure you've successfully installed Bhakti :)

  • Run Bhakti Server

    • To begin, create a path for storing data

      mkdir -p /path/to/db
      
    • Start server using shell command

      1. Create configuration file (.yaml)

        # bhakti.yaml
        DIMENSION: 1024
        DB_PATH: /path/to/db
        DB_ENGINE: dipamkara # optional, default to dipamkara
        CACHED: false # optional, default to false
        HOST: 0.0.0.0 # optional, default to 0.0.0.0
        PORT: 23860 # optional, default to 23860
        EOF: <eof> # optional, default to <eof>
        TIMEOUT: 4.0 # optional, default to 4.0 seconds
        BUFFER_SIZE: 256 # optional, default to 256 bytes
        VERBOSE: false # optional, default to false
        
      2. Run bhakti in shell

        # bash
        bhakti ./bhakti.yaml
        
    • Start server using Python

      # main.py
      from bhakti import BhaktiServer
      from bhakti.database import DBEngine
      
      if __name__ == '__main__':
          bhakti_server = BhaktiServer(
              dimension=1024,  # required, only vectors with 1024 dimensions are acceptable
              db_path='/path/to/db',  # required, path where stores data, portable
              db_engine=DBEngine.DIPAMKARA,  # optional, default to dipamkara
              cached=False,  # optional, default to false
              host='0.0.0.0',  # optional, default to 0.0.0.0
              port=23860,  # optional, default to 23860
              eof=b'<eof>',  # optional, default to b'<eof>'
              timeout=4.0,  # optional, default to 4.0 seconds
              buffer_size=256,  # optional, default to 256 bytes
              verbose=False  # optional, default to false
          )
          # run server
          bhakti_server.run()
      
  • Interact With A Bhakti Client

    Currently, Python(>=3.10) is supported

    # main.py
    import asyncio
    import numpy as np
    from bhakti import BhaktiClient
    from bhakti.database import Metric
    from bhakti.database import DBEngine
    
    
    async def main():
        client = BhaktiClient(
            server='127.0.0.1',  # optional, default to 127.0.0.1
            port=23860,  # optional, default to 23860
            eof=b'<eof>',  # optional, default to b'<eof>'
            timeout=4.0,  # optional, default to 4.0 seconds
            buffer_size=256,  # optional, default to 256 bytes
            db_engine=DBEngine.DIPAMKARA,  # optional, default to dipamkara
            verbose=False  # optional, default to false
        )
        vector = np.random.randn(1024)
        await client.create(vector=vector, document={'age': 31, 'gender': 'male'})
        await client.create_index('age')
        await client.create_index('gender')
        results = await client.find_documents_by_vector_indexed(
            query='age <= 31 && gender != "female"', 
            vector=vector,
            metric=Metric.EUCLIDEAN_Z_SCORE, 
            top_k=3
        )
        print(results)
        
    
    if __name__ == '__main__':
        asyncio.run(main())
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bhakti-0.2.16.tar.gz (52.0 kB view details)

Uploaded Source

Built Distribution

bhakti-0.2.16-py3-none-any.whl (45.8 kB view details)

Uploaded Python 3

File details

Details for the file bhakti-0.2.16.tar.gz.

File metadata

  • Download URL: bhakti-0.2.16.tar.gz
  • Upload date:
  • Size: 52.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for bhakti-0.2.16.tar.gz
Algorithm Hash digest
SHA256 4ab886d153fbec0f674fc923e7e772a7413e682d20366d170c7ff5a3065911af
MD5 b0c87403223b4e2983a845384a9ccfec
BLAKE2b-256 5464fecfb776dd665e87659677ef12f6c87c551fb959e308dc873f99187c2426

See more details on using hashes here.

File details

Details for the file bhakti-0.2.16-py3-none-any.whl.

File metadata

  • Download URL: bhakti-0.2.16-py3-none-any.whl
  • Upload date:
  • Size: 45.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for bhakti-0.2.16-py3-none-any.whl
Algorithm Hash digest
SHA256 3aebccb123c509a78daa0878e5b78bceb81516676224191ce393975a210f8d33
MD5 f19743b0bd255108cdd0467be0ab4820
BLAKE2b-256 5486f135164e8331b1562d6a7e2ff93e17241af002f659e443a5c50191a8acad

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page