モデル別実行レシピ
最終更新
文章・写真・動画・音声を1つの索引で検索する Jina v5 Omni
テキスト索引を保ち、異なる形式の質問をつなげられます。
Jina v5 Omniはテキスト・画像・動画・音声を共通の1,024次元空間に配置し、text-smallと整合します。CC BY-NC 4.0のため商用利用前に条件を確認します。
テキスト索引を保ち検索入力を増やします
Jina v5 Omniは写真・動画・音声も検索vectorに変換できます。例ではtext-smallで会議メモ、整合するomni-smallで写真質問を埋め込み、共通空間で順位付けします。memory内で1回検索し、索引保存・再利用はしません。
make_meeting_slide.pyを実行してmeeting-slide.jpgを作ります。検索codeをjina_search.pyとして保存し、実行すると関連する会議メモが上位に表示されます。
from PIL import Image
from sentence_transformers import SentenceTransformer
text_model = SentenceTransformer(
"jinaai/jina-embeddings-v5-text-small",
revision="dd76d535f5447ca3897a9c893fb1e612ead98192",
trust_remote_code=True,
model_kwargs={"default_task": "retrieval"},
)
omni_model = SentenceTransformer(
"jinaai/jina-embeddings-v5-omni-small",
revision="950200abde3a3bcf3d5bdfe5d28fb5bb5e7dfbb0",
trust_remote_code=True,
model_kwargs={"default_task": "retrieval", "modality": "vision"},
)
minutes = [
"title: Budget review | text: The team moved the Q4 review to Thursday at 10 a.m.",
"title: Product launch | text: The launch checklist assigns the demo to Mina.",
]
doc_vectors = text_model.encode_document(minutes, normalize_embeddings=True)
photo = Image.open("meeting-slide.jpg").convert("RGB")
query_vector = omni_model.encode_query(photo, normalize_embeddings=True)
scores = omni_model.similarity(query_vector, doc_vectors)[0]
for index in scores.argsort(descending=True).tolist():
print(f"{float(scores[index]):.4f}\t{minutes[index]}")python -m venv .venv
source .venv/bin/activate
python -m pip install -U 'transformers>=5.1' sentence-transformers pillow torchfrom PIL import Image, ImageDraw
image = Image.new("RGB", (1000, 700), "#f4f1e8")
draw = ImageDraw.Draw(image)
draw.rounded_rectangle((70, 70, 930, 630), radius=24, fill="white", outline="#26354a", width=4)
draw.text((130, 145), "Q4 BUDGET REVIEW", fill="#26354a")
draw.text((130, 235), "Thursday | 10:00 AM", fill="#26354a")
draw.text((130, 335), "Agenda: operating costs and hiring plan", fill="#26354a")
image.save("meeting-slide.jpg", quality=92)
print("saved meeting-slide.jpg")python make_meeting_slide.py
python jina_search.py
同じ検索集合で索引の利点を測ります

検索タスクと利用条件を確認します
Sentence Transformers では Omni モデルを default_task='retrieval' で読み込み、encode_query() と encode_document() を使います。画像・動画・音声も、クエリまたは文書の役割を指定して入力できます。text-small のインデックスと omni-small のクエリを比較する際は、両方に同じタスクアダプターを適用します。
モデルカードには CC BY-NC 4.0 ライセンスが適用されます。組織の業務で使う前に、ライセンスで認められる利用範囲を確認します。結果の表にはファイル形式、インデックス作成日、モデル revision、タスク、インデックス容量を記録します。
商用サービスに組み込む目的なら、このモデルを先に選ばないでください。重みのライセンスが非商用条件のため、収益が発生する機能には許容範囲を確認した別のモデルを比較する必要があります。

用語の注釈
よくある質問
- この記事で最初に確認すべきことは何ですか?
- Jina v5 Omniはテキスト・画像・動画・音声を共通の1,024次元空間に配置し、text-smallと整合します。CC BY-NC 4.0のため商用利用前に条件を確認します。
- 必要なメモリはどのくらいですか?
- Jina v5 Omniは写真・動画・音声も検索vectorに変換できます。例ではtext-smallで会議メモ、整合するomni-smallで写真質問を埋め込み、共通空間で順位付けします。memory内で1回検索し、索引保存・再利用はしません。
- 選ばないほうがよいのはどのような場合ですか?
- 商用サービスに組み込む目的なら、このモデルを先に選ばないでください。重みのライセンスが非商用条件のため、収益が発生する機能には許容範囲を確認した別のモデルを比較する必要があります。
- 条件と出典はどこで確認できますか?
- モデルカードには CC BY-NC 4.0 ライセンスが適用されます。組織の業務で使う前に、ライセンスで認められる利用範囲を確認します。結果の表にはファイル形式、インデックス作成日、モデル revision、タスク、インデックス容量を記録します。
