Provider Markdown Export
Copy the complete documentation for a specific provider as a single Markdown file.
Export complete provider-specific documentation as a single Markdown file. Useful for pasting into LLMs, internal wikis, or offline reference.
Preview: Snowflake Markdown
# Embedd.to — Snowflake Integration Guide
## Overview
Embedd.to connects to your Snowflake database, automatically generates and maintains vector embeddings, and provides a unified query API for semantic search.
Snowflake supports both **managed mode** (vectors in Qdrant) and **platform mode** (vectors in your Snowflake database).
## Authentication
All requests require:
- `Authorization: Bearer sk_your_api_key` header
- `X-Environment-Id: env_...` header
## Step 1: Create a Connection
```bash
curl -X POST https://api.embedd.to/v1/providers/snowflake/connections \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "my-snowflake",
"mode": "managed",
"credentials": {
"auth_method": "password",
"account": "myorg-account",
"user": "EMBEDD_USER",
"password": "secure_password",
"warehouse": "COMPUTE_WH",
"database": "ANALYTICS",
"schema": "PUBLIC",
"role": "EMBEDD_ROLE"
}
}'
```
### Snowflake Credentials
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| auth_method | string | Yes | `password` or `key_pair` |
| account | string | Yes | Snowflake account identifier |
| user | string | Yes | Username |
| password | string | Conditional | Required for password auth |
| private_key | string | Conditional | PEM-encoded key for key_pair auth |
| warehouse | string | No | Warehouse name |
| database | string | No | Database name |
| schema | string | No | Schema name (default: PUBLIC) |
| role | string | No | Role name |
### Required Permissions
```sql
GRANT USAGE ON DATABASE ANALYTICS TO ROLE EMBEDD_ROLE;
GRANT USAGE ON SCHEMA ANALYTICS.PUBLIC TO ROLE EMBEDD_ROLE;
GRANT SELECT ON TABLE ANALYTICS.PUBLIC.PRODUCTS TO ROLE EMBEDD_ROLE;
-- For platform mode:
GRANT CREATE TABLE ON SCHEMA ANALYTICS.PUBLIC TO ROLE EMBEDD_ROLE;
```
## Step 2: Test the Connection
```bash
curl -X POST https://api.embedd.to/v1/connections/{connection_id}/test \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123"
```
## Step 3: Register an Embedding Provider (Managed Mode)
For managed mode, register an embedding provider. For platform mode with Cortex, skip this step.
```bash
curl -X POST https://api.embedd.to/v1/embedding-providers \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "my-openai",
"provider": "openai",
"api_key": "sk-proj-...",
"default_model": "text-embedding-3-small"
}'
```
## Step 4: Create a Vector Table
### Managed Mode (vectors in Qdrant)
```bash
curl -X POST https://api.embedd.to/v1/vector-tables \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "product-search",
"connection_id": "conn_abc123",
"embedding_provider_id": "ep_abc123",
"source_table": "PRODUCTS",
"primary_key_column": "ID",
"columns": [
{"name": "DESCRIPTION", "role": "embedding", "ordinal": 1},
{"name": "CATEGORY", "role": "metadata", "filter_type": "keyword"},
{"name": "PRICE", "role": "metadata", "filter_type": "float"}
],
"embedding_model": "text-embedding-3-small",
"embedding_dimensions": 1536,
"mode": "managed",
"sync_mode": "cdc"
}'
```
### Platform Mode with Cortex (vectors in Snowflake)
```bash
curl -X POST https://api.embedd.to/v1/vector-tables \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "product-search",
"connection_id": "conn_abc123",
"source_table": "PRODUCTS",
"primary_key_column": "ID",
"columns": [
{"name": "DESCRIPTION", "role": "embedding", "ordinal": 1},
{"name": "CATEGORY", "role": "metadata", "filter_type": "keyword"}
],
"embedding_model": "snowflake-arctic-embed-m-v1.5",
"embedding_dimensions": 768,
"mode": "platform",
"sync_mode": "cdc"
}'
```
Cortex models: `snowflake-arctic-embed-m-v1.5` (768d), `snowflake-arctic-embed-l-v2.0` (1024d).
## Step 5: Trigger Backfill
```bash
curl -X POST https://api.embedd.to/v1/vector-tables/{vector_table_id}/backfill \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123"
```
## Step 6: Query
```bash
curl -X POST https://api.embedd.to/v1/vector-tables/{vector_table_id}/query \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"query": "comfortable running shoes",
"limit": 5,
"filters": {
"CATEGORY": {"$eq": "footwear"},
"PRICE": {"$lte": 150}
}
}'
```
## Snowflake Filter Translation
| Filter | Snowflake SQL |
|--------|--------------|
| `$eq` | `metadata:field = 'value'` |
| `$ne` | `metadata:field != 'value'` |
| `$gt` | `metadata:field > value` |
| `$gte` | `metadata:field >= value` |
| `$lt` | `metadata:field < value` |
| `$lte` | `metadata:field <= value` |
| `$in` | `metadata:field IN (...)` |
| `$nin` | `metadata:field NOT IN (...)` |
| `$exists` | `metadata:field IS [NOT] NULL` |
## Sync Control
```bash
# Check sync status
curl https://api.embedd.to/v1/vector-tables/{id}/sync/status
# Pause sync
curl -X POST https://api.embedd.to/v1/vector-tables/{id}/sync/pause
# Resume sync
curl -X POST https://api.embedd.to/v1/vector-tables/{id}/sync/resume
```
## Platform Mode Vector Table Schema
```sql
CREATE TABLE EMBEDD_VT_xxxxxxxx_name (
PK_VALUE VARCHAR,
EMBEDDING VECTOR(FLOAT, 1536),
EMBEDDED_TEXT VARCHAR,
METADATA VARIANT,
ROW_HASH VARCHAR,
PRIMARY KEY (PK_VALUE)
);
```
Preview: PostgreSQL Markdown
# Embedd.to — PostgreSQL Integration Guide
## Overview
Embedd.to connects to your PostgreSQL database, automatically generates and maintains vector embeddings, and provides a unified query API for semantic search.
PostgreSQL supports both **managed mode** (vectors in Qdrant) and **platform mode** (vectors in your PostgreSQL database using pgvector).
## Authentication
All requests require:
- `Authorization: Bearer sk_your_api_key` header
- `X-Environment-Id: env_...` header
## Step 1: Create a Connection
```bash
curl -X POST https://api.embedd.to/v1/providers/postgresql/connections \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "my-postgres",
"mode": "managed",
"credentials": {
"host": "db.example.com",
"port": 5432,
"database": "mydb",
"user": "embedd_user",
"password": "secure_password",
"ssl_mode": "require"
}
}'
```
### PostgreSQL Credentials
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| host | string | Yes | Database hostname |
| port | integer | No | Port (default: 5432) |
| database | string | Yes | Database name |
| user | string | Yes | Username |
| password | string | Yes | Password |
| ssl_mode | string | No | SSL mode (require, verify-ca, etc.) |
### Required Permissions
```sql
GRANT SELECT ON TABLE products TO embedd_user;
-- For platform mode:
GRANT CREATE ON SCHEMA public TO embedd_user;
CREATE EXTENSION IF NOT EXISTS vector;
```
## Step 2: Test the Connection
```bash
curl -X POST https://api.embedd.to/v1/connections/{connection_id}/test \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123"
```
## Step 3: Register an Embedding Provider
An embedding provider is required for both managed and platform mode (PostgreSQL has no native embedding capability).
```bash
curl -X POST https://api.embedd.to/v1/embedding-providers \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "my-openai",
"provider": "openai",
"api_key": "sk-proj-...",
"default_model": "text-embedding-3-small"
}'
```
## Step 4: Create a Vector Table
### Managed Mode (vectors in Qdrant)
```bash
curl -X POST https://api.embedd.to/v1/vector-tables \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "product-search",
"connection_id": "conn_abc123",
"embedding_provider_id": "ep_abc123",
"source_table": "products",
"primary_key_column": "id",
"columns": [
{"name": "description", "role": "embedding", "ordinal": 1},
{"name": "category", "role": "metadata", "filter_type": "keyword"},
{"name": "price", "role": "metadata", "filter_type": "float"}
],
"embedding_model": "text-embedding-3-small",
"embedding_dimensions": 1536,
"mode": "managed",
"sync_mode": "cdc"
}'
```
### Platform Mode (vectors in PostgreSQL with pgvector)
```bash
curl -X POST https://api.embedd.to/v1/vector-tables \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "product-search",
"connection_id": "conn_abc123",
"embedding_provider_id": "ep_abc123",
"source_table": "products",
"primary_key_column": "id",
"columns": [
{"name": "description", "role": "embedding", "ordinal": 1},
{"name": "category", "role": "metadata", "filter_type": "keyword"}
],
"embedding_model": "text-embedding-3-small",
"embedding_dimensions": 1536,
"mode": "platform",
"sync_mode": "cdc"
}'
```
**Note:** `embedding_provider_id` is always required for PostgreSQL (both modes).
## Step 5: Trigger Backfill
```bash
curl -X POST https://api.embedd.to/v1/vector-tables/{vector_table_id}/backfill \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123"
```
## Step 6: Query
```bash
curl -X POST https://api.embedd.to/v1/vector-tables/{vector_table_id}/query \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"query": "comfortable running shoes",
"limit": 5,
"filters": {
"category": {"$eq": "footwear"},
"price": {"$lte": 150}
}
}'
```
## PostgreSQL Filter Translation
| Filter | PostgreSQL SQL |
|--------|---------------|
| `$eq` | `metadata->>'field' = 'value'` |
| `$ne` | `metadata->>'field' != 'value'` |
| `$gt` | `(metadata->>'field')::numeric > value` |
| `$gte` | `(metadata->>'field')::numeric >= value` |
| `$lt` | `(metadata->>'field')::numeric < value` |
| `$lte` | `(metadata->>'field')::numeric <= value` |
| `$in` | `metadata->>'field' IN (...)` |
| `$nin` | `metadata->>'field' NOT IN (...)` |
| `$exists` | `metadata ? 'field'` |
## Sync Control
```bash
# Check sync status
curl https://api.embedd.to/v1/vector-tables/{id}/sync/status
# Pause sync
curl -X POST https://api.embedd.to/v1/vector-tables/{id}/sync/pause
# Resume sync
curl -X POST https://api.embedd.to/v1/vector-tables/{id}/sync/resume
```
## Platform Mode Details
### Prerequisites
- PostgreSQL 14+ with pgvector extension installed
- `CREATE EXTENSION IF NOT EXISTS vector;` must be run
### Vector Table Schema
```sql
CREATE TABLE embedd_vt_xxxxxxxx_name (
pk_value TEXT PRIMARY KEY,
embedding vector(1536),
embedded_text TEXT,
metadata JSONB DEFAULT '{}',
row_hash TEXT
);
CREATE INDEX ON embedd_vt_xxxxxxxx_name USING hnsw (embedding vector_cosine_ops);
```
### HNSW Iterative Scan
Embedd.to sets `hnsw.iterative_scan = on` for all queries to ensure consistent results with filtered HNSW searches.