File size: 1,085 Bytes
a7094fa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import os
from chromadb.api.types import Documents, Embeddings
from chromadb import EmbeddingFunction
from mistralai.client import MistralClient  # Import Mistral client

# Hardcoded Mistral API key (NOT RECOMMENDED for production)
MISTRAL_API_KEY = "9x8duC1VJ7n5uEwdV8nG6bmFEIqCftKn"

# Initialize Mistral client
mistral_client = MistralClient(api_key=MISTRAL_API_KEY)

class MistralEmbeddingFunction(EmbeddingFunction):
    """

    Custom embedding function using Mistral AI API.

    """
    def __call__(self, input: Documents) -> Embeddings:
        if not MISTRAL_API_KEY:
            raise ValueError("Mistral API Key not provided. Please set MISTRAL_API_KEY as an environment variable.")
        
        embeddings = []
        for text in input:
            # Generate embeddings using Mistral's API
            response = mistral_client.embeddings.create(
                model="mistral-embed",  # Mistral's embedding model
                input=text
            )
            embeddings.append(response.data[0].embedding)
        return embeddings