MLX-Embeddings เป็นแพ็คเกจสำหรับการรันโมเดล Vision และ Language Embedding ภายในเครื่อง Mac ของคุณโดยใช้ MLX
คุณสามารถติดตั้ง mlx-embeddings ได้โดยใช้ pip:
pip install mlx-embeddings
หากต้องการสร้างการฝังสำหรับข้อความชิ้นเดียว:
import mlx . core as mx
from mlx_embeddings . utils import load
# Load the model and tokenizer
model , tokenizer = load ( "sentence-transformers/all-MiniLM-L6-v2" )
# Prepare the text
text = "I like reading"
# Tokenize and generate embedding
input_ids = tokenizer . encode ( text , return_tensors = "mlx" )
outputs = model ( input_ids )
embeddings = outputs [ 0 ][:, 0 , :]
หากต้องการเปรียบเทียบข้อความหลายรายการโดยใช้การฝัง:
from sklearn . metrics . pairwise import cosine_similarity
import matplotlib . pyplot as plt
import seaborn as sns
import mlx . core as mx
from mlx_embeddings . utils import load
# Load the model and tokenizer
model , tokenizer = load ( "sentence-transformers/all-MiniLM-L6-v2" )
def get_embedding ( text , model , tokenizer ):
input_ids = tokenizer . encode ( text , return_tensors = "mlx" , padding = True , truncation = True , max_length = 512 )
outputs = model ( input_ids )
embeddings = outputs [ 0 ][:, 0 , :][ 0 ]
return embeddings
# Sample texts
texts = [
"I like grapes" ,
"I like fruits" ,
"The slow green turtle crawls under the busy ant."
]
# Generate embeddings
embeddings = [ get_embedding ( text , model , tokenizer ) for text in texts ]
# Compute similarity
similarity_matrix = cosine_similarity ( embeddings )
# Visualize results
def plot_similarity_matrix ( similarity_matrix , labels ):
plt . figure ( figsize = ( 5 , 4 ))
sns . heatmap ( similarity_matrix , annot = True , cmap = 'coolwarm' , xticklabels = labels , yticklabels = labels )
plt . title ( 'Similarity Matrix Heatmap' )
plt . tight_layout ()
plt . show ()
labels = [ f"Text { i + 1 } " for i in range ( len ( texts ))]
plot_similarity_matrix ( similarity_matrix , labels )
สำหรับการประมวลผลข้อความหลายรายการพร้อมกัน:
from sklearn . metrics . pairwise import cosine_similarity
import matplotlib . pyplot as plt
import seaborn as sns
import mlx . core as mx
from mlx_embeddings . utils import load
# Load the model and tokenizer
model , tokenizer = load ( "sentence-transformers/all-MiniLM-L6-v2" )
def get_embedding ( texts , model , tokenizer ):
inputs = tokenizer . batch_encode_plus ( texts , return_tensors = "mlx" , padding = True , truncation = True , max_length = 512 )
outputs = model (
inputs [ "input_ids" ],
attention_mask = inputs [ "attention_mask" ]
)
return outputs [ 0 ]
def compute_and_print_similarity ( embeddings ):
B , Seq_len , dim = embeddings . shape
embeddings_2d = embeddings . reshape ( B , - 1 )
similarity_matrix = cosine_similarity ( embeddings_2d )
print ( "Similarity matrix between sequences:" )
print ( similarity_matrix )
print ( " n " )
for i in range ( B ):
for j in range ( i + 1 , B ):
print ( f"Similarity between sequence { i + 1 } and sequence { j + 1 } : { similarity_matrix [ i ][ j ]:.4f } " )
return similarity_matrix
# Sample texts
texts = [
"I like grapes" ,
"I like fruits" ,
"The slow green turtle crawls under the busy ant."
]
embeddings = get_embedding ( texts , model , tokenizer )
similarity_matrix = compute_and_print_similarity ( embeddings )
# Visualize results
labels = [ f"Text { i + 1 } " for i in range ( len ( texts ))]
plot_similarity_matrix ( similarity_matrix , labels )
MLX-Embeddings รองรับสถาปัตยกรรมโมเดลที่หลากหลายสำหรับงานฝังข้อความ ต่อไปนี้เป็นรายละเอียดของสถาปัตยกรรมที่รองรับในปัจจุบัน:
เรากำลังทำงานอย่างต่อเนื่องเพื่อขยายการสนับสนุนสำหรับสถาปัตยกรรมโมเดลเพิ่มเติม ตรวจสอบพื้นที่เก็บข้อมูลหรือเอกสาร GitHub ของเราเพื่อดูรายการรุ่นที่รองรับและเวอร์ชันเฉพาะล่าสุด
ยินดีต้อนรับการมีส่วนร่วมกับ MLX-Embeddings! โปรดดูแนวทางการสนับสนุนของเราสำหรับข้อมูลเพิ่มเติม
โครงการนี้ได้รับอนุญาตภายใต้ GNU General Public License v3
หากมีคำถามหรือปัญหาใดๆ โปรดเปิดปัญหาบนพื้นที่เก็บข้อมูล GitHub