操作指南

本节中的每个指南都针对您作为有经验的用户在使用 Ragas 时可能遇到的实际问题提供了专注的解决方案。这些指南设计得简洁直接,为您的问题提供快速解决方案。我们假设您对 Ragas 的概念有基本了解且能够熟练使用。如果不是,请先浏览 快速入门 (Get Started)部分。

Google Gemini 集成指南

本指南介绍如何设置和使用 Google 的 Gemini 模型与 Ragas 进行评估。

概述

Ragas 支持 Google Gemini 模型,并自动选择适配器。该框架同时支持新的 google-genai SDK(推荐)和旧版 google-generativeai SDK。

设置

前提条件
  • 具有 Gemini API 访问权限的 Google API 密钥
  • Python 3.8+
  • 已安装 Ragas
安装

安装所需依赖:

# Recommended: New Google GenAI SDK
pip install ragas google-genai

# Legacy (deprecated, support ends Aug 2025)
pip install ragas google-generativeai

配置

选项 1:使用新的 Google GenAI SDK(推荐)

新的 google-genai SDK 是推荐的方式:

import os
from google import genai
from ragas.llms import llm_factory

# Create client with API key
client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY"))

# Create LLM - adapter is auto-detected for google provider
llm = llm_factory(
    "gemini-2.0-flash",
    provider="google",
    client=client
)
选项 2:使用旧版 SDK(已弃用)

旧版 google-generativeai SDK 仍然可用,但已弃用(支持截止日期:2025 年 8 月):

import os
import google.generativeai as genai
from ragas.llms import llm_factory

# Configure with your API key
genai.configure(api_key=os.environ.get("GOOGLE_API_KEY"))

# Create client
client = genai.GenerativeModel("gemini-2.0-flash")

# Create LLM
llm = llm_factory(
    "gemini-2.0-flash",
    provider="google",
    client=client
)
选项 3:使用 LiteLLM 代理(高级)

对于需要 LiteLLM 代理功能的高级用例,先设置 LiteLLM 代理服务器,然后使用:

import os
from openai import OpenAI
from ragas.llms import llm_factory

# Requires running: litellm --model gemini-2.0-flash
client = OpenAI(
    api_key="anything",
    base_url="http://0.0.0.0:4000"  # LiteLLM proxy endpoint
)

# Create LLM with explicit adapter selection
llm = llm_factory("gemini-2.0-flash", client=client, adapter="litellm")

支持的模型

Ragas 适用于所有 Gemini 模型:

  • 最新版: gemini-2.0-flash (推荐)
  • 1.5 系列: gemini-1.5-pro 、 gemini-1.5-flash
  • 1.0 系列: gemini-1.0-pro

有关最新模型和定价,请参见 Google AI Studio。

嵌入配置

Ragas 指标分为两类:

  1. 仅 LLM 指标(不需要嵌入):
  2. ContextPrecision(上下文精确度)
  3. ContextRecall(上下文召回率)
  4. Faithfulness(忠实度)
  5. AspectCritic(方面批评)
  6. 依赖嵌入的指标(需要嵌入):
  7. AnswerCorrectness(答案正确性)
  8. AnswerRelevancy(答案相关性)
  9. AnswerSimilarity(答案相似度)
  10. SemanticSimilarity(语义相似度)
  11. ContextEntityRecall(上下文实体召回率)
自动提供商匹配

当将 Ragas 与 Gemini 一起使用时,嵌入提供商会自动匹配您的 LLM 提供商。如果您提供 Gemini LLM,Ragas 将默认使用 Google 嵌入。无需 OpenAI API 密钥。

选项 1:默认嵌入(推荐)

让 Ragas 根据您的 LLM 自动选择合适的嵌入:

import os
from datasets import Dataset
from google import genai
from ragas import evaluate
from ragas.llms import llm_factory
from ragas.metrics import (
    AnswerCorrectness,
    ContextPrecision,
    ContextRecall,
    Faithfulness
)

# Initialize Gemini client (new SDK)
client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY"))
llm = llm_factory("gemini-2.0-flash", provider="google", client=client)

# Create sample evaluation data
data = {
    "question": ["What is the capital of France?"],
    "answer": ["Paris is the capital of France."],
    "contexts": [["France is a country in Western Europe. Paris is its capital."]],
    "ground_truth": ["Paris"]
}

dataset = Dataset.from_dict(data)

# Define metrics - embeddings are auto-configured for Google
metrics = [
    ContextPrecision(llm=llm),
    ContextRecall(llm=llm),
    Faithfulness(llm=llm),
    AnswerCorrectness(llm=llm)  # Uses Google embeddings automatically
]

# Run evaluation
results = evaluate(dataset, metrics=metrics)
print(results)
选项 2:显式嵌入

如需对嵌入进行显式控制,可以单独创建。Google 嵌入支持多种配置选项:

import os
from google import genai
from ragas.llms import llm_factory
from ragas.embeddings import GoogleEmbeddings
from ragas.embeddings.base import embedding_factory
from datasets import Dataset
from ragas import evaluate
from ragas.metrics import AnswerCorrectness, ContextPrecision, ContextRecall, Faithfulness

# Initialize Gemini client (new SDK)
client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY"))
llm = llm_factory("gemini-2.0-flash", provider="google", client=client)

# Initialize Google embeddings (multiple options):

# Option A: Using the same client (recommended for new SDK)
embeddings = GoogleEmbeddings(client=client, model="gemini-embedding-001")

# Option B: Using embedding factory
embeddings = embedding_factory("google", model="gemini-embedding-001")

# Option C: Auto-import (creates client automatically)
embeddings = GoogleEmbeddings(model="gemini-embedding-001")

# Create sample evaluation data
data = {
    "question": ["What is the capital of France?"],
    "answer": ["Paris is the capital of France."],
    "contexts": [["France is a country in Western Europe. Paris is its capital."]],
    "ground_truth": ["Paris"]
}

dataset = Dataset.from_dict(data)

# Define metrics with explicit embeddings
metrics = [
    ContextPrecision(llm=llm),
    ContextRecall(llm=llm),
    Faithfulness(llm=llm),
    AnswerCorrectness(llm=llm, embeddings=embeddings)
]

# Run evaluation
results = evaluate(dataset, metrics=metrics)
print(results)

示例:完整评估

以下是使用 Gemini 评估 RAG 应用的完整示例(使用自动嵌入提供商匹配):

import os
from datasets import Dataset
from google import genai
from ragas import evaluate
from ragas.llms import llm_factory
from ragas.metrics import (
    AnswerCorrectness,
    ContextPrecision,
    ContextRecall,
    Faithfulness
)

# Initialize Gemini client (new SDK)
client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY"))
llm = llm_factory("gemini-2.0-flash", provider="google", client=client)

# Create sample evaluation data
data = {
    "question": ["What is the capital of France?"],
    "answer": ["Paris is the capital of France."],
    "contexts": [["France is a country in Western Europe. Paris is its capital."]],
    "ground_truth": ["Paris"]
}

dataset = Dataset.from_dict(data)

# Define metrics - embeddings automatically use Google provider
metrics = [
    ContextPrecision(llm=llm),
    ContextRecall(llm=llm),
    Faithfulness(llm=llm),
    AnswerCorrectness(llm=llm)
]

# Run evaluation
results = evaluate(dataset, metrics=metrics)
print(results)

性能考量

模型选择
  • gemini-2.0-flash :速度和效率最佳
  • gemini-1.5-pro :复杂评估的推理能力更好
  • gemini-1.5-flash :速度和成本的良好平衡
成本优化

Gemini 模型具有成本效益。对于大规模评估:

  1. 对大多数指标使用 gemini-2.0-flash
  2. 考虑对多个评估进行批处理
  3. 尽可能缓存提示词(Gemini 支持提示词缓存)
异步支持

对于高吞吐量评估,使用异步操作:

import os
from google import genai
from ragas.llms import llm_factory

# Create client (new SDK)
client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY"))
llm = llm_factory("gemini-2.0-flash", provider="google", client=client)

# Use in async evaluation
# response = await llm.agenerate(prompt, ResponseModel)
适配器选择

Ragas 根据您的设置自动选择合适的适配器:

# Auto-detection happens automatically
# For Gemini: uses LiteLLM adapter
# For other providers: uses Instructor adapter

# Explicit selection (if needed)
llm = llm_factory(
    "gemini-2.0-flash",
    client=client,
    adapter="litellm"  # Explicit adapter selection
)

# Check auto-detected adapter
from ragas.llms.adapters import auto_detect_adapter
adapter_name = auto_detect_adapter(client, "google")
print(f"Using adapter: {adapter_name}")  # Output: Using adapter: litellm

故障排除

API 密钥问题
# Make sure your API key is set
import os
if not os.environ.get("GOOGLE_API_KEY"):
    raise ValueError("GOOGLE_API_KEY environment variable not set")
已知问题:Instructor 安全设置(新 SDK)

instructor 库存在一个已知的上游问题,当使用新的 google-genai SDK 时,它会向 Gemini API 发送无效的安全设置。这可能导致类似以下的错误:

Invalid value at 'safety_settings[5].category'... "HARM_CATEGORY_JAILBREAK"

解决方法:

  1. 使用兼容 OpenAI 的端点(目前推荐)
from openai import OpenAI
client = OpenAI(
    api_key=os.environ.get("GOOGLE_API_KEY"),
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
llm = llm_factory("gemini-2.0-flash", provider="openai", client=client)
  1. 跟踪上游问题:instructor#1658

注意:嵌入在新 SDK 中正常工作——此问题仅影响 LLM 生成。

速率限制

Gemini 有速率限制。对于生产用途,LLM 适配器会自动处理重试和超时。如果需要细粒度控制,请确保您的客户端在 HTTP 客户端级别正确配置了适当的超时设置。

模型可用性

如果模型不可用:

  1. 在 Google Cloud Console 中检查您的区域/配额
  2. 尝试支持列表中的其他模型
  3. 验证您的 API 密钥是否有权访问生成式 AI API

从其他提供商迁移

从 OpenAI
# Before: OpenAI-only
from openai import OpenAI
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
llm = llm_factory("gpt-4o", client=client)

# After: Gemini with new SDK
from google import genai
client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY"))
llm = llm_factory("gemini-2.0-flash", provider="google", client=client)
从 Anthropic
# Before: Anthropic
from anthropic import Anthropic
client = Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
llm = llm_factory("claude-3-sonnet", provider="anthropic", client=client)

# After: Gemini with new SDK
from google import genai
client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY"))
llm = llm_factory("gemini-2.0-flash", provider="google", client=client)
从旧版 google-generativeai SDK
# Before: Legacy SDK (deprecated)
import google.generativeai as genai
genai.configure(api_key=os.environ.get("GOOGLE_API_KEY"))
client = genai.GenerativeModel("gemini-2.0-flash")
llm = llm_factory("gemini-2.0-flash", provider="google", client=client)

# After: New SDK (recommended)
from google import genai
client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY"))
llm = llm_factory("gemini-2.0-flash", provider="google", client=client)

与指标集合一起使用(现代方法)

对于现代指标集合 API,您需要显式创建 LLM 和嵌入:

import os
from google import genai
from ragas.llms import llm_factory
from ragas.embeddings import GoogleEmbeddings
from ragas.metrics.collections import AnswerCorrectness, ContextPrecision

# Create client (new SDK)
client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY"))

# Create LLM
llm = llm_factory("gemini-2.0-flash", provider="google", client=client)

# Create embeddings using the same client
embeddings = GoogleEmbeddings(client=client, model="gemini-embedding-001")

# Create metrics with explicit LLM and embeddings
metrics = [
    ContextPrecision(llm=llm),  # LLM-only metric
    AnswerCorrectness(llm=llm, embeddings=embeddings),  # Needs both
]

# Use metrics with your evaluation workflow
result = await metrics[1].ascore(
    user_input="What is the capital of France?",
    response="Paris",
    reference="Paris is the capital of France."
)

与旧版方法的主要区别:

  • 旧版 evaluate() :从 LLM 提供商自动创建嵌入
  • 现代集合:您显式将嵌入传递给每个指标

这为您提供了更多控制权,并与 Gemini 无缝配合!

支持的指标

所有 Ragas 指标都适用于 Gemini:

  • Answer Correctness(答案正确性)
  • Answer Relevancy(答案相关性)
  • Answer Similarity(答案相似度)
  • Aspect Critique(方面批评)
  • Context Precision(上下文精确度)
  • Context Recall(上下文召回率)
  • Context Entities Recall(上下文实体召回率)
  • Faithfulness(忠实度)
  • NLI Eval(自然语言推理评估)
  • Response Relevancy(响应相关性)

有关详细信息,请参见指标参考(Metrics Reference)。

高级:自定义模型参数

向 Gemini 传递自定义参数:

llm = llm_factory(
    "gemini-2.0-flash",
    client=client,
    temperature=0.5,
    max_tokens=2048,
    top_p=0.9,
    top_k=40,
)

资源

  • Google GenAI SDK 文档
  • Google Gemini API 文档
  • Ragas 指标文档
  • Ragas LLM 工厂指南
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐