File size: 830 Bytes
e9ce7de
 
 
 
3e261a2
e9ce7de
 
 
3e261a2
e9ce7de
 
 
3e261a2
e9ce7de
3e261a2
e9ce7de
 
27e7139
e9ce7de
 
3e261a2
e9ce7de
 
 
 
 
 
 
 
 
 
3e261a2
e9ce7de
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
29
30
31
32
33
34
from sentence_transformers import SentenceTransformer
import gradio as gr
import numpy as np
import torch

# Function to convert dense vector to binary vector
def dense_to_binary(dense_vector):
    return np.packbits(np.where(dense_vector >= 0, 1, 0)).tobytes()

# Load the model
device="cuda" if torch.cuda.is_available() else "cpu"
model = SentenceTransformer("mixedbread-ai/mxbai-embed-large-v1", device=device)

def embed(text:str):
    
    # Float embedding
    float_vector = model.encode(text, convert_to_numpy=True)

    # Convert to binary vector
    binary_vector = dense_to_binary(float_vector)

    # Return both vectors
    return float_vector, binary_vector

    
# Gradio interface
interface = gr.Interface(
    fn=embed,
    inputs=["text"],
    outputs=["json", "text"]
    )

interface.launch(server_port=7860)