Skip to main content

rig_core/providers/venice/
embedding.rs

1// ================================================================
2//! Venice Embeddings Integration
3//! From [Venice's embeddings endpoint](https://docs.venice.ai/api-reference/endpoint/embeddings/generate)
4// ================================================================
5
6use crate::providers::openai::embedding::{GenericEmbeddingModel, OpenAIEmbeddingsCompatible};
7
8use super::client::VeniceExt;
9
10// ================================================================
11// Venice Embedding API
12// ================================================================
13/// `text-embedding-bge-m3`
14pub const TEXT_EMBEDDING_BGE_M3: &str = "text-embedding-bge-m3";
15/// `text-embedding-bge-en-icl`
16pub const TEXT_EMBEDDING_BGE_EN_ICL: &str = "text-embedding-bge-en-icl";
17/// `text-embedding-qwen3-8b`
18pub const TEXT_EMBEDDING_QWEN3_8B: &str = "text-embedding-qwen3-8b";
19/// `text-embedding-qwen3-0-6b`
20pub const TEXT_EMBEDDING_QWEN3_0_6B: &str = "text-embedding-qwen3-0-6b";
21/// `text-embedding-multilingual-e5-large-instruct`
22pub const TEXT_EMBEDDING_MULTILINGUAL_E5_LARGE_INSTRUCT: &str =
23    "text-embedding-multilingual-e5-large-instruct";
24
25// Venice's embeddings endpoint is OpenAI-compatible on every field Rig sends:
26// `model`, `input`, `encoding_format`, `dimensions` (honored — a request for
27// 256 dimensions returns 256), and `user` (accepted for compatibility), and it
28// answers with `usage`.
29impl OpenAIEmbeddingsCompatible for VeniceExt {
30    const PROVIDER_NAME: &'static str = "venice";
31}
32
33/// Venice embedding model, driven by the shared OpenAI-compatible
34/// embeddings path.
35pub type EmbeddingModel<T = reqwest::Client> = GenericEmbeddingModel<VeniceExt, T>;