Nomic Embed Text(ノミックエンベッドテキスト)
Nomic AI社が2024年2月に公開したオープンソーステキスト埋め込みモデル。8,192トークンの長文対応と完全なトレーニングデータ開示(完全再現可能)を特徴とし、「最初の完全透明性を持つ商用グレード埋め込みモデル」として注目された。
Nomic Embed Textは、Nomic AI社が2024年2月にリリースしたテキスト埋め込みモデルだ。単なる高性能モデルにとどまらず、完全なトレーニングデータと訓練コードを公開した「透明性第一」のアプローチで業界に衝撃を与えた。
完全透明性が意味すること
ほとんどの埋め込みモデルはブラックボックスだ。OpenAIのtext-embedding系やVoyageはAPIのみで内部を見せない。BGE-M3は重みを公開しているがトレーニングデータの詳細は限定的。
Nomic Embed Textが異なるのは以下の全てを公開した点だ。
- モデル重み: Apache 2.0
- 訓練コード: 完全公開(GitHubリポジトリ)
- 訓練データ: 使用したデータセットの完全リスト
- 評価スクリプト: MTEB評価を自分で再現可能
この透明性により医療・金融・法律分野でのAIシステム監査要件をクリアしやすくなっている。
スペック
| 項目 | nomic-embed-text-v1 | nomic-embed-text-v1.5 |
|---|---|---|
| パラメータ数 | 137M | 137M |
| 最大入力長 | 8,192トークン | 8,192トークン |
| 出力次元 | 768 | 768(Matryoshka対応) |
| ライセンス | Apache 2.0 | Apache 2.0 |
| MTEB平均 | 62.4 | 62.6 |
Matryoshka Representation Learning(MRL)対応
v1.5からMatryoshka Representation Learning(MRL)に対応した。これは大きな埋め込みベクトルを切り詰めて小さい次元でも精度を保つ技術だ。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("nomic-ai/nomic-embed-text-v1.5",
trust_remote_code=True)
# フル768次元
emb_full = model.encode("自作PCの電源容量は?",
convert_to_numpy=True)
OllamaでのローカルRAG
Nomic Embed TextはOllamaが公式サポートしており、ローカルRAG構築に最もアクセスしやすいモデルの一つだ。
# モデルダウンロード(約274MB)
ollama pull nomic-embed-text
# APIテスト
curl http://localhost:11434/api/embeddings -d '{
"model": "nomic-embed-text",
"prompt": "自作PCのパーツ選びで重要なのは?"
}'
ollama + nomic-embed-text + ChromaDB の組み合わせはローカルRAGのスタンダード構成になっている。
長文対応(8,192トークン)の活用
8,192トークン対応はBERT系モデルの512トークン制限を大幅に超える。具体的には:
- 日本語で約5,000〜6,000文字の一括処理が可能
- A4用紙換算で約10ページ分
- チャンク分割の粒度を粗くできる
ただし長文になるほど末尾情報が薄まる傾向(Lost in the Middle問題)があり、2,000〜4,000トークン程度のチャンクが実運用では最適な場合が多い。
競合との差別化
| 比較軸 | Nomic Embed | BGE-M3 | Arctic Embed-l |
|---|---|---|---|
| 透明性 | 完全公開 | 重みのみ | 重みのみ |
| 多言語 | 限定的 | 100言語 | 英語主体 |
| 長文 | 8,192 | 8,192 | 512 |
| Ollama対応 | ○(公式) | △ | △ |
| Apache 2.0 | ○ | ○ | ○ |
よくある質問
Q1: nomic-embed-text-v1とv1.5の違いは? v1.5はMatryoshka Representation Learning対応・精度微改善。新規採用はv1.5推奨。v1は軽量なタスクでも引き続き有効。
Q2: trust_remote_code=Trueは安全? Nomic AIのGitHubを確認すれば訓練コードも公開されており、透明性が高い。不安なら公式ドキュメントでコードを確認してから実行を推奨する。
Q3: LangChainで使える?
使える。langchain_community.embeddings.OllamaEmbeddingsまたはHuggingFaceEmbeddingsで統合可能。
まとめ
- トレーニングデータ・コード・重みをすべてApache 2.0公開
- 8,192トークン長文対応
- MRL(Matryoshka)対応で次元削減も可能
- Ollamaの公式サポートでローカルRAGに最適
- 監査要件がある用途(医療・法律・金融)に強み