Integrations

Vector stores, state stores, caches, and embedding providers

The SDK defines storage interfaces that decouple your application from specific backends. Production-ready implementations are available in the integrations/ package.

Storage Interfaces

VectorStore

type VectorStore interface {
    Upsert(ctx context.Context, vectors []Vector) error
    Query(ctx context.Context, vector []float64, limit int, filter map[string]any) ([]VectorMatch, error)
    Delete(ctx context.Context, ids []string) error
}

StateStore

type StateStore interface {
    Save(ctx context.Context, state *AgentState) error
    Load(ctx context.Context, agentID, sessionID string) (*AgentState, error)
    Delete(ctx context.Context, agentID, sessionID string) error
    List(ctx context.Context, agentID string) ([]string, error)
}

CacheStore

type CacheStore interface {
    Get(ctx context.Context, key string) ([]byte, bool, error)
    Set(ctx context.Context, key string, value []byte, ttl time.Duration) error
    Delete(ctx context.Context, key string) error
}

Vector Stores

In-Memory

import "github.com/xraph/ai-sdk/integrations/vectorstores/memory"

store := memory.NewMemoryVectorStore()

Best for development and testing.

pgvector (PostgreSQL)

import "github.com/xraph/ai-sdk/integrations/vectorstores/pgvector"

store, err := pgvector.NewPgvectorStore(pgvector.Config{
    ConnectionString: "postgres://user:pass@localhost:5432/db",
    TableName:        "embeddings",
    Dimensions:       1536,
})

Qdrant

import "github.com/xraph/ai-sdk/integrations/vectorstores/qdrant"

store, err := qdrant.NewQdrantStore(qdrant.Config{
    Host:       "localhost",
    Port:       6334,
    Collection: "documents",
})

Pinecone

import "github.com/xraph/ai-sdk/integrations/vectorstores/pinecone"

store, err := pinecone.NewPineconeStore(pinecone.Config{
    APIKey:      "your-api-key",
    Environment: "us-east-1",
    IndexName:   "my-index",
})

Weaviate

import "github.com/xraph/ai-sdk/integrations/vectorstores/weaviate"

store, err := weaviate.NewWeaviateStore(weaviate.Config{
    Host:   "localhost:8080",
    Scheme: "http",
    Class:  "Documents",
})

Chroma

import "github.com/xraph/ai-sdk/integrations/vectorstores/chroma"

store, err := chroma.NewChromaStore(chroma.Config{
    Host:       "localhost",
    Port:       8000,
    Collection: "documents",
})

State Stores

In-Memory

import "github.com/xraph/ai-sdk/integrations/statestores/memory"

store := memory.NewMemoryStateStore()

PostgreSQL

import "github.com/xraph/ai-sdk/integrations/statestores/postgres"

store, err := postgres.NewPostgresStateStore(postgres.Config{
    ConnectionString: "postgres://user:pass@localhost:5432/db",
    TableName:        "agent_states",
})

Redis

import "github.com/xraph/ai-sdk/integrations/statestores/redis"

store, err := redis.NewRedisStateStore(redis.Config{
    Address:  "localhost:6379",
    Password: "",
    DB:       0,
    Prefix:   "ai-sdk:",
})

DynamoDB

import "github.com/xraph/ai-sdk/integrations/statestores/dynamodb"

store, err := dynamodb.NewDynamoDBStateStore(dynamodb.Config{
    Region:    "us-east-1",
    TableName: "agent-states",
})

Cache Stores

In-Memory (LRU)

import "github.com/xraph/ai-sdk/integrations/caches/memory"

cache := memory.NewMemoryCache(memory.Config{
    MaxSize: 1000,
    DefaultTTL: 1 * time.Hour,
})

Redis

import "github.com/xraph/ai-sdk/integrations/caches/redis"

cache, err := redis.NewRedisCache(redis.Config{
    Address: "localhost:6379",
    Prefix:  "ai-cache:",
})

Memcached

import "github.com/xraph/ai-sdk/integrations/caches/memcached"

cache, err := memcached.NewMemcachedCache(memcached.Config{
    Servers: []string{"localhost:11211"},
})

Embedding Providers

OpenAI Embeddings

import "github.com/xraph/ai-sdk/integrations/embeddings/openai"

embedder, err := openai.NewOpenAIEmbedder(openai.Config{
    APIKey: "sk-...",
    Model:  "text-embedding-3-small",
})

Cohere Embeddings

import "github.com/xraph/ai-sdk/integrations/embeddings/cohere"

embedder, err := cohere.NewCohereEmbedder(cohere.Config{
    APIKey: "...",
    Model:  "embed-english-v3.0",
})

HuggingFace Embeddings

import "github.com/xraph/ai-sdk/integrations/embeddings/huggingface"

embedder, err := huggingface.NewHuggingFaceEmbedder(huggingface.Config{
    APIKey: "hf_...",
    Model:  "sentence-transformers/all-MiniLM-L6-v2",
})

Ollama Embeddings

import "github.com/xraph/ai-sdk/integrations/embeddings/ollama"

embedder, err := ollama.NewOllamaEmbedder(ollama.Config{
    BaseURL: "http://localhost:11434",
    Model:   "nomic-embed-text",
})

Choosing an Integration

NeedRecommended
Development/testingIn-memory stores
Production vector searchpgvector or Qdrant
Managed vector servicePinecone
Agent state persistencePostgreSQL or Redis
Response cachingRedis
EmbeddingsOpenAI text-embedding-3-small

How is this guide?

On this page