跳到内容

向量

以下介绍了可用的向量模型配置选项。

路径

path: string

设置向量模型的路径。当使用 transformers/sentence-transformers 模型时,这可以是 Hugging Face Hub 上的任何模型或本地文件路径。否则,它必须是指向词嵌入模型的本地文件路径。

默认值

defaults: boolean

启用时(默认设置为 True)且未提供 path 时,使用默认的向量模型路径。有关示例,请参阅 此链接

方法

method: transformers|sentence-transformers|llama.cpp|litellm|model2vec|external|words

要使用的嵌入方法。如果未提供方法,则根据 path 推断。

sentence-transformers, llama.cpp, litellm, model2vecwords 需要安装 vectors 额外包。

transformers

使用 transformers 模型构建嵌入。虽然这可以是任何 transformers 模型,但它最适合用于构建嵌入的训练模型

支持 meancls 池化,并自动从模型中推断。可以通过将方法从 transformers 分别更改为 meanpoolingclspooling 来覆盖池化方法。

maxlength 设置为 True 会将输入截断为 max_seq_length。将 maxlength 设置为整数会将输入截断为该值。省略时(默认),maxlength 将设置为模型或分词器的最大长度。

sentence-transformers

与 transformers 相同,但使用 sentence-transformers 库加载模型。

llama.cpp

使用 llama.cpp 模型构建嵌入。支持 HF Hub 上的本地和远程 GGUF 路径。

litellm

使用 LiteLLM 模型构建嵌入。有关 LiteLLM 模型可用的选项,请参阅 LiteLLM 文档

model2vec

使用 Model2Vec 模型构建嵌入。Model2Vec 是具有静态向量的 transformers 模型的知识蒸馏版本。

words

使用词嵌入模型和静态向量构建嵌入。虽然在大多数情况下首选 Transformers 模型,但此方法对于语言数据不多的低资源和历史语言非常有用。

pca

pca: int

从生成的嵌入中移除 n 个主成分。启用时,将构建 TruncatedSVD 模型以帮助降维。向量池化创建单个嵌入后,应用此方法。

external

通过外部模型或 API 创建嵌入。需要将 transform 参数设置为将数据转换为嵌入的函数。

transform

transform: function

当方法为 external 时,此函数将输入内容转换为嵌入。此函数的输入是数据列表。此方法必须返回 numpy 数组或 numpy 数组列表。

gpu

gpu: boolean|int|string|device

设置目标设备。支持 true/false、设备 ID、设备字符串和 torch 设备实例。如果省略,则会自动推导。

sentence-transformers 方法支持使用多个 GPU 进行编码。可以通过将 gpu 参数设置为 all 来启用此功能。

batch

batch: int

设置转换批处理大小。此参数控制输入流如何分块和向量化。

encodebatch

encodebatch: int

设置编码批处理大小。此参数控制底层向量模型的批处理大小。这通常对应于 GPU 批处理大小,用于控制 GPU 内存使用。

dimensionality

dimensionality: int

启用将向量截断到此维度。这仅对将更重要信息存储在早期维度的模型有用,例如 Matryoshka 表示学习 (MRL)

quantize

quantize: int|boolean

启用指定精度的标量向量量化。支持 1 位到 8 位量化。标量量化将连续浮点值转换为离散无符号整数。faiss, pgvector, numpytorch ANN 后端支持存储这些向量。

此参数支持布尔值以实现向后兼容。设置为 true/false 时,此标志设置 faiss.quantize

除了向量级量化外,某些 ANN 后端还能够在存储层进行向量量化。有关更多信息,请参阅 ANN 配置选项。

instructions

instructions:
    query: prefix for queries
    data: prefix for indexing

基于指令的模型使用前缀来修改嵌入的计算方式。这对于非对称搜索特别有用,即查询和索引数据的长度差异很大时。换句话说,短查询与长文档。

E5-base 是接受指令的模型示例。它接受 query:passage: 前缀,并使用它们生成适用于非对称搜索的嵌入。

models

models: dict

在此缓存中加载和存储向量模型。这主要用于子索引,但可以在任何嵌入实例上设置。这可以防止在使用多个嵌入实例时多次加载同一个模型。

tokenize

tokenize: boolean

启用字符串分词(默认为 false)。此方法应用仅适用于英文文本的分词规则。不建议与最新向量模型一起使用。

向量

vectors: dict

将这些附加参数传递给底层向量模型。