嵌入
BaseRagasEmbedding
基类:ABC
用于 Ragas 嵌入实现的现代抽象基类。
此类为使用各种提供商嵌入文本提供了一致的接口。实现应提供嵌入单个文本的同步和异步方法,并自动提供批处理方法。
embed_text abstractmethod
嵌入单个文本。
参数: text:要嵌入的文本 **kwargs:嵌入调用的附加参数
返回: 表示嵌入的浮点数列表
源代码位于 src/ragas/embeddings/base.py
aembed_text abstractmethod async
异步嵌入单个文本。
参数: text:要嵌入的文本 **kwargs:嵌入调用的附加参数
返回: 表示嵌入的浮点数列表
源代码位于 src/ragas/embeddings/base.py
embed_texts
嵌入多个文本。
默认实现单独处理文本。可重写以进行批处理优化。
参数: texts:要嵌入的文本列表 **kwargs:嵌入调用的附加参数
返回: 嵌入列表,每个输入文本对应一个
源代码位于 src/ragas/embeddings/base.py
aembed_texts async
异步嵌入多个文本。
默认实现并发处理文本。可重写以进行批处理优化。
参数: texts:要嵌入的文本列表 **kwargs:嵌入调用的附加参数
返回: 嵌入列表,每个输入文本对应一个
源代码位于 src/ragas/embeddings/base.py
BaseRagasEmbeddings
BaseRagasEmbeddings(cache: Optional[CacheInterface] = None)
基类:Embeddings, ABC
Ragas 嵌入的抽象基类。
此类扩展了 Embeddings 类,并提供了用于嵌入文本和管理运行配置的方法。
属性: run_config (RunConfig):用于运行嵌入操作的配置。
源代码位于 src/ragas/embeddings/base.py
embed_text async
embed_texts async
嵌入多个文本。
源代码位于 src/ragas/embeddings/base.py
HuggingfaceEmbeddings
HuggingfaceEmbeddings(cache: Optional[CacheInterface] = None)
用于使用预训练模型生成嵌入的 Hugging Face 嵌入类。
此类提供了加载和使用 Hugging Face 模型来生成文本输入嵌入的功能。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
model_name
|
str
|
要使用的预训练模型名称,默认为 DEFAULT_MODEL_NAME。 |
必需 |
cache_folder
|
str
|
存储下载模型的路径。也可以通过 SENTENCE_TRANSFORMERS_HOME 环境变量设置。 |
必需 |
model_kwargs
|
dict
|
传递给模型的附加关键字参数。 |
必需 |
encode_kwargs
|
dict
|
传递给编码方法的附加关键字参数。 |
必需 |
属性
| 名称 | 类型 | 描述 |
|---|---|---|
model |
Union[SentenceTransformer, CrossEncoder]
|
已加载的 Hugging Face 模型。 |
is_cross_encoder |
bool
|
指示模型是否为交叉编码器的标志。 |
方法
| 名称 | 描述 |
|---|---|
embed_query |
嵌入单个查询文本。 |
embed_documents |
嵌入多个文档。 |
predict |
使用交叉编码器模型进行预测。 |
备注
此类需要安装 sentence_transformers 和 transformers 包。
示例
>>> embeddings = HuggingfaceEmbeddings(model_name="bert-base-uncased")
>>> query_embedding = embeddings.embed_query("What is the capital of France?")
>>> doc_embeddings = embeddings.embed_documents(["Paris is the capital of France.", "London is the capital of the UK."])
源代码位于 src/ragas/embeddings/base.py
embed_query
embed_documents
嵌入多个文档。
源代码位于 src/ragas/embeddings/base.py
predict
使用交叉编码器模型进行预测。
源代码位于 src/ragas/embeddings/base.py
GoogleEmbeddings
GoogleEmbeddings(client: Optional[Any] = None, model: str = 'text-embedding-004', use_vertex: bool = False, project_id: Optional[str] = None, location: Optional[str] = 'us-central1', **kwargs: Any)
使用 Vertex AI 或 Google AI (Gemini) 的 Google 嵌入。
支持 Vertex AI 和 Google AI (Gemini) 嵌入模型。对于 Vertex AI,需要 google-cloud-aiplatform 包。对于 Google AI,需要 google-generativeai 包。
client 参数是灵活的: - 对于 Gemini:可以是 None(自动导入 genai)、genai 模块或 GenerativeModel 实例 - 对于 Vertex:应该是已配置的 vertex 客户端
示例:# Gemini - 自动导入(最简单) embeddings = GoogleEmbeddings(client=None, model="text-embedding-004")
# Gemini - explicit genai module
import google.generativeai as genai
genai.configure(api_key="...")
embeddings = GoogleEmbeddings(client=genai, model="text-embedding-004")
# Gemini - from LLM client (auto-extracts genai module)
llm_client = genai.GenerativeModel("gemini-2.0-flash")
embeddings = GoogleEmbeddings(client=llm_client, model="text-embedding-004")
源代码位于 src/ragas/embeddings/google_provider.py
embed_text
使用 Google 的嵌入服务嵌入单个文本。
源代码位于 src/ragas/embeddings/google_provider.py
aembed_text async
使用 Google 的嵌入服务异步嵌入单个文本。
Google 的 SDK 不提供原生异步支持,因此我们使用 ThreadPoolExecutor。
源代码位于 src/ragas/embeddings/google_provider.py
embed_texts
使用 Google 的嵌入服务嵌入多个文本。
源代码位于 src/ragas/embeddings/google_provider.py
aembed_texts async
使用 Google 的嵌入服务异步嵌入多个文本。
源代码位于 src/ragas/embeddings/google_provider.py
HaystackEmbeddingsWrapper
HaystackEmbeddingsWrapper(embedder: Any, run_config: Optional[RunConfig] = None, cache: Optional[CacheInterface] = None)
在 Ragas 框架内使用 Haystack embedder 的包装器。
此类允许您使用同步和异步方法(embed_query/embed_documents 和 aembed_query/aembed_documents)通过 Haystack embedder 生成嵌入。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
embedder
|
AzureOpenAITextEmbedder | HuggingFaceAPITextEmbedder | OpenAITextEmbedder | SentenceTransformersTextEmbedder
|
受支持的 Haystack embedder 类的实例。 |
必需 |
run_config
|
RunConfig
|
用于管理嵌入执行设置的配置对象,默认为 None。 |
None
|
cache
|
CacheInterface
|
用于存储和检索嵌入结果的缓存实例,默认为 None。 |
None
|
源代码位于 src/ragas/embeddings/haystack_wrapper.py
HuggingFaceEmbeddings
HuggingFaceEmbeddings(model: str, use_api: bool = False, api_key: Optional[str] = None, device: Optional[str] = None, normalize_embeddings: bool = True, batch_size: int = 32, **model_kwargs: Any)
支持本地和基于 API 的模型的 HuggingFace 嵌入。
支持使用 sentence-transformers 的本地模型和 HuggingFace API 的托管模型。提供高效的批处理和缓存。
源代码位于 src/ragas/embeddings/huggingface_provider.py
embed_text
使用 HuggingFace 嵌入单个文本。
aembed_text async
使用 HuggingFace 异步嵌入单个文本。
源代码位于 src/ragas/embeddings/huggingface_provider.py
embed_texts
使用 HuggingFace 批量嵌入多个文本。
源代码位于 src/ragas/embeddings/huggingface_provider.py
aembed_texts async
使用 HuggingFace 异步嵌入多个文本。
源代码位于 src/ragas/embeddings/huggingface_provider.py
LiteLLMEmbeddings
LiteLLMEmbeddings(model: str, api_key: Optional[str] = None, api_base: Optional[str] = None, api_version: Optional[str] = None, timeout: int = 600, max_retries: int = 3, batch_size: Optional[int] = None, **litellm_params: Any)
使用 LiteLLM 的通用嵌入接口。
支持 OpenAI、Azure、Google、Cohere、Anthropic 等超过 100 种模型。提供智能批处理和特定于提供商的优化。
源代码位于 src/ragas/embeddings/litellm_provider.py
embed_text
使用 LiteLLM 嵌入单个文本。
源代码位于 src/ragas/embeddings/litellm_provider.py
aembed_text async
使用 LiteLLM 异步嵌入单个文本。
源代码位于 src/ragas/embeddings/litellm_provider.py
embed_texts
使用 LiteLLM 智能批处理嵌入多个文本。
源代码位于 src/ragas/embeddings/litellm_provider.py
aembed_texts async
使用 LiteLLM 智能批处理异步嵌入多个文本。
源代码位于 src/ragas/embeddings/litellm_provider.py
OpenAIEmbeddings
具有批处理优化的 OpenAI 嵌入实现。
支持同步和异步 OpenAI 客户端,并能自动检测。提供优化的批处理以获得更好的性能。
源代码位于 src/ragas/embeddings/openai_provider.py
embed_text
使用 OpenAI 嵌入单个文本。
对于异步客户端,这将在适当的事件循环中运行异步方法。
源代码位于 src/ragas/embeddings/openai_provider.py
aembed_text async
使用 OpenAI 异步嵌入单个文本。
源代码位于 src/ragas/embeddings/openai_provider.py
embed_texts
使用 OpenAI 的批处理 API 优化嵌入多个文本。
源代码位于 src/ragas/embeddings/openai_provider.py
aembed_texts async
使用 OpenAI 的批处理 API 异步嵌入多个文本。
源代码位于 src/ragas/embeddings/openai_provider.py
batch_texts
将文本列表分批成更小的块。
参数: texts:要分批的文本列表 batch_size:每个批次的大小
返回: 批次列表,其中每个批次是文本列表
源代码位于 src/ragas/embeddings/utils.py
get_optimal_batch_size
获取提供商/模型组合的最佳批处理大小。
参数: provider:嵌入提供商 model:模型名称
返回: 提供商/模型的最佳批处理大小
源代码位于 src/ragas/embeddings/utils.py
validate_texts
验证并规范化文本输入。
参数: texts:单个文本或文本列表
返回: 经过验证的文本列表
引发: ValueError:如果文本无效
源代码位于 src/ragas/embeddings/utils.py
embedding_factory
已弃用:请直接使用 base 模块中的 embedding_factory。