nomic-embed-text-v1

CAiRE
Similitud de oraciones

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