Abstract interface for vector store adapters. Implement this to integrate with Pinecone, Qdrant, Chroma, etc.

interface VectorStore {
    upsert(params: {
        id: string;
        vector: number[];
        metadata: Record<string, unknown>;
    }): Promise<void>;
    search(params: {
        vector: number[];
        topK: number;
        filter?: Record<string, unknown>;
    }): Promise<{
        id: string;
        score: number;
        metadata: Record<string, unknown>;
    }[]>;
    delete(params: {
        ids?: string[];
        filter?: Record<string, unknown>;
    }): Promise<number>;
    count?(filter?: Record<string, unknown>): Promise<number>;
}

Implemented by

Methods

  • Upsert a vector with metadata.

    Parameters

    • params: {
          id: string;
          vector: number[];
          metadata: Record<string, unknown>;
      }
      • id: string
      • vector: number[]
      • metadata: Record<string, unknown>

    Returns Promise<void>

  • Search for similar vectors.

    Parameters

    • params: {
          vector: number[];
          topK: number;
          filter?: Record<string, unknown>;
      }
      • vector: number[]
      • topK: number
      • Optionalfilter?: Record<string, unknown>

    Returns Promise<{
        id: string;
        score: number;
        metadata: Record<string, unknown>;
    }[]>

  • Delete vectors by IDs or filter.

    Parameters

    • params: {
          ids?: string[];
          filter?: Record<string, unknown>;
      }
      • Optionalids?: string[]
      • Optionalfilter?: Record<string, unknown>

    Returns Promise<number>