async_dashscope/operation/embeddings/
param.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::operation::request::RequestTrait;
5
6#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
7pub struct EmbeddingsParam {
8    /// 调用模型名称,可以选择text-embedding-v1,text-embedding-v2或者text-embedding-v3
9    #[builder(setter(into))]
10    pub model: String,
11    pub input: EmbeddingsInput,
12
13    #[serde(skip_serializing_if = "Option::is_none")]
14    #[builder(setter(into, strip_option))]
15    #[builder(default=None)]
16    pub parameters: Option<EmbeddingsParameters>,
17
18    /// 文本转换为向量后可以应用于检索、聚类、分类等下游任务,
19    /// 对检索这类非对称任务为了达到更好的检索效果建议区分查询文本(query)和底库文本(document)类型,
20    ///  聚类、分类等对称任务可以不用特殊指定,采用系统默认值document即可。
21    #[serde(skip_serializing_if = "Option::is_none")]
22    #[builder(setter(into, strip_option))]
23    #[builder(default=None)]
24    pub text_type: Option<String>,
25}
26
27#[derive(Debug, Clone, Serialize, Builder, Deserialize, PartialEq)]
28pub struct EmbeddingsInput {
29    /// 文本列表
30    #[serde(skip_serializing_if = "Option::is_none")]
31    #[builder(setter(into, strip_option))]
32    #[builder(default=None)]
33    pub texts: Option<Vec<String>>,
34    /// 图片地址或者图片 base64
35    #[serde(skip_serializing_if = "Option::is_none")]
36    #[builder(setter(into, strip_option))]
37    #[builder(default=None)]
38    pub image: Option<String>,
39    /// 视频地址
40    #[serde(skip_serializing_if = "Option::is_none")]
41    #[builder(setter(into, strip_option))]
42    #[builder(default=None)]
43    pub video: Option<String>,
44}
45
46#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
47pub struct EmbeddingsParameters {
48    /// 向量维度,可选值:768、1024、1536、2048
49    /// 用于用户指定输出向量维度,只适用于text-embedding-v3与text-embedding-v4模型。指定的值只能在2048(仅适用于text-embedding-v4)、1536(仅适用于text-embedding-v4)1024、768、512、256、128或64八个值之间选取,默认值为1024。
50    #[builder(setter(into, strip_option))]
51    #[builder(default=None)]
52    pub dimension: Option<u16>,
53    /// 用户指定输出离散向量表示只适用于text_embedding_v3与text_embedding_v4模型,取值在dense、sparse、dense&sparse之间,默认取dense,只输出连续向量。
54    #[builder(setter(into, strip_option))]
55    #[builder(default=None)]
56    pub output_type: Option<String>,
57    /// 添加自定义任务说明,仅在使用 text-embedding-v4 模型且 text_type 为 query 时生效。建议使用英文撰写,通常可带来约 1%–5% 的效果提升。
58    #[builder(setter(into, strip_option))]
59    #[builder(default=None)]
60    pub instruct: Option<String>,
61}
62
63impl RequestTrait for EmbeddingsParam {
64    type P = EmbeddingsParameters;
65    fn model(&self) -> &str {
66        &self.model
67    }
68
69    fn parameters(&self) -> Option<&Self::P> {
70        self.parameters.as_ref()
71    }
72}