All skills
upstash avatar

/upstash-vector-js

@36daab8
by upstashupstash/skills27 stars
7

Work with the @upstash/vector TypeScript/JavaScript SDK, a serverless vector database for embeddings, similarity search, semantic search, and RAG (retrieval-augmented generation). Use when upserting, querying, fetching, ranging, or deleting vectors, upserting raw text against an index with a built-in embedding model, choosing dense, sparse, or hybrid indexes, filtering by metadata, organizing data with namespaces, running resumable queries, or connecting Upstash Vector to an AI or LLM application. Also use when the user asks for a vector store, vector search, nearest-neighbor or kNN search, embeddings storage, semantic cache, recommendations or similarity features, or a hosted vector index that needs no infrastructure.

Use this Skill: https://skilld.dev/gh/upstash/skills/upstash-vector-js

This session only. Nothing lands on disk.

sdk-methods.md

≈903 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Vector TS SDK

Upsert

Add or update vectors. Also accepts raw text (data) to embed automatically.

Pitfalls

  • Vector dimension must match index dimension.
  • Passing both vector and data is invalid.
  • Metadata is optional but recommended for filtering.

Example (single + batch, mix of vector/data)

// Single vector
await index.upsert({ id: "1", vector: [0.1, 0.2], metadata: { type: "doc" } });

// Multiple vectors
await index.upsert(
  [
    { id: "2", vector: [0.2, 0.3] },
    { id: "3", vector: [0.3, 0.4], metadata: { tag: "a" } },
  ],
  { namespace: "ns" }
);

// Using data (auto‑embedding. Only works if the vector index has an embedding model)
await index.upsert({ id: "4", data: "A fantasy movie" });

Fetch

Retrieve vectors by exact ID or prefix.

Example

// Exact
const out = await index.fetch(["1", "2"], { includeMetadata: true });
// → [{ id: "1", metadata: {...} }, null]

// Prefix
await index.fetch({ prefix: "user-" });

Delete

Remove vectors by IDs, prefix, or metadata filter.

Pitfalls

  • Only one of ids, prefix, or filter can be used.
  • Using filter triggers an O(N) scan.

Example

await index.delete(["1", "2"]);
await index.delete({ prefix: "user-" });
await index.delete({ filter: "status = 'expired'" });

Query

Find the top‑K most similar vectors. Supports dense, sparse, hybrid, and embedded-on-demand queries.

Pitfalls

  • Query vector dimension must match index.
  • Scores are normalized 0–1 no matter the similarity metric.

Example

// Dense vector
const results = await index.query({
  vector: [0.1, 0.2],
  topK: 3,
  includeMetadata: true,
  filter: "genre = 'fantasy'",
});

// Data (auto‑embedding)
await index.query({ data: "epic fantasy adventure", topK: 2 });

Resumable Query

Long-running, chunked queries with server-side state.

Pitfalls

  • Remember to call stop() to free resources.
  • fetchNext(k) retrieves N more results.

Example

const { result, fetchNext, stop } = await index.resumableQuery({
  vector: [0.1, 0.2],
  topK: 50,
  maxIdle: 3600,
});

const next = await fetchNext(10);
await stop();

Range

Paginated, stateless scanning of vectors; recommended for large prefix fetches.

Pitfalls

  • Always pass cursor; set to 0 initially.

Example

let cursor = 0;
while (cursor !== null) {
  const page = await index.range({ cursor, limit: 100, includeMetadata: true });
  console.log(page.vectors);
  cursor = page.nextCursor;
}

Info

Retrieve index statistics.

Example

const info = await index.info();
/* Returns:
{
  vectorCount: number;
  pendingVectorCount: number;
  indexSize: number;
  dimension: number;
  similarityFunction: "COSINE" | "EUCLIDEAN" | "DOT_PRODUCT";
  denseIndex?: {
    dimension: number;
    similarityFunction: "COSINE" | "EUCLIDEAN" | "DOT_PRODUCT";
    embeddingModel?: string;
  };
  sparseIndex?: {
    embeddingModel?: string;
  };
  namespaces: Record<string, {
    vectorCount: number;
    pendingVectorCount: number;
  }>;
}
*/

Reset

Clear a namespace or the entire index.

Pitfalls

  • { all: true } must be explicit.

Example

await index.reset(); // default namespace
await index.reset({ namespace: "my-namespace" });
await index.reset({ all: true });

Advanced

Request Timeout

const index = new Index({
  url,
  token,
  signal: () => AbortSignal.timeout(1000),
});

Telemetry

Disable with env variable:

UPSTASH_DISABLE_TELEMETRY=1

Source: SKILL.md on GitHub

No alerts16d3 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    This skill provides documentation and usage examples for the Upstash Vector TypeScript SDK. It follows security best practices by utilizing environment variables for secret management and official vendor libraries. No malicious patterns or security vulnerabilities were detected.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW · No issues

Signed by skilld at 36daab8. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 6 days ago.

Activeupdated last month
metadata
{
  "author": "Upstash",
  "homepage": "https://upstash.com"
}

README badge

README badge for upstash/skills/upstash-vector-js