nomic-embed-text-v1
nomic-embed-text-v1 es un codificador de texto con longitud de contexto de 8192 que supera a OpenAI text-embedding-ada-002 y text-embedding-3-small en tareas de contexto corto y largo. Generar embeddings con el cliente de Python de nomic es muy fácil. Se entrena utilizando una tubería de entrenamiento en múltiples etapas. En la primera etapa de contraste no supervisada se entrena con un dataset generado a partir de pares de texto débilmente relacionados, como preguntas y respuestas de foros como StackExchange y Quora, pares título-cuerpo de reseñas de Amazon y resúmenes de artículos de noticias. En la segunda etapa de ajuste fino, se utilizan datasets etiquetados de mayor calidad como consultas de búsqueda y respuestas de búsquedas web. La curación de datos y la minería de ejemplos difíciles son cruciales en esta etapa.
Como usar
La forma más fácil de empezar con Nomic Embed es a través de la API de Embedding de Nomic.
Generar embeddings con el cliente de Python de nomic es tan simple 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 API.
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?']
token_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
embeddings = F.normalize(embeddings, p=2, dim=1)
print(embeddings)
Transformers.js
import { pipeline } from '@xenova/transformers';
// Create a feature extraction pipeline
const extractor = await pipeline('feature-extraction', 'nomic-ai/nomic-embed-text-v1', {
quantized: false,
});
// Compute sentence embeddings
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 tokens
- Supera el rendimiento de text-embedding-ada-002 y text-embedding-3-small en tareas de contexto corto y largo
- Soporte para scaling de longitud de secuencia más allá de 2048 tokens
- Código de entrenamiento abierto
- Datos de entrenamiento abiertos
Casos de uso
- Búsquedas y recuperación de información
- Clasificación de texto
- Agrupación de documentos
- Aplicaciones de recuperación asistida por generación (RAG)
- Sistemas de consulta y respuesta en tiempo real