Read the disclaimer below before using this model.


nomic-embed-text-v1.5 -- ONNX for Teradata BYOM

This repository hosts an ONNX-converted version of the upstream model nomic-ai/nomic-embed-text-v1.5, packaged for the Teradata Vantage mldb.ONNXEmbeddings BYOM function. It is not the original PyTorch model -- only the inference graph and tokenizer needed for in-database embedding generation.

What's different from upstream:

  • Format: ONNX (opset 14, IR version 8 -- BYOM 6+ compatible), produced from the upstream weights with architecture-aware post-processing baked in.
  • Precision: dynamic int8 quantization. See the variants table below for what is shipped for this model.
  • Pooling and post-processing: this graph emits the raw sentence_embedding tensor. Pooling rule is mean and the model expects a query-time instruction prefix (see "Instruction prefix" below).
  • Verification: every variant's cosine fidelity vs. the upstream PyTorch reference is recorded on a fixed FLORES-200 sample. Numbers may not generalize to your data.

Model details

Upstream repo nomic-ai/nomic-embed-text-v1.5
Architecture NomicBertModel (encoder)
Parameters 136,731,648
Output dimensions 768
Pooling mean
Instruction prefix yes
Max input tokens (native / advertised) 2048 / 8192
Languages 1
License apache-2.0
ONNX opset 14
ONNX IR version 8 (BYOM 6+ compatible)
Full language list (1)
  • en

Instruction prefix

This model was trained with two fixed literal prefixes that must be prepended to the raw text before encoding. Unlike free-form instruction-tuned models, the prefix wording is not customisable -- the model only understands these specific tokens. The ONNX graph itself is prefix-agnostic; downstream BYOM SQL is responsible for prepending the prefix to each input row (typically with a CTE that concatenates the prefix string with the input text).

Use the following prefixes (snapshot at publish time -- see the upstream model card for any updates):

  • search_query: -- for query-side text
  • search_document: -- for document / passage-side text

Both sides of a retrieval pair must be prefixed: prepend search_query: to user queries and search_document: to the indexed passages. Omitting the prefix degrades retrieval quality materially. See nomic-ai/nomic-embed-text-v1.5 for the canonical guidance.

Example SQL (prepend the prefix at query time via a CTE):

WITH prefixed_queries AS (
  SELECT id,
         'search_query: ' || query_text AS text
  FROM   my_query_table
)
SELECT *
FROM   mldb.ONNXEmbeddings(
         ON prefixed_queries
         ON onnx_models    AS ModelTable DIMENSION
         ON tokenizers     AS TokenizerTable DIMENSION
         USING
           Accumulate('id')
           ModelOutputTensor('sentence_embedding')
       ) AS s;

Quantization variants

This repository ships the following variants. Quality numbers are measured against the upstream PyTorch reference on a fixed FLORES-200 sample. The Size column is the on-disk size of the ONNX weight file in megabytes (MB, 10^6 bytes).

Variant Size (MB) p50 cosine R@1
fp32 547.8 1.000000 —
ffn_skip 414.2 0.991608 0.851

How to read the quality columns:

  • p50 cosine is the median cosine similarity between this variant's embeddings and the fp32 ONNX reference, computed over a fixed evaluation set. Higher means closer to the unquantized model; 1.0 is identical.
  • R@1 is top-1 retrieval consistency: if you use this variant as a search index, R@1 is the fraction of queries that get the same nearest neighbor as the fp32 reference would. Higher is better.

Notes:

  • fp32: full-precision reference. Useful for an accuracy ceiling, but BYOM users almost always want one of the int8 variants for in-database scoring -- they are 3-4x smaller and load much faster.
  • ffn_skip: dynamic int8 with the feed-forward (FFN) MatMul layers kept in fp32, while attention and projection MatMuls stay quantized. The FFN layers are where most of the quantization error in transformer blocks concentrates; leaving them in fp32 recovers most of the quality loss for a modest size increase. The artifact is roughly 3x smaller than fp32 (larger than the per_channel int8 sibling).

Quickstart: using this model with Teradata BYOM

Requires Teradata Vantage with BYOM 6+ (mldb.ONNXEmbeddings).

import getpass
import teradataml as tdml
from huggingface_hub import hf_hub_download

repo_id   = "Teradata/nomic-embed-text-v1.5"
model_id  = "nomic-embed-text-v1.5"        # arbitrary, used as the BYOM model_id
onnx_file = "onnx/model-ffn_skip.onnx"

# 1. Download the ONNX + tokenizer for the chosen variant.
hf_hub_download(repo_id=repo_id, filename=onnx_file,       local_dir="./")
hf_hub_download(repo_id=repo_id, filename="tokenizer.json", local_dir="./")

# 2. Connect to Vantage.
tdml.create_context(
    host=input("host: "),
    username=input("user: "),
    password=getpass.getpass("password: "),
)

# 3. Load model + tokenizer into BYOM tables (one-time per model_id).
tdml.save_byom(model_id=model_id, model_file=onnx_file,
               table_name="embeddings_models")
tdml.save_byom(model_id=model_id, model_file="tokenizer.json",
               table_name="embeddings_tokenizers")

Then call mldb.ONNXEmbeddings against an input table whose txt column carries the strings to embed:

SELECT *
FROM mldb.ONNXEmbeddings(
    ON (SELECT id, txt FROM your_input_table) AS InputTable
    ON (SELECT model_id, model FROM embeddings_models
         WHERE model_id = 'nomic-embed-text-v1.5') AS ModelTable DIMENSION
    ON (SELECT model_id, tokenizer FROM embeddings_tokenizers
         WHERE model_id = 'nomic-embed-text-v1.5') AS TokenizerTable DIMENSION
    USING
        Accumulate('id')
        ModelOutputTensor('sentence_embedding')
        OutputFormat('FLOAT32(768)')
        OverwriteCachedModel('*')
) AS t
ORDER BY id;

Pooling rule mean is applied inside the converted ONNX graph -- the output tensor named above already contains the pooled, post-processed embedding vector. For instruction-prefix models, prepend the recommended instruction text to each input txt before calling ONNXEmbeddings; the prefix is plain text that the tokenizer handles unchanged.

Original model attribution

The original weights and training methodology belong to Nomic AI. Please cite their work, not this repository, in academic contexts. The canonical upstream model card is at nomic-ai/nomic-embed-text-v1.5; refer to it for benchmarks, training details, intended use, and citation information.

Reporting issues

For ONNX-conversion or BYOM-compatibility issues specific to this Teradata-converted artifact, please open a Discussion on this model's Hugging Face page. Questions about the underlying model quality, training, or intended use should go to the upstream maintainer's model card.


DISCLAIMER: The content herein ("Content") is provided "AS IS" and is not covered by any Teradata Operations, Inc. and its affiliates ("Teradata") agreements. Its listing here does not constitute certification or endorsement by Teradata.

To the extent any of the Content contains or is related to any artificial intelligence ("AI") or other language learning models ("Models") that interoperate with the products and services of Teradata, by accessing, bringing, deploying or using such Models, you acknowledge and agree that you are solely responsible for ensuring compliance with all applicable laws, regulations, and restrictions governing the use, deployment, and distribution of AI technologies. This includes, but is not limited to, AI Diffusion Rules, European Union AI Act, AI-related laws and regulations, privacy laws, export controls, and financial or sector-specific regulations.

While Teradata may provide support, guidance, or assistance in the deployment or implementation of Models to interoperate with Teradata's products and/or services, you remain fully responsible for ensuring that your Models, data, and applications comply with all relevant legal and regulatory obligations. Our assistance does not constitute legal or regulatory approval, and Teradata disclaims any liability arising from non-compliance with applicable laws.

You must determine the suitability of the Models for any purpose. Given the probabilistic nature of machine learning and modeling, the use of the Models may in some situations result in incorrect output that does not accurately reflect the action generated. You should evaluate the accuracy of any output as appropriate for your use case, including by using human review of the output.

Downloads last month
11
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Teradata/nomic-embed-text-v1.5

Quantized
(34)
this model

Collection including Teradata/nomic-embed-text-v1.5