{"version":3,"file":"gradient_ai.cjs","names":["Embeddings","fields: GradientEmbeddingsParams","texts: string[]","embeddings: number[][]","text: string","Gradient"],"sources":["../../src/embeddings/gradient_ai.ts"],"sourcesContent":["import { Gradient } from \"@gradientai/nodejs-sdk\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Embeddings, EmbeddingsParams } from \"@langchain/core/embeddings\";\nimport { chunkArray } from \"@langchain/core/utils/chunk_array\";\n\n/**\n * Interface for GradientEmbeddings parameters. Extends EmbeddingsParams and\n * defines additional parameters specific to the GradientEmbeddings class.\n */\nexport interface GradientEmbeddingsParams extends EmbeddingsParams {\n  /**\n   * Gradient AI Access Token.\n   * Provide Access Token if you do not wish to automatically pull from env.\n   */\n  gradientAccessKey?: string;\n  /**\n   * Gradient Workspace Id.\n   * Provide workspace id if you do not wish to automatically pull from env.\n   */\n  workspaceId?: string;\n}\n\n/**\n * Class for generating embeddings using the Gradient AI's API. Extends the\n * Embeddings class and implements GradientEmbeddingsParams and\n */\nexport class GradientEmbeddings\n  extends Embeddings\n  implements GradientEmbeddingsParams\n{\n  gradientAccessKey?: string;\n\n  workspaceId?: string;\n\n  batchSize = 128;\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  model: any;\n\n  constructor(fields: GradientEmbeddingsParams) {\n    super(fields);\n\n    this.gradientAccessKey =\n      fields?.gradientAccessKey ??\n      getEnvironmentVariable(\"GRADIENT_ACCESS_TOKEN\");\n    this.workspaceId =\n      fields?.workspaceId ?? getEnvironmentVariable(\"GRADIENT_WORKSPACE_ID\");\n\n    if (!this.gradientAccessKey) {\n      throw new Error(\"Missing Gradient AI Access Token\");\n    }\n\n    if (!this.workspaceId) {\n      throw new Error(\"Missing Gradient AI Workspace ID\");\n    }\n  }\n\n  /**\n   * Method to generate embeddings for an array of documents. Splits the\n   * documents into batches and makes requests to the Gradient API to generate\n   * embeddings.\n   * @param texts Array of documents to generate embeddings for.\n   * @returns Promise that resolves to a 2D array of embeddings for each document.\n   */\n  async embedDocuments(texts: string[]): Promise<number[][]> {\n    await this.setModel();\n\n    const mappedTexts = texts.map((text) => ({ input: text }));\n\n    const batches = chunkArray(mappedTexts, this.batchSize);\n\n    const batchRequests = batches.map((batch) =>\n      this.caller.call(async () =>\n        this.model.generateEmbeddings({\n          inputs: batch,\n        })\n      )\n    );\n    const batchResponses = await Promise.all(batchRequests);\n\n    const embeddings: number[][] = [];\n    for (let i = 0; i < batchResponses.length; i += 1) {\n      const batch = batches[i];\n      const { embeddings: batchResponse } = batchResponses[i];\n      for (let j = 0; j < batch.length; j += 1) {\n        embeddings.push(batchResponse[j].embedding);\n      }\n    }\n    return embeddings;\n  }\n\n  /**\n   * Method to generate an embedding for a single document. Calls the\n   * embedDocuments method with the document as the input.\n   * @param text Document to generate an embedding for.\n   * @returns Promise that resolves to an embedding for the document.\n   */\n  async embedQuery(text: string): Promise<number[]> {\n    const data = await this.embedDocuments([text]);\n    return data[0];\n  }\n\n  /**\n   * Method to set the model to use for generating embeddings.\n   * @sets the class' `model` value to that of the retrieved Embeddings Model.\n   */\n  async setModel() {\n    if (this.model) return;\n\n    const gradient = new Gradient({\n      accessToken: this.gradientAccessKey,\n      workspaceId: this.workspaceId,\n    });\n    this.model = await gradient.getEmbeddingsModel({\n      slug: \"bge-large\",\n    });\n  }\n}\n"],"mappings":";;;;;;;;;;;;;AA0BA,IAAa,qBAAb,cACUA,uCAEV;CACE;CAEA;CAEA,YAAY;CAGZ;CAEA,YAAYC,QAAkC;EAC5C,MAAM,OAAO;EAEb,KAAK,oBACH,QAAQ,4EACe,wBAAwB;EACjD,KAAK,cACH,QAAQ,sEAAsC,wBAAwB;AAExE,MAAI,CAAC,KAAK,kBACR,OAAM,IAAI,MAAM;AAGlB,MAAI,CAAC,KAAK,YACR,OAAM,IAAI,MAAM;CAEnB;;;;;;;;CASD,MAAM,eAAeC,OAAsC;EACzD,MAAM,KAAK,UAAU;EAErB,MAAM,cAAc,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,KAAM,GAAE;EAE1D,MAAM,6DAAqB,aAAa,KAAK,UAAU;EAEvD,MAAM,gBAAgB,QAAQ,IAAI,CAAC,UACjC,KAAK,OAAO,KAAK,YACf,KAAK,MAAM,mBAAmB,EAC5B,QAAQ,MACT,EAAC,CACH,CACF;EACD,MAAM,iBAAiB,MAAM,QAAQ,IAAI,cAAc;EAEvD,MAAMC,aAAyB,CAAE;AACjC,OAAK,IAAI,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK,GAAG;GACjD,MAAM,QAAQ,QAAQ;GACtB,MAAM,EAAE,YAAY,eAAe,GAAG,eAAe;AACrD,QAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GACrC,WAAW,KAAK,cAAc,GAAG,UAAU;EAE9C;AACD,SAAO;CACR;;;;;;;CAQD,MAAM,WAAWC,MAAiC;EAChD,MAAM,OAAO,MAAM,KAAK,eAAe,CAAC,IAAK,EAAC;AAC9C,SAAO,KAAK;CACb;;;;;CAMD,MAAM,WAAW;AACf,MAAI,KAAK,MAAO;EAEhB,MAAM,WAAW,IAAIC,iCAAS;GAC5B,aAAa,KAAK;GAClB,aAAa,KAAK;EACnB;EACD,KAAK,QAAQ,MAAM,SAAS,mBAAmB,EAC7C,MAAM,YACP,EAAC;CACH;AACF"}