Heroku AI SDK Provider - v0.4.3
    Preparing search index...

    Function createEmbedFunction

    • Creates a reusable embedding function from a HerokuEmbeddingModel instance.

      This helper function provides a convenient way to create a reusable embedding function that can handle both single strings and arrays of strings, returning the appropriate format for each case.

      Parameters

      Returns (
          input: string | string[],
      ) => Promise<
          | {
              embedding: number[];
              usage: { tokens: number }
              | undefined;
              embeddings?: undefined;
          }
          | {
              embedding?: undefined;
              embeddings: number[][];
              usage: { tokens: number }
              | undefined;
          },
      >

      A function that can embed single strings or arrays of strings

      Basic usage:

      import { createEmbedFunction, HerokuEmbeddingModel } from "heroku-ai-provider";

      const model = new HerokuEmbeddingModel(
      "cohere-embed-multilingual",
      process.env.EMBEDDING_KEY!,
      "https://us.inference.heroku.com/v1/embeddings"
      );

      const embedText = createEmbedFunction(model);

      // Single embedding
      const singleResult = await embedText("Hello, world!");
      console.log(singleResult.embedding); // [0.1, 0.2, -0.3, ...]

      // Multiple embeddings
      const multiResult = await embedText(["First text", "Second text"]);
      console.log(multiResult.embeddings.length); // 2

      With error handling:

      const embedText = createEmbedFunction(model);

      try {
      const result = await embedText("Text to embed");
      console.log("Embedding generated:", result.embedding.length, "dimensions");
      console.log("Tokens used:", result.usage?.tokens);
      } catch (error) {
      console.error("Embedding failed:", error.message);
      }

      Batch processing:

      const embedText = createEmbedFunction(model);

      const documents = [
      "First document content",
      "Second document content",
      "Third document content"
      ];

      const result = await embedText(documents);
      console.log(`Generated ${result.embeddings.length} embeddings`);

      // Use embeddings for similarity search, clustering, etc.
      const similarities = result.embeddings.map((emb, i) => ({
      document: documents[i],
      embedding: emb
      }));