237 lines
6.4 KiB
Markdown
237 lines
6.4 KiB
Markdown
# Quick Start: Get Evaluations Running in a Flash
|
|
|
|
Get started with Ragas in minutes. Create a complete evaluation project with just a few commands.
|
|
|
|
## Step 1: Create Your Project
|
|
|
|
Choose one of the following methods:
|
|
|
|
=== "uvx (Recommended)"
|
|
No installation required. `uvx` automatically downloads and runs ragas:
|
|
|
|
```sh
|
|
uvx ragas quickstart rag_eval
|
|
cd rag_eval
|
|
```
|
|
|
|
=== "Install Ragas First"
|
|
Install ragas first, then create the project:
|
|
|
|
```sh
|
|
pip install ragas
|
|
ragas quickstart rag_eval
|
|
cd rag_eval
|
|
```
|
|
|
|
## Step 2: Install Dependencies
|
|
|
|
Install the project dependencies:
|
|
|
|
```sh
|
|
uv sync
|
|
```
|
|
|
|
Or if you prefer `pip`:
|
|
|
|
```sh
|
|
pip install -e .
|
|
```
|
|
|
|
## Step 3: Set Your API Key
|
|
|
|
By default, the quickstart example uses OpenAI. Set your API key and you're ready to go. You can also use some other provider with a minor change:
|
|
|
|
=== "OpenAI (Default)"
|
|
```sh
|
|
export OPENAI_API_KEY="your-openai-key"
|
|
```
|
|
|
|
The quickstart project is already configured to use OpenAI. You're all set!
|
|
|
|
=== "Anthropic Claude"
|
|
Set your Anthropic API key:
|
|
|
|
```sh
|
|
export ANTHROPIC_API_KEY="your-anthropic-key"
|
|
```
|
|
|
|
Then update the LLM initialization in `evals.py`:
|
|
|
|
```python
|
|
from anthropic import Anthropic
|
|
from ragas.llms import llm_factory
|
|
|
|
client = Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
|
|
llm = llm_factory("claude-3-5-sonnet-20241022", provider="anthropic", client=client)
|
|
```
|
|
|
|
=== "Google Gemini"
|
|
Set up your Google credentials:
|
|
|
|
```sh
|
|
export GOOGLE_API_KEY="your-google-api-key"
|
|
```
|
|
|
|
Then update the LLM initialization in `evals.py`:
|
|
|
|
**Option 1: Using Google's Official Library (Recommended)**
|
|
|
|
```python
|
|
import google.generativeai as genai
|
|
from ragas.llms import llm_factory
|
|
|
|
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)
|
|
# Adapter is auto-detected as "litellm" for google provider
|
|
```
|
|
|
|
For more Gemini options and detailed setup, see the [Google Gemini Integration Guide](../howtos/integrations/gemini.md).
|
|
|
|
=== "Local Models (Ollama)"
|
|
Install and run Ollama locally, then update the LLM initialization in `evals.py`:
|
|
|
|
```python
|
|
from openai import OpenAI
|
|
from ragas.llms import llm_factory
|
|
|
|
# Create an OpenAI-compatible client for Ollama
|
|
client = OpenAI(
|
|
api_key="ollama", # Ollama doesn't require a real key
|
|
base_url="http://localhost:11434/v1"
|
|
)
|
|
llm = llm_factory("mistral", provider="openai", client=client)
|
|
```
|
|
|
|
=== "Custom / Other Providers"
|
|
For any LLM with OpenAI-compatible API:
|
|
|
|
```python
|
|
from openai import OpenAI
|
|
from ragas.llms import llm_factory
|
|
|
|
client = OpenAI(
|
|
api_key="your-api-key",
|
|
base_url="https://your-api-endpoint"
|
|
)
|
|
llm = llm_factory("model-name", provider="openai", client=client)
|
|
```
|
|
|
|
For more details, learn about [LLM integrations](../concepts/metrics/index.md).
|
|
|
|
## Project Structure
|
|
|
|
Your generated project includes:
|
|
|
|
```sh
|
|
rag_eval/
|
|
├── README.md # Project documentation
|
|
├── pyproject.toml # Project configuration
|
|
├── rag.py # Your RAG application
|
|
├── evals.py # Evaluation workflow
|
|
├── __init__.py # Makes this a Python package
|
|
└── evals/
|
|
├── datasets/ # Test data files
|
|
├── experiments/ # Evaluation results
|
|
└── logs/ # Execution logs
|
|
```
|
|
|
|
## Step 4: Run Your Evaluation
|
|
|
|
Run the evaluation script:
|
|
|
|
```sh
|
|
uv run python evals.py
|
|
```
|
|
|
|
Or if you installed with `pip`:
|
|
|
|
```sh
|
|
python evals.py
|
|
```
|
|
|
|
The evaluation will:
|
|
- Load test data from the `load_dataset()` function in `evals.py`
|
|
- Query your RAG application with test questions
|
|
- Evaluate responses
|
|
- Display results in the console
|
|
- Save results to CSV in the `evals/experiments/` directory
|
|
|
|

|
|
|
|
Congratulations! You have a complete evaluation setup running. 🎉
|
|
|
|
---
|
|
|
|
## Customize Your Evaluation
|
|
|
|
### Add More Test Cases
|
|
|
|
Edit the `load_dataset()` function in `evals.py` to add more test questions:
|
|
|
|
```python
|
|
from ragas import Dataset
|
|
|
|
def load_dataset():
|
|
"""Load test dataset for evaluation."""
|
|
dataset = Dataset(
|
|
name="test_dataset",
|
|
backend="local/csv",
|
|
root_dir=".",
|
|
)
|
|
|
|
data_samples = [
|
|
{
|
|
"question": "What is Ragas?",
|
|
"grading_notes": "Ragas is an evaluation framework for LLM applications",
|
|
},
|
|
{
|
|
"question": "How do metrics work?",
|
|
"grading_notes": "Metrics evaluate the quality and performance of LLM responses",
|
|
},
|
|
# Add more test cases here
|
|
]
|
|
|
|
for sample in data_samples:
|
|
dataset.append(sample)
|
|
|
|
dataset.save()
|
|
return dataset
|
|
```
|
|
|
|
### Customize Evaluation Metrics
|
|
|
|
The template includes a `DiscreteMetric` for custom evaluation logic. You can customize the evaluation by:
|
|
|
|
1. **Modify the metric prompt** - Change the evaluation criteria
|
|
2. **Adjust allowed values** - Update valid output categories
|
|
3. **Add more metrics** - Create additional metrics for different aspects
|
|
|
|
Example of modifying the metric:
|
|
|
|
```python
|
|
from ragas.metrics import DiscreteMetric
|
|
from ragas.llms import llm_factory
|
|
|
|
my_metric = DiscreteMetric(
|
|
name="custom_evaluation",
|
|
prompt="Evaluate this response: {response} based on: {context}. Return 'excellent', 'good', or 'poor'.",
|
|
allowed_values=["excellent", "good", "poor"],
|
|
)
|
|
```
|
|
|
|
## What's Next?
|
|
|
|
- **Learn the concepts**: Read the [Evaluate a Simple LLM Application](evals.md) guide for deeper understanding
|
|
- **Custom metrics**: [Create your own metrics](../concepts/metrics/overview/index.md#output-types) using simple decorators
|
|
- **Production integration**: [Integrate evaluations into your CI/CD pipeline](../howtos/index.md)
|
|
- **RAG evaluation**: Evaluate [RAG systems](rag_eval.md) with specialized metrics
|
|
- **Agent evaluation**: Explore [AI agent evaluation](../howtos/applications/text2sql.md)
|
|
- **Test data generation**: [Generate synthetic test datasets](rag_testset_generation.md) for your evaluations
|
|
|
|
## Getting Help
|
|
|
|
- 📚 [Full Documentation](https://docs.ragas.io/)
|
|
- 💬 [Join our Discord Community](https://discord.gg/5djav8GGNZ)
|
|
- 🐛 [Report Issues](https://github.com/vibrantlabsai/ragas/issues)
|