Metadata-Version: 2.4
Name: milvusmodel.py
Version: 0.2.1b0
Summary: SQLModel-like library for Milvus
Author-email: Brian Ferri <me@brianferri.dev>
Project-URL: Homepage, https://github.com/brianferri/PyMilvusModel
Project-URL: Issues, https://github.com/brianferri/PyMilvusModel/issues
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Classifier: Topic :: Database
Classifier: Topic :: Database :: Database Engines/Servers
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic>=2.9.2
Requires-Dist: pydantic-core>=2.23.4
Requires-Dist: pymilvus>=2.5.4
Provides-Extra: dev
Requires-Dist: milvus-lite; extra == "dev"
Dynamic: license-file

# PyMilvusModel

Inspired by [SQLModel](https://sqlmodel.tiangolo.com/), PyMilvusModel:

> is a library for interacting with [Milvus](https://milvus.io/) databases from Python code, with Python objects.

and follows the same paradigm, using Python type annotations and powered by [Pydantic](https://docs.pydantic.dev/latest/)

## Installation

```sh
pip install milvusmodel.py
```

## Example Usage

```py
from typing import List, Optional
from typing_extensions import Annotated
from pymilvus import MilvusClient, DataType
from pymilvusmodel import MilvusIndexParam, MilvusField, MilvusModel


class ExampleModel(MilvusModel):
    indexes: list[MilvusIndexParam] = [
        MilvusIndexParam("vector", "IVF_FLAT", "vector_index", metric_type="COSINE", params={
            "nlist": 128
        })
    ]
    id: Annotated[
        Optional[int],
        MilvusField(name="id", dtype=DataType.INT64,
                    is_primary=True, auto_id=True)
    ] = None
    vector: Annotated[
        List[float],
        MilvusField(name="vector", dtype=DataType.FLOAT_VECTOR, dim=2)
    ]


MILVUS_CLIENT = MilvusClient("http://localhost:19530")
MilvusModel.metadata.create_all(MILVUS_CLIENT)
print(MILVUS_CLIENT.list_collections()) # ['ExampleModel']
ExampleModel.insert(ExampleModel(vector=[0, 1]))
print(ExampleModel.query(filter="id>=0")) # [ExampleModel(indexes=[<pymilvusmodel.index.MilvusIndexParam object at 0x105c825d0>], id=456328785400861845, vector=[0.0, 1.0])]
```
