nomic-embed-text-v1
corto-ai
Similitud de oraciones
nomic-embed-text-v1 es un codificador de texto con longitud de contexto de 8192 que supera el rendimiento de OpenAI text-embedding-ada-002 y text-embedding-3-small en tareas de contexto corto y largo.
Como usar
El método más sencillo para empezar con Nomic Embed es a través de la Nomic Embedding API. Generar embeddings con el cliente de Python de nomic es tan fácil como:
from nomic import embed
output = embed.text(
texts=['Nomic Embedding API', '#keepAIOpen'],
model='nomic-embed-text-v1',
task_type='search_document'
)
print(output)
Para más información, consulte la referencia de API.
Sentence Transformers
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("nomic-ai/nomic-embed-text-v1", trust_remote_code=True)
sentences = ['search_query: What is TSNE?', 'search_query: Who is Laurens van der Maaten?']
embeddings = model.encode(sentences)
print(embeddings)
Transformers
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0]
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
sentences = ['search_query: What is TSNE?', 'search_query: Who is Laurens van der Maaten?']
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1', trust_remote_code=True)
model.eval()
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
model_output = model(**encoded_input)
embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
embeddings = F.normalize(embeddings, p=2, dim=1)
print(embeddings)
El modelo soporta nativamente el escalado de la longitud de la secuencia más allá de 2048 tokens. Para hacerlo,
- tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
+ tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased', model_max_length=8192)
- model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1', trust_remote_code=True)
+ model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1', trust_remote_code=True, rotary_scaling_factor=2)
Transformers.js
import { pipeline } from '@xenova/transformers';
// Crear un pipeline de extracción de características
const extractor = await pipeline('feature-extraction', 'nomic-ai/nomic-embed-text-v1', {
quantized: false, // Comentario esta línea para usar la versión cuantificada
});
// Calcular embeddings de oraciones
const texts = ['search_query: What is TSNE?', 'search_query: Who is Laurens van der Maaten?'];
const embeddings = await extractor(texts, { pooling: 'mean', normalize: true });
console.log(embeddings);
Funcionalidades
- Longitud de contexto de 8192
- Mejor rendimiento en tareas de contexto corto y largo comparado con otros modelos
- Pesos abiertos
- Código de entrenamiento abierto
- Datos abiertos
Casos de uso
- Extracción de características de texto
- Clasificación
- Clustering
- Recuperación de información