Metadata-Version: 2.4
Name: flexinfer-vector-utils
Version: 0.2.1
Summary: Unified vector storage and embedding utilities for FlexInfer services
Author-email: Cody Blevins <cody@flexinfer.ai>
License: MIT
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.11
Requires-Dist: numpy>=1.20.0
Requires-Dist: openai>=1.0.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: qdrant-client>=1.7.0
Provides-Extra: dev
Requires-Dist: mypy>=1.0.0; extra == 'dev'
Requires-Dist: pre-commit>=3.5.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: local
Requires-Dist: sentence-transformers>=2.2.0; extra == 'local'
Requires-Dist: torch>=2.0.0; extra == 'local'
Description-Content-Type: text/markdown

![Banner](assets/banner.png)
# flexinfer-vector-utils

![Header](assets/header.svg)

[![pipeline status](https://gitlab.flexinfer.ai/libs/py-vector-utils/badges/main/pipeline.svg)](https://gitlab.flexinfer.ai/libs/py-vector-utils/-/commits/main)
[![coverage report](https://gitlab.flexinfer.ai/libs/py-vector-utils/badges/main/coverage.svg)](https://gitlab.flexinfer.ai/libs/py-vector-utils/-/commits/main)

Unified vector storage and embedding utilities for FlexInfer services.

## Features

- **Hybrid Embedder**: Automatic fallback from OpenAI/vLLM to local `sentence-transformers` models.
- **Qdrant Storage**: Generalized async client for Qdrant collection management and search.
- **Batching**: Optimized batch processing for high-throughput embedding generation.

## Usage

### Embeddings

```python
from vector_utils.embeddings import HybridEmbedder

# Tries OpenAI -> vLLM -> Local fallback
embedder = HybridEmbedder(
    openai_api_key="...",
    enable_local_fallback=True
)

embeddings = await embedder.embed_batch(["text1", "text2"])
```

### Vector Store

```python
from vector_utils.store import QdrantStore, VectorItem

store = QdrantStore(url="http://qdrant:6333", collection_name="docs")
await store.initialize()

await store.upsert([
    VectorItem(id="1", vector=[0.1, ...], payload={"type": "doc"})
])
```

## Installation

```bash
pip install flexinfer-vector-utils
# With local fallback support
pip install "flexinfer-vector-utils[local]"
```
