You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
class MistralEmbedder { constructor() { if (!process.env.MISTRAL_API_KEY) throw new Error("No Mistral API key was set.");
const { OpenAI: OpenAIApi } = require("openai"); this.openai = new OpenAIApi({ baseURL: "https://api.mistral.ai/v1", apiKey: process.env.MISTRAL_API_KEY ?? null, }); this.model = process.env.EMBEDDING_MODEL_PREF || "mistral-embed"; }
async embedTextInput(textInput) { try { const response = await this.openai.embeddings.create({ model: this.model, input: textInput, }); return response?.data[0]?.embedding || []; } catch (error) { console.error("Failed to get embedding from Mistral.", error.message); return []; } }
async embedChunks(textChunks = []) { try { const response = await this.openai.embeddings.create({ model: this.model, input: textChunks, }); return response?.data?.map((emb) => emb.embedding) || []; } catch (error) { console.error("Failed to get embeddings from Mistral.", error.message); return new Array(textChunks.length).fill([]); } }}
module.exports = { MistralEmbedder,};
|