ObjectUIObjectUI
Fields

Vector Field

Vector embeddings viewer for AI/ML data

The Vector Field component displays vector embeddings used in AI/ML applications. This is a read-only field that shows a preview of the embedding values and dimensionality.

Basic Usage

Basic Vector Display

[0.1234, -0.5678, 0.9012...](768D)

Different Dimensions

High Dimensional Vector

[0.7237, 0.7361, 0.8724...](1536D)

Field Schema

interface VectorFieldSchema {
  type: 'vector';
  name: string;                  // Field name/ID
  label?: string;                // Field label
  value?: number[];              // Vector array
  readonly: true;                // Always read-only
  className?: string;            // Additional CSS classes
  
  // Vector Options
  dimensions?: number;           // Vector dimensionality
}

Display Format

Vectors are displayed with a preview:

[0.1234, -0.5678, 0.9012...] (768D)

Shows:

  • First 3 values (formatted to 4 decimal places)
  • Total dimensionality in parentheses

Common Embedding Dimensions

Different AI models use different embedding sizes:

  • OpenAI text-embedding-3-small: 512, 1536, or 3072 dimensions (configurable)
  • OpenAI text-embedding-3-large: 256, 1024, or 3072 dimensions (configurable)
  • OpenAI text-embedding-ada-002: 1536 dimensions (fixed)
  • Sentence Transformers (BERT): 768 dimensions
  • OpenAI CLIP: 512 dimensions
  • Word2Vec: 100-300 dimensions
  • Custom Models: Variable dimensions

Data Format

Vectors are stored as arrays of floating-point numbers:

// Example embedding
const embedding: number[] = [
  0.1234, -0.5678, 0.9012, 0.3456, -0.7890,
  // ... 763 more values for 768D embedding
];

Cell Renderer

In tables/grids, displays compact preview:

import { VectorCellRenderer } from '@object-ui/fields';

// Renders: [0.1234, -0.5678, 0.9012...] (768D)

Vector Operations

Common operations with vector fields (performed on backend):

// Find similar vectors using cosine similarity
const findSimilar = async (queryVector: number[], limit: number = 10) => {
  return await db.raw(`
    SELECT 
      id,
      1 - (embedding <=> $1) as similarity
    FROM documents
    ORDER BY embedding <=> $1
    LIMIT $2
  `, [queryVector, limit]);
};

Distance Metrics

  • Cosine Similarity: Measures angle between vectors
  • Euclidean Distance: Straight-line distance
  • Dot Product: Inner product of vectors

Use Cases

  • Semantic Search: Find similar documents, products, or content
  • Recommendation Systems: Product recommendations, content suggestions
  • Text Analysis: Document clustering, topic modeling
  • Image Search: Similar image finding, visual search
  • Anomaly Detection: Identify outliers in data
  • AI Applications: Any machine learning feature vectors

Backend Implementation

Example vector storage and search:

// PostgreSQL with pgvector extension
import { Client } from 'pg';

// Create table with vector column
const createTable = async () => {
  await db.raw(`
    CREATE TABLE IF NOT EXISTS documents (
      id SERIAL PRIMARY KEY,
      content TEXT,
      embedding vector(768)
    );
    
    CREATE INDEX ON documents 
    USING ivfflat (embedding vector_cosine_ops);
  `);
};

// Generate embedding (using OpenAI)
const generateEmbedding = async (text: string): Promise<number[]> => {
  const response = await openai.embeddings.create({
    model: 'text-embedding-3-small',
    input: text
  });
  return response.data[0].embedding;
};

// Store document with embedding
const storeDocument = async (content: string) => {
  const embedding = await generateEmbedding(content);
  return db.insert('documents', {
    content,
    embedding
  });
};

// Search similar documents
const searchSimilar = async (query: string, limit = 10) => {
  const queryEmbedding = await generateEmbedding(query);
  return db.raw(`
    SELECT 
      id,
      content,
      1 - (embedding <=> $1::vector) as similarity
    FROM documents
    ORDER BY embedding <=> $1::vector
    LIMIT $2
  `, [queryEmbedding, limit]);
};

Database Support

Vector storage is supported by:

  • PostgreSQL: pgvector extension
  • Pinecone: Specialized vector database
  • Weaviate: Vector search engine
  • Milvus: Open-source vector database
  • Qdrant: Vector similarity search engine
  • Chroma: AI-native embedding database

Performance Considerations

  1. Indexing: Use approximate nearest neighbor (ANN) indices
  2. Quantization: Consider dimension reduction for storage
  3. Batch Operations: Generate embeddings in batches
  4. Caching: Cache frequently used embeddings
  5. Async Generation: Generate embeddings asynchronously
// 1. Generate embedding for user query
const query = "Find documentation about authentication";
const queryEmbedding = await generateEmbedding(query);

// 2. Search for similar documents
const results = await db.raw(`
  SELECT 
    id,
    title,
    content,
    1 - (embedding <=> $1::vector) as similarity
  FROM documents
  WHERE 1 - (embedding <=> $1::vector) > 0.7
  ORDER BY embedding <=> $1::vector
  LIMIT 10
`, [queryEmbedding]);

// 3. Display results with similarity scores
results.forEach(doc => {
  console.log(`${doc.title} (${(doc.similarity * 100).toFixed(1)}% match)`);
});

On this page