Metadata-Version: 2.1
Name: nnext
Version: 0.0.31
Summary: Python client library for the NNext. A ⚡ blazingly fast, 🔍 nearest-neighbors vector search engine for building delightful ML apps
Home-page: https://nnext.ai
Author: NNext, co
Author-email: team@nnext.ai
License: Apache 2.0
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Requires-Dist: grpcio (>=1.44.0) ; python_version >= "3.6"
Requires-Dist: protobuf (>=3.20.0) ; python_version >= "3.6"



.. image:: https://d135j1zm1liera.cloudfront.net/nnext-asssets.010.png
   :target: https://d135j1zm1liera.cloudfront.net/nnext-asssets.010.png
   :alt: alt text


About
-----

NNext is a


* ⚡ blazingly fast
* 📖 source-available `[Elastic License 2.0] <https://www.elastic.co/licensing/elastic-license>`_
* 🔍 nearest-neighbors vector search engine

Quick Start
-----------

Here's a quick example showcasing how you can create an index, insert vectors/documents and search it on NNext.

Let's begin by starting the NNext server via Docker:

.. code-block::

   docker run -p 6040:6040 -v/tmp/data:/data nnext/nnext:latest --data-dir /data --api-key=Hu52dwsas2AdxdE

We have a `API Client <#api-clients>`_ in python only, but let's use it for this example.

Install the Python client for NNext:

.. code-block::

   pip install nnext

We can now initialize the client and create a ``movies`` index:

.. code-block:: python

   import nnext
   from nnext import _and, _eq, _gte, _in

   nnclient = nnext.Client({
     'api_key': 'Hu52dwsas2AdxdE',
     'nodes': [{
       'host': 'localhost',
       'port': '6040'
     }],
     'connection_timeout_seconds': 2
   })

Broadly speaking, you can create two types of indices

1. Simple indices
^^^^^^^^^^^^^^^^^

.. code-block:: python

   nnindex = client.index.create({
     "name": "movies_simple",
     "index_type": "approximated",
     "dims": 768
   })

You can simply insert vector embeddings into the index.

1. Compound indices
^^^^^^^^^^^^^^^^^^^

.. code-block:: python

   nnindex = client.index.create({
     "name": "movies",
     "schema": {
         "id" : "string", #⬅ inferred primary key
         "title" : "string",
         "released_year" : "int32",
         "genre" :  "float",
         "wikipage" : "string",
         "plot" : "string",
         "rating" :  "float"
     },
     "index_type": "approximated",
     "dims": 768
   })

Now, let's add a vector to the collection we just created:

.. code-block:: python

   vector = {
    "id": "124",
    "company_name": "Stark Industries",
    "num_employees": 5215,
    "country": "USA",
   }

   nnindex.documents.create(document)

Finally, let's search for the document we just indexed:

.. code-block:: python

   q_filter = {
       _and: [
           { "Release Year": { _gte: 2015 } },
           { "Genre": { _eq: "comedy" } },
           { "actors": { _in: ["Russell Crowe"] } }
       ]
   }

   client.collections['companies'].documents.search(search_parameters)

Contributing
------------

Introduction
^^^^^^^^^^^^

First off, 🙏🏾 thank you for considering contributing to nnext. We value community contributions!

How can you help?
^^^^^^^^^^^^^^^^^

You may already know what you want to contribute -- a fix for a bug you encountered, or a new feature your team wants to use.

If you don't know what to contribute, keep an open mind! Here's some examples of helpful contributions that mean 
less work for you


* Improving documentation
* bug triaging
* writing tutorials

Checkout `guide to contributing <https://github.com/redis/redis-py/blob/master/CONTRIBUTING.md>`_ to learn more.

Documentation
-------------

All NNext Server and Client documentation, including pynext integration articles and helpful recipes, can be found at:

`https://nnext.ai/docs/ <https://nnext.ai/docs>`_


