Metadata-Version: 2.4
Name: qmem
Version: 0.1.3
Summary: Memory library for seamless data ingestion, storage, and retrieval with customizable embedding models.
Author-email: Aniruddha <aniruddhabolakhe2907@gmail.com>
License: MIT
Keywords: vector-db,rag,embeddings,retrieval
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Database
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: qdrant-client>=1.7.0
Requires-Dist: pydantic>=2.6
Requires-Dist: typer>=0.12
Requires-Dist: rich>=13.7
Requires-Dist: tomlkit>=0.12
Requires-Dist: questionary>=2.0
Requires-Dist: openai>=1.30.0
Requires-Dist: huggingface_hub>=0.24
Requires-Dist: pymongo>=4.7
Provides-Extra: minilm
Requires-Dist: sentence-transformers>=2.6; extra == "minilm"
Requires-Dist: torch>=2; platform_machine != "wasm32" and extra == "minilm"

# QMem

QMem is a toolkit for vector search.  
It provides a **command-line interface (CLI)** and a **Python library** for interacting with a Qdrant database.  
It is designed for **directness and utility**, offering a guided CLI for interactive tasks and a minimal Python API for programmatic control.

---

## 🚀 Installation

```bash
pip install qmem
```

---

## 🛠️ Commands

### 🔹 init
Initializes the configuration.

**CLI**
```bash
qmem init
```

---

### 🔹 create
Creates a vector collection.

**CLI**
```bash
qmem create
```

**Library**
```python
import qmem

qmem.create(
    collection_name="my-collection",
    dim=1536,
    distance_metric="cosine"
)
```

---

### 🔹 ingest
Ingests data into a collection.

**CLI**
```bash
qmem ingest
```

**Library**
```python
import qmem

qmem.ingest(
    file="path/to/data.jsonl",
    embed_field="text"
)
```

---

### 🔹 retrieve
Performs a vector search.

**CLI**
```bash
qmem retrieve "your query text"
```

**Library**
```python
import qmem

results = qmem.retrieve(
    query="your query text",
    top_k=3
)
print(results)
```

---

### 🔹 index
Creates an index on metadata for filtering.

**CLI**
```bash
qmem index
```

---

### 🔹 filter
Retrieves records by metadata.

**CLI**
```bash
qmem filter
```

**Library**
```python
import qmem

filter_payload = {
  "must": [
    { "key": "genre", "match": { "value": "Sci-Fi" } }
  ]
}

results = qmem.filter(filter_json=filter_payload, limit=10)
print(results)
```

---

### 🔹 retrieve-filter
Combines vector search with metadata filtering.

**CLI**
```bash
qmem retrieve-filter "your query text"
```

**Library**
```python
import qmem

filter_payload = {
  "must": [
    { "key": "genre", "match": { "value": "Sci-Fi" } }
  ]
}

results = qmem.retrieve_filter(
    query="your query text",
    filter_json=filter_payload,
    top_k=2
)
print(results)
```

---

## 📜 License
MIT
