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
from praisonai.adapters import ChromaVectorStore
from praisonai.adapters.vector_stores import PineconeVectorStoreQuick 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
- Per-instance telemetry disabled via
Settings(anonymized_telemetry=False)
Classes
ChromaVectorStore
ChromaDB vector store adapter with local persistence.
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 |
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:
| 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 |
Methods
add(texts, embeddings, metadatas=None, ids=None, namespace=None)
Add vectors to the store.
Parameters:
texts(List[str]): Document textsembeddings(List[List[float]]): Vector embeddingsmetadatas(List[dict], optional): Metadata for each documentids(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 vectortop_k(int): Number of results to returnnamespace(str, optional): Override default namespacefilter(dict, optional): Metadata filter
Returns: List[VectorRecord] – Matching records with scores. For ChromaVectorStore (v4.6.162+), VectorRecord.embedding holds each record’s stored embedding, not the query vector.
delete(ids=None, namespace=None, filter=None, delete_all=False)
Delete vectors from the store.
Parameters:
ids(List[str], optional): Specific IDs to deletenamespace(str, optional): Override default namespacefilter(dict, optional): Delete by metadata filterdelete_all(bool): Delete all vectors in the namespace. ForChromaVectorStore(v4.6.162+) this is scoped to the caller’s namespace — pass an explicitnamespace=to avoid touchingdefault.
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-keyCLI Usage
# Use ChromaDB (default)
praisonai knowledge query "What is Python?" --vector-store chroma
# Use Pinecone
praisonai knowledge query "What is Python?" --vector-store pineconeRelated
- Readers Module – Load documents
- Retrieval Module – Retrieve documents
- Reranker Module – Rerank results