Vectorizers
矢量化器 API
HFTextVectorizer
class HFTextVectorizer(model='sentence-transformers/all-mpnet-base-v2', *, dims, client=None)
基本类:BaseVectorizer
HFTextVectorizer 类旨在利用 Hugging Face 的句子转换器的强大功能来生成文本嵌入。此矢量化器在需要高级自然语言处理和理解的场景中特别有用,并且非常适合在您自己的硬件上运行(免费)。
使用此矢量化器涉及从 Hugging Face 海量的句子转换器集合中指定一个预训练模型。这些模型针对各种数据集和任务进行训练,确保了多功能性和针对不同文本嵌入需求的鲁棒性能。此外,请确保使用 pip install sentence-transformers==2.2.2 安装 sentence-transformers 库。
# Embedding a single text
vectorizer = HFTextVectorizer(model="sentence-transformers/all-mpnet-base-v2")
embedding = vectorizer.embed("Hello, world!")
# Embedding a batch of texts
embeddings = vectorizer.embed_many(["Hello, world!", "How are you?"], batch_size=2)
初始化 Hugging Face 文本矢量化器。
- 参数
- model (str) – 要用于嵌入的 Hugging Face 的句子转换器的预训练模型。默认为“sentence-transformers/all-mpnet-base-v2”。
- dims (int) –
- client (Any) –
- 引发
- ImportError – 如果未安装 sentence-transformers 库。
- ValueError – 如果设置嵌入模型维度时出错。
embed(text, preprocess=None, as_buffer=False, **kwargs)
使用 Hugging Face 句子转换器嵌入一段文本。
- 参数
- text (str) – 要嵌入的文本块。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- 返回:嵌入。
- 返回类型: List[float]
- 引发: TypeError – 如果为文本传入错误的输入类型。
embed_many(texts, preprocess=None, batch_size=1000, as_buffer=False, **kwargs)
使用 Hugging Face 句子转换器异步嵌入多段文本。
- 参数
- texts (List *[*str ]) – 要嵌入的文本块列表。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- batch_size (int , optional) – 创建嵌入时要使用的文本批大小。默认为 10。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- 返回:嵌入列表。
- 返回类型: List[List[float]]
- 引发: TypeError – 如果为测试传入错误的输入类型。
OpenAITextVectorizer
class OpenAITextVectorizer(model='text-embedding-ada-002', api_config=None)
基本类:BaseVectorizer
OpenAITextVectorizer 类利用 OpenAI 的 API 为文本数据生成嵌入。
该向量化器被设计成与 OpenAI 的嵌入式 API 进行交互,需要一个 API 密钥进行身份验证。该密钥可以直接在 api_config 字典中提供,或通过 OPENAI_API_KEY 环境变量提供。用户必须从 OpenAI 的网站获取一个 API 密钥 (https://api.openai.com/)。此外,还必须使用 pip install openai>=1.13.0 来安装 openai python 客户端。
该向量化器支持同步操作和异步操作,允许批量处理文本和灵活处理预处理任务。
# Synchronous embedding of a single text
vectorizer = OpenAITextVectorizer(
model="text-embedding-ada-002",
api_config={"api_key": "your_api_key"} # OR set OPENAI_API_KEY in your env
)
embedding = vectorizer.embed("Hello, world!")
# Asynchronous batch embedding of multiple texts
embeddings = await vectorizer.aembed_many(
["Hello, world!", "How are you?"],
batch_size=2
)
初始化 OpenAI 向量化器。
- 参数
- model (str) – 用于嵌入的模型。默认为 'text-embedding-ada-002'。
- api_config (可选 *[*字典 ] , 可选) – 包含 API 密钥的字典。默认为 None。
- 引发
- ImportError – 如果未安装 openai 库。
- ValueError – 如果未提供 OpenAI API 密钥。
async aembed(text, preprocess=None, as_buffer=False, **kwargs)
使用 OpenAI API 异步嵌入一段文本。
- 参数
- text (str) – 要嵌入的文本块。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- 返回:嵌入。
- 返回类型: List[float]
- 引发: TypeError – 如果为测试传入错误的输入类型。
async aembed_many(texts, preprocess=None, batch_size=1000, as_buffer=False, **kwargs)
使用 OpenAI API 异步嵌入多段文本。
- 参数
- texts (List *[*str ]) – 要嵌入的文本块列表。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- batch_size (int , optional) – 创建嵌入时要使用的文本批大小。默认为 10。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- 返回:嵌入列表。
- 返回类型: List[List[float]]
- 引发: TypeError – 如果为测试传入错误的输入类型。
embed(text, preprocess=None, as_buffer=False, **kwargs)
使用 OpenAI API 嵌入一段文本。
- 参数
- text (str) – 要嵌入的文本块。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- 返回:嵌入。
- 返回类型: List[float]
- 引发: TypeError – 如果为测试传入错误的输入类型。
embed_many(texts, preprocess=None, batch_size=10, as_buffer=False, **kwargs)
使用 OpenAI API 嵌入多段文本。
- 参数
- texts (List *[*str ]) – 要嵌入的文本块列表。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- batch_size (int , optional) – 创建嵌入时要使用的文本批大小。默认为 10。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- 返回:嵌入列表。
- 返回类型: List[List[float]]
- 引发: TypeError – 如果为测试传入错误的输入类型。
VertexAITextVectorizer
class VertexAITextVectorizer(model='textembedding-gecko', api_config=None)
基本类:BaseVectorizer
VertexAITextVectorizer 使用 Google 的 VertexAI Palm 2 嵌入模型 API 来创建文本嵌入。
该向量化器专为在与 Google Cloud Platform (GCP) 服务集成是关键要求的环境中使用而量身定制。
要利用此向量化器,需要一个活动的 GCP 项目和位置(区域)以及适当的应用凭据。这些可以通过 api_config 字典或设置相应的环境变量来提供。此外,还必须使用 pip install google-cloud-aiplatform>=1.26 来安装 vertexai python 客户端。
# Synchronous embedding of a single text
vectorizer = VertexAITextVectorizer(
model="textembedding-gecko",
api_config={
"project_id": "your_gcp_project_id", # OR set GCP_PROJECT_ID
"location": "your_gcp_location", # OR set GCP_LOCATION
"google_application_credentials": "path_to_your_creds"
# OR set GOOGLE_APPLICATION_CREDENTIALS
})
embedding = vectorizer.embed("Hello, world!")
# Asynchronous batch embedding of multiple texts
embeddings = await vectorizer.embed_many(
["Hello, world!", "Goodbye, world!"],
batch_size=2
)
初始化 VertexAI 向量化器。
- 参数
- model (str) – 用于嵌入的模型。默认为 'textembedding-gecko'。
- api_config (可选 *[*字典 ] , 可选) – 包含 API 密钥的字典。默认为 None。
- 引发
- ImportError – 如果未安装 google-cloud-aiplatform 库。
- ValueError – 如果未提供 API 密钥。
embed(text, preprocess=None, as_buffer=False, **kwargs)
使用 VertexAI API 嵌入一段文本。
- 参数
- text (str) – 要嵌入的文本块。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- 返回:嵌入。
- 返回类型: List[float]
- 引发: TypeError – 如果为测试传入错误的输入类型。
embed_many(texts, preprocess=None, batch_size=10, as_buffer=False, **kwargs)
使用 VertexAI API 嵌入多段文本。
- 参数
- texts (List *[*str ]) – 要嵌入的文本块列表。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- batch_size (int , optional) – 创建嵌入时要使用的文本批大小。默认为 10。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- 返回:嵌入列表。
- 返回类型: List[List[float]]
- 引发: TypeError – 如果为测试传入错误的输入类型。
CohereTextVectorizer
class CohereTextVectorizer(model='embed-english-v3.0', api_config=None)
基本类:BaseVectorizer
CohereTextVectorizer 类利用 Cohere 的 API 为文本数据生成嵌入。
此矢量化工具旨在与 Cohere 的 /embed API 进行交互,需要 API 密钥进行身份验证。密钥可以直接在 api_config 字典中提供,或者通过 COHERE_API_KEY 环境变量提供。用户必须从 Cohere 的网站获取 API 密钥 (https://dashboard.cohere.com/)。此外,还必须使用 pip install cohere 安装 cohere python 客户端。
该矢量化工具仅支持同步操作,允许批量处理文本,并且在处理预处理任务方面具有灵活性。
from redisvl.utils.vectorize import CohereTextVectorizer
vectorizer = CohereTextVectorizer(
model="embed-english-v3.0",
api_config={"api_key": "your-cohere-api-key"} # OR set COHERE_API_KEY in your env
)
query_embedding = vectorizer.embed(
text="your input query text here",
input_type="search_query"
)
doc_embeddings = cohere.embed_many(
texts=["your document text", "more document text"],
input_type="search_document"
)
初始化 Cohere 矢量化工具。
访问 https://cohere.ai/embed 以了解嵌入。
- 参数
- model (str) – 用于嵌入的模型。默认为“embed-english-v3.0”。
- api_config (可选 *[*字典 ] , 可选) – 包含 API 密钥的字典。默认为 None。
- 引发
- ImportError – 如果未安装 cohere 库。
- ValueError – 如果未提供 API 密钥。
embed(text, preprocess=None, as_buffer=False, **kwargs)
使用 Cohere Embeddings API 嵌入文本块。
必须将嵌入 input_type 提供给此方法作为关键字参数,用于指定提供给模型的输入类型。
- 支持的输入类型
search_document
:用于存储在矢量数据库中的嵌入,用于搜索用例。search_query
:用于针对矢量数据库运行的搜索查询的嵌入,以查找相关文档。classification
:用于通过文本分类器传递的嵌入clustering
:用于通过聚类算法运行的嵌入。
当为 Redis 数据库注入数据时,应使用 input_type= “search_document” 嵌入要搜索的文档,当对数据库进行查询时,应将 input_type 设置为 “search query”。如果要将嵌入用于下游的分类或聚类任务,则应将 input_type 设置为 “classification” 或 “clustering”。
- 参数
- text (str) – 要嵌入的文本块。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- input_type (str) – 指定传递给模型的输入类型。嵌入模型 v3 及更高版本需要此参数。
- 返回:嵌入。
- 返回类型: List[float]
- Raises: TypeError – 当提供了无效的 input_type。
embed_many(texts, preprocess=None, batch_size=10, as_buffer=False, **kwargs)
使用 Cohere Embeddings API 嵌入多个文本块。
必须将嵌入 input_type 提供给此方法作为关键字参数,用于指定提供给模型的输入类型。
- 支持的输入类型
search_document
:用于存储在矢量数据库中的嵌入,用于搜索用例。search_query
:用于针对矢量数据库运行的搜索查询的嵌入,以查找相关文档。classification
:用于通过文本分类器传递的嵌入clustering
:用于通过聚类算法运行的嵌入。
当为 Redis 数据库注入数据时,应使用 input_type= “search_document” 嵌入要搜索的文档,当对数据库进行查询时,应将 input_type 设置为 “search query”。如果要将嵌入用于下游的分类或聚类任务,则应将 input_type 设置为 “classification” 或 “clustering”。
- 参数
- texts (List *[*str ]) – 要嵌入的文本块列表。
- preprocess (Optional *[*Callable ] , optional) – 在矢量化之前执行的可选预处理可调用项。默认为 None。
- batch_size (int , optional) – 创建嵌入时要使用的文本批大小。默认为 10。
- as_buffer (bool , optional) – 是否将原始嵌入转换为字节字符串。默认为 False。
- input_type (str) – 指定传递给模型的输入类型。嵌入模型 v3 及更高版本需要此参数。
- 返回:嵌入列表。
- 返回类型: List[List[float]]
- Raises: TypeError – 当提供了无效的 input_type。