nomic-ai/nomic-embed-text-v1

nomic-ai
Similitud de oraciones

nomic-embed-text-v1 es un codificador de texto con una 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. Este modelo es multimodal y está alineado con el espacio de embedding de nomic-embed-vision-v1.

Como usar

Uso

Para utilizar este modelo, debe incluir un prefijo de instrucción de tarea en el texto, instruyendo al modelo sobre qué tarea se está realizando.

Ejemplos de código:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("nomic-ai/nomic-embed-text-v1", trust_remote_code=True)
sentences = ['search_document: TSNE es un algoritmo de reducción de dimensionalidad creado por Laurens van Der Maaten']
embeddings = model.encode(sentences)
print(embeddings)
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("nomic-ai/nomic-embed-text-v1", trust_remote_code=True)
sentences = ['search_query: ¿Quién es Laurens van Der Maaten?']
embeddings = model.encode(sentences)
print(embeddings)
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: ¿Qué es TSNE?', 'search_query: ¿Quién es 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)
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, // Comentar esta línea para usar la versión cuantificada
});

// Calcular embeddings de oraciones
const texts = ['search_query: ¿Qué es TSNE?', 'search_query: ¿Quién es Laurens van der Maaten?'];
const embeddings = await extractor(texts, { pooling: 'mean', normalize: true });
console.log(embeddings);
from nomic import embed

output = embed.text(
    texts=['Nomic Embedding API', '#keepAIOpen'],
    model='nomic-embed-text-v1',
    task_type='search_document'
)

print(output)

Funcionalidades

Codificador de texto con longitud de contexto de 8192
Supera el rendimiento de OpenAI text-embedding-ada-002 y text-embedding-3-small
Soporte multimodal
Pipelines de uso nativo
Transformers y Transformers.js

Casos de uso

Búsqueda documental
Consultas de búsqueda
Clustering de textos
Clasificación de textos