Skip to content

Pinecone Vector Configuration Guide

Pinecone Vector Configuration Guide

Comprehensive configuration reference for HeliosDB’s Pinecone vector protocol support.

Connection Configuration

Basic Connection

from pinecone import Pinecone
# Connect to HeliosDB (Pinecone-compatible)
pc = Pinecone(
api_key="your-api-key",
host="http://localhost:8080"
)
# Access index
index = pc.Index("my-vectors")

Connection Parameters

ParameterTypeDefaultDescription
api_keystringRequiredAPI authentication key
hoststringRequiredHeliosDB vector endpoint
indexstringRequiredIndex name
namespacestring""Optional namespace

REST API Configuration

Base URL

http://localhost:8080/vectors/v1

Authentication Headers

Terminal window
curl -X POST "http://localhost:8080/vectors/v1/upsert" \
-H "Api-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{...}'

Request Headers

HeaderRequiredDescription
Api-KeyYesAPI authentication key
Content-TypeYesapplication/json
AcceptNoResponse format

Index Configuration

Creating an Index

# Create index with configuration
pc.create_index(
name="my-vectors",
dimension=1536,
metric="cosine",
spec=ServerlessSpec(
cloud="heliosdb",
region="default"
)
)

Index Parameters

ParameterTypeDefaultDescription
namestringRequiredIndex name
dimensionintRequiredVector dimension
metricstringcosineSimilarity metric
podsint1Number of pods
replicasint1Number of replicas
pod_typestringp1.x1Pod type

Similarity Metrics

MetricDescriptionUse Case
cosineCosine similarityText embeddings
euclideanEuclidean distanceDense vectors
dotproductDot productNormalized vectors

Vector Operations Configuration

Upsert Configuration

# Upsert with options
index.upsert(
vectors=[
{
"id": "vec1",
"values": [0.1, 0.2, ...],
"metadata": {"category": "A"}
}
],
namespace="production",
show_progress=True
)

Query Configuration

# Query with options
results = index.query(
vector=[0.1, 0.2, ...],
top_k=10,
filter={"category": {"$eq": "A"}},
include_values=True,
include_metadata=True,
namespace="production"
)

Query Parameters

ParameterTypeDefaultDescription
vectorlistRequiredQuery vector
top_kint10Number of results
filterdictNoneMetadata filter
include_valuesboolFalseInclude vectors
include_metadataboolFalseInclude metadata
namespacestring""Namespace

Filtering Configuration

Filter Operators

OperatorDescriptionExample
$eqEqual{"field": {"$eq": "value"}}
$neNot equal{"field": {"$ne": "value"}}
$gtGreater than{"field": {"$gt": 10}}
$gteGreater or equal{"field": {"$gte": 10}}
$ltLess than{"field": {"$lt": 10}}
$lteLess or equal{"field": {"$lte": 10}}
$inIn list{"field": {"$in": ["a", "b"]}}
$ninNot in list{"field": {"$nin": ["a", "b"]}}

Compound Filters

# AND filter
filter = {
"$and": [
{"category": {"$eq": "A"}},
{"price": {"$lt": 100}}
]
}
# OR filter
filter = {
"$or": [
{"category": {"$eq": "A"}},
{"category": {"$eq": "B"}}
]
}

Batch Configuration

Batch Upsert

# Batch configuration
index.upsert(
vectors=large_vector_list,
batch_size=100, # Vectors per batch
show_progress=True
)

Batch Parameters

ParameterDefaultDescription
batch_size100Vectors per batch
pool_threads1Parallel threads
show_progressFalseProgress bar

Namespace Configuration

Working with Namespaces

# Upsert to specific namespace
index.upsert(
vectors=[...],
namespace="production"
)
# Query specific namespace
results = index.query(
vector=[...],
namespace="production"
)
# Delete from namespace
index.delete(
ids=["vec1", "vec2"],
namespace="production"
)
# List namespaces
stats = index.describe_index_stats()
namespaces = stats.namespaces

Hybrid Search Configuration

Dense + Sparse Vectors

# Upsert with sparse vectors
index.upsert(
vectors=[
{
"id": "vec1",
"values": [0.1, 0.2, ...], # Dense vector
"sparse_values": {
"indices": [1, 5, 100],
"values": [0.5, 0.3, 0.1]
},
"metadata": {"category": "A"}
}
]
)
# Hybrid query
results = index.query(
vector=[0.1, 0.2, ...],
sparse_vector={
"indices": [1, 5],
"values": [0.5, 0.3]
},
top_k=10
)

HeliosDB-Specific Settings

Server Configuration

heliosdb.toml
[pinecone]
enabled = true
port = 8080
bind = "0.0.0.0"
max_connections = 10000
[pinecone.auth]
api_key = "your-secure-api-key"
[pinecone.index]
default_dimension = 1536
default_metric = "cosine"
max_vectors = 10000000
max_metadata_size = 40960
[pinecone.performance]
batch_size = 1000
query_threads = 8
index_threads = 4

Environment Variables

VariableDescription
HELIOSDB_PINECONE_PORTVector API port
HELIOSDB_PINECONE_API_KEYAPI authentication key
HELIOSDB_PINECONE_MAX_DIMENSIONMax vector dimension
HELIOSDB_PINECONE_MAX_VECTORSMax vectors per index

Performance Tuning

Query Optimization

# Optimize for speed
results = index.query(
vector=[...],
top_k=10,
include_values=False, # Don't return vectors
include_metadata=False # Don't return metadata
)
# Optimize for accuracy
results = index.query(
vector=[...],
top_k=100, # Fetch more, filter client-side
include_metadata=True
)

Batch Insert Optimization

# Optimal batch size
BATCH_SIZE = 100 # Recommended for most cases
# Insert in batches
for i in range(0, len(vectors), BATCH_SIZE):
batch = vectors[i:i+BATCH_SIZE]
index.upsert(vectors=batch)

Rate Limiting

Default Limits

OperationLimitNotes
Upsert100 vectors/requestConfigurable
Query10 top_kDefault
Fetch100 IDs/requestMaximum
Delete1000 IDs/requestMaximum

Related: README.md | COMPATIBILITY.md | EXAMPLES.md

Last Updated: December 2025