TypeGraphTypeGraphTypeGraphDocs
Back to Dashboard
IntroductionGuidesDatabase AdaptersEmbeddersExtraction LLMs
SetupBucketsDocumentsEventsThreadsSearchMemoryGraphJobsPolicyTypes

Embedders

Embedding models convert text into high-dimensional vectors that power semantic search. TypeGraph uses the Vercel AI SDK format, so any provider that implements it works out of the box. The dimensions value must match your chosen model and stay consistent across deploys - changing dimensions after data has been ingested requires re-embedding everything.

@ai-sdk/openai

@ai-sdk/openai
embedding.ts
import { openai } from '@ai-sdk/openai'

const embeddingModel = openai.embedding('text-embedding-3-small')

// Alternatives:
// openai.embedding('text-embedding-3-large')   // higher quality, 3072 dims

@ai-sdk/google

@ai-sdk/google
embedding.ts
import { google } from '@ai-sdk/google'

const embeddingModel = google.embedding('gemini-embedding-001')

@ai-sdk/cohere

@ai-sdk/cohere
embedding.ts
import { cohere } from '@ai-sdk/cohere'

const embeddingModel = cohere.embedding('embed-english-v3.0')

// Alternatives:
// cohere.embedding('embed-multilingual-v3.0')  // 100+ languages

AI Gateway (OpenAI)

@ai-sdk/gateway
embedding.ts
import { gateway } from '@ai-sdk/gateway'

const embeddingModel = gateway.embeddingModel('openai/text-embedding-3-small')

// Alternatives:
// gateway.embeddingModel('openai/text-embedding-3-large')
// gateway.embeddingModel('cohere/embed-english-v3.0')

AI Gateway (Cohere)

@ai-sdk/gateway
embedding.ts
import { gateway } from '@ai-sdk/gateway'

const embeddingModel = gateway.embeddingModel('cohere/embed-english-v3.0')

// Alternatives:
// gateway.embeddingModel('cohere/embed-multilingual-v3.0')

Usage in Config

Pass the embedding model and its dimensions to the TypeGraph config:

config.ts
const config = {
  embedding: {
    model: embeddingModel,
    dimensions: 1536, // must match your chosen model
  },
  // ...
}

Provider Options

Some providers accept extra configuration via providerOptions. This is part of the AISDKEmbeddingInput type that TypeGraph uses for embedding configuration:

config.ts
import { gateway } from '@ai-sdk/gateway'

const config = {
  embedding: {
    model: gateway.embeddingModel('voyage/voyage-4-large'),
    dimensions: 512,
    providerOptions: { voyage: { outputDimension: 512, inputType: 'document' } },
  },
  // ...
}

Asymmetric Embeddings

You can use separate embedding models (or the same model with different providerOptions) for ingestion vs query via the embedding and searchEmbedding config fields. This is useful for providers like Voyage that distinguish between document and query input types:

config.ts
import { gateway } from '@ai-sdk/gateway'

const config = {
  // Ingest embedding - optimized for documents
  embedding: {
    model: gateway.embeddingModel('voyage/voyage-4-large'),
    dimensions: 512,
    providerOptions: { voyage: { outputDimension: 512, inputType: 'document' } },
  },
  // Search embedding - optimized for queries
  searchEmbedding: {
    model: gateway.embeddingModel('voyage/voyage-4-lite'),
    dimensions: 512,
    providerOptions: { voyage: { outputDimension: 512, inputType: 'query' } },
  },
  // ...
}
Self-Hosted Initialization GuideDatabase Adapters