> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Vector Store Module

> Vector storage adapters for semantic search and document retrieval

# Vector Store Module

The Vector Store module provides concrete implementations of vector storage backends for semantic search and document retrieval.

## Import

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonai.adapters import ChromaVectorStore
from praisonai.adapters.vector_stores import PineconeVectorStore
```

## Quick Example

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonai.adapters import ChromaVectorStore

# Create ChromaDB vector store
store = ChromaVectorStore(
    namespace="my_documents",
    persist_directory=".praison/chroma"
)

# Add documents with embeddings
ids = store.add(
    texts=["Document 1", "Document 2"],
    embeddings=[[0.1, 0.2, ...], [0.3, 0.4, ...]],
    metadatas=[{"source": "file1.txt"}, {"source": "file2.txt"}]
)

# Query by similarity
results = store.query(embedding=[0.1, 0.2, ...], top_k=5)
```

## Features

* Multiple backend support (ChromaDB, Pinecone)
* Namespace-based document organization
* Persistent local storage with ChromaDB
* Cloud vector database integration with Pinecone
* Lazy loading of optional dependencies
* Per-instance telemetry disabled via `Settings(anonymized_telemetry=False)`

<Note>
  **ChromaDB telemetry:** PraisonAI's ChromaDB client disables anonymous telemetry via per-instance `Settings(anonymized_telemetry=False)`. It no longer sets the `ANONYMIZED_TELEMETRY=False` environment variable globally (changed in PR #2070). If your application uses additional ChromaDB clients that should also opt out, set `os.environ['ANONYMIZED_TELEMETRY'] = 'False'` yourself before constructing them.
</Note>

## Classes

### `ChromaVectorStore`

ChromaDB vector store adapter with local persistence.

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonai.adapters import ChromaVectorStore

store = ChromaVectorStore(
    namespace="default",
    persist_directory=".praison/chroma"
)
```

**Parameters:**

| Parameter           | Type   | Default             | Description           |
| ------------------- | ------ | ------------------- | --------------------- |
| `config`            | `dict` | `None`              | Configuration options |
| `namespace`         | `str`  | `"default"`         | Collection namespace  |
| `persist_directory` | `str`  | `".praison/chroma"` | Storage directory     |

<Note>
  Requires `chromadb` package: `pip install chromadb`
</Note>

### `PineconeVectorStore`

Pinecone cloud vector store adapter.

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonai.adapters.vector_stores import PineconeVectorStore

store = PineconeVectorStore(
    api_key="your-api-key",
    index_name="praisonai",
    namespace="default"
)
```

**Parameters:**

| Parameter    | Type  | Default                | Description         |
| ------------ | ----- | ---------------------- | ------------------- |
| `api_key`    | `str` | `PINECONE_API_KEY` env | Pinecone API key    |
| `index_name` | `str` | `"praisonai"`          | Pinecone index name |
| `namespace`  | `str` | `"default"`            | Vector namespace    |

<Note>
  Requires `pinecone` package: `pip install pinecone`
</Note>

## Methods

### `add(texts, embeddings, metadatas=None, ids=None, namespace=None)`

Add vectors to the store.

**Parameters:**

* `texts` (List\[str]): Document texts
* `embeddings` (List\[List\[float]]): Vector embeddings
* `metadatas` (List\[dict], optional): Metadata for each document
* `ids` (List\[str], optional): Custom IDs (auto-generated if not provided)
* `namespace` (str, optional): Override default namespace

**Returns:** `List[str]` - IDs of added documents

### `query(embedding, top_k=10, namespace=None, filter=None)`

Query vectors by similarity.

**Parameters:**

* `embedding` (List\[float]): Query vector
* `top_k` (int): Number of results to return
* `namespace` (str, optional): Override default namespace
* `filter` (dict, optional): Metadata filter

**Returns:** `List[VectorRecord]` - Matching records with scores

### `delete(ids=None, namespace=None, filter=None, delete_all=False)`

Delete vectors from the store.

**Parameters:**

* `ids` (List\[str], optional): Specific IDs to delete
* `namespace` (str, optional): Override default namespace
* `filter` (dict, optional): Delete by metadata filter
* `delete_all` (bool): Delete all vectors in namespace

**Returns:** `int` - Number of deleted vectors

### `count(namespace=None)`

Get count of vectors in the store.

**Returns:** `int` - Vector count

### `get(ids, namespace=None)`

Get vectors by ID.

**Parameters:**

* `ids` (List\[str]): IDs to retrieve

**Returns:** `List[VectorRecord]` - Retrieved records

## Example: Full Workflow

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonai.adapters import ChromaVectorStore

# Initialize store
store = ChromaVectorStore(namespace="knowledge_base")

# Add documents
texts = ["Python is a programming language", "Machine learning uses data"]
embeddings = get_embeddings(texts)  # Your embedding function

ids = store.add(
    texts=texts,
    embeddings=embeddings,
    metadatas=[{"topic": "programming"}, {"topic": "ml"}]
)

# Query
query_embedding = get_embeddings(["What is Python?"])[0]
results = store.query(embedding=query_embedding, top_k=3)

for r in results:
    print(f"Score: {r.score:.3f} - {r.text[:50]}...")

# Count
print(f"Total documents: {store.count()}")

# Delete
store.delete(ids=ids[:1])
```

## Environment Variables

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# Pinecone
export PINECONE_API_KEY=your-api-key
```

## CLI Usage

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# Use ChromaDB (default)
praisonai knowledge query "What is Python?" --vector-store chroma

# Use Pinecone
praisonai knowledge query "What is Python?" --vector-store pinecone
```

## Related

* [Readers Module](/docs/sdk/praisonai/readers) - Load documents
* [Retrieval Module](/docs/sdk/praisonai/retrieval) - Retrieve documents
* [Reranker Module](/docs/sdk/praisonai/reranker) - Rerank results
