Skip to main content

Vector Store Module

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

Import

from praisonai.adapters import ChromaVectorStore
from praisonai.adapters.vector_stores import PineconeVectorStore

Quick Example

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
  • Automatic telemetry disabling

Classes

ChromaVectorStore

ChromaDB vector store adapter with local persistence.
from praisonai.adapters import ChromaVectorStore

store = ChromaVectorStore(
    namespace="default",
    persist_directory=".praison/chroma"
)
Parameters:
ParameterTypeDefaultDescription
configdictNoneConfiguration options
namespacestr"default"Collection namespace
persist_directorystr".praison/chroma"Storage directory
Requires chromadb package: pip install chromadb

PineconeVectorStore

Pinecone cloud vector store adapter.
from praisonai.adapters.vector_stores import PineconeVectorStore

store = PineconeVectorStore(
    api_key="your-api-key",
    index_name="praisonai",
    namespace="default"
)
Parameters:
ParameterTypeDefaultDescription
api_keystrPINECONE_API_KEY envPinecone API key
index_namestr"praisonai"Pinecone index name
namespacestr"default"Vector namespace
Requires pinecone package: pip install pinecone

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

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

# Pinecone
export PINECONE_API_KEY=your-api-key

CLI Usage

# Use ChromaDB (default)
praisonai knowledge query "What is Python?" --vector-store chroma

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