339 lines
7.4 KiB
Markdown
339 lines
7.4 KiB
Markdown
# Providers
|
|
|
|
haiku.rag supports multiple AI providers for embeddings, question answering, and reranking. This guide covers provider-specific configuration and setup.
|
|
|
|
!!! note
|
|
You can use a `.env` file in your project directory to set environment variables like `OLLAMA_BASE_URL` and API keys (e.g., `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`). These will be automatically loaded when running `haiku-rag` commands.
|
|
|
|
## Model Settings
|
|
|
|
Configure model behavior for `qa` and `research` workflows. These settings apply to any provider that supports them.
|
|
|
|
### Basic Settings
|
|
|
|
```yaml
|
|
qa:
|
|
model:
|
|
provider: ollama
|
|
name: gpt-oss
|
|
temperature: 0.7
|
|
max_tokens: 500
|
|
```
|
|
|
|
**Available options:**
|
|
|
|
- **temperature**: Sampling temperature (0.0-1.0+)
|
|
- Lower (0.0-0.3): Deterministic, focused responses
|
|
- Medium (0.4-0.7): Balanced
|
|
- Higher (0.8-1.0+): Creative, varied responses
|
|
- **max_tokens**: Maximum tokens in response
|
|
- **enable_thinking**: Control reasoning behavior (see below)
|
|
|
|
### Thinking Control
|
|
|
|
The `enable_thinking` setting controls whether models use explicit reasoning steps before answering.
|
|
|
|
```yaml
|
|
qa:
|
|
model:
|
|
enable_thinking: false # Faster responses
|
|
|
|
research:
|
|
model:
|
|
enable_thinking: true # Deeper reasoning
|
|
```
|
|
|
|
**Values:**
|
|
- `false`: Disable reasoning for faster responses
|
|
- `true`: Enable reasoning for complex tasks
|
|
- Not set: Use model defaults
|
|
|
|
**Provider support:**
|
|
|
|
See the [Pydantic AI thinking documentation](https://ai.pydantic.dev/thinking/) for detailed provider support. haiku.rag supports thinking control for:
|
|
|
|
- **OpenAI**: Reasoning models (o1, o3, gpt-oss)
|
|
- **Anthropic**: All Claude models
|
|
- **Google**: Gemini models with thinking support
|
|
- **Groq**: Models with reasoning capabilities
|
|
- **Bedrock**: Claude, OpenAI, and Qwen models
|
|
- **Ollama**: Models supporting reasoning (gpt-oss, etc.)
|
|
- **vLLM**: Models supporting reasoning (gpt-oss, etc.)
|
|
|
|
**When to use:**
|
|
- Disable for simple queries, RAG workflows, speed-critical applications
|
|
- Enable for complex reasoning, mathematical problems, research tasks
|
|
|
|
## Embedding Providers
|
|
|
|
If you use Ollama, you can use any pulled model that supports embeddings.
|
|
|
|
### Ollama (Default)
|
|
|
|
```yaml
|
|
embeddings:
|
|
provider: ollama
|
|
model: mxbai-embed-large
|
|
vector_dim: 1024
|
|
```
|
|
|
|
The Ollama base URL can be configured in your config file or via environment variable:
|
|
|
|
```yaml
|
|
providers:
|
|
ollama:
|
|
base_url: http://localhost:11434
|
|
```
|
|
|
|
Or via environment variable:
|
|
|
|
```bash
|
|
export OLLAMA_BASE_URL=http://localhost:11434
|
|
```
|
|
|
|
If not configured, it defaults to `http://localhost:11434`.
|
|
|
|
### VoyageAI
|
|
|
|
If you installed `haiku.rag` (full package), VoyageAI is already included. If you installed `haiku.rag-slim`, install with VoyageAI extras:
|
|
|
|
```bash
|
|
uv pip install haiku.rag-slim[voyageai]
|
|
```
|
|
|
|
```yaml
|
|
embeddings:
|
|
provider: voyageai
|
|
model: voyage-3.5
|
|
vector_dim: 1024
|
|
```
|
|
|
|
Set your API key via environment variable:
|
|
|
|
```bash
|
|
export VOYAGE_API_KEY=your-api-key
|
|
```
|
|
|
|
### OpenAI
|
|
|
|
OpenAI embeddings are included in the default installation:
|
|
|
|
```yaml
|
|
embeddings:
|
|
provider: openai
|
|
model: text-embedding-3-small # or text-embedding-3-large
|
|
vector_dim: 1536
|
|
```
|
|
|
|
Set your API key via environment variable:
|
|
|
|
```bash
|
|
export OPENAI_API_KEY=your-api-key
|
|
```
|
|
|
|
### vLLM
|
|
|
|
For high-performance local inference, you can use vLLM to serve embedding models with OpenAI-compatible APIs:
|
|
|
|
```yaml
|
|
embeddings:
|
|
provider: vllm
|
|
model: mixedbread-ai/mxbai-embed-large-v1
|
|
vector_dim: 512
|
|
|
|
providers:
|
|
vllm:
|
|
embeddings_base_url: http://localhost:8000
|
|
```
|
|
|
|
**Note:** You need to run a vLLM server separately with an embedding model loaded.
|
|
|
|
## Question Answering Providers
|
|
|
|
Configure which LLM provider to use for question answering. Any provider and model supported by [Pydantic AI](https://ai.pydantic.dev/models/) can be used.
|
|
|
|
### Ollama (Default)
|
|
|
|
```yaml
|
|
qa:
|
|
model:
|
|
provider: ollama
|
|
name: gpt-oss
|
|
```
|
|
|
|
The Ollama base URL can be configured via the `OLLAMA_BASE_URL` environment variable, config file, or defaults to `http://localhost:11434`:
|
|
|
|
```bash
|
|
export OLLAMA_BASE_URL=http://localhost:11434
|
|
```
|
|
|
|
Or in your config file:
|
|
|
|
```yaml
|
|
providers:
|
|
ollama:
|
|
base_url: http://localhost:11434
|
|
```
|
|
|
|
### OpenAI
|
|
|
|
OpenAI QA is included in the default installation:
|
|
|
|
```yaml
|
|
qa:
|
|
model:
|
|
provider: openai
|
|
name: gpt-4o-mini # or gpt-4, gpt-3.5-turbo, etc.
|
|
```
|
|
|
|
Set your API key via environment variable:
|
|
|
|
```bash
|
|
export OPENAI_API_KEY=your-api-key
|
|
```
|
|
|
|
### Anthropic
|
|
|
|
Anthropic QA is included in the default installation:
|
|
|
|
```yaml
|
|
qa:
|
|
model:
|
|
provider: anthropic
|
|
name: claude-3-5-haiku-20241022 # or claude-3-5-sonnet-20241022, etc.
|
|
```
|
|
|
|
Set your API key via environment variable:
|
|
|
|
```bash
|
|
export ANTHROPIC_API_KEY=your-api-key
|
|
```
|
|
|
|
### vLLM
|
|
|
|
For high-performance local inference:
|
|
|
|
```yaml
|
|
qa:
|
|
model:
|
|
provider: vllm
|
|
name: Qwen/Qwen3-4B # Any model with tool support in vLLM
|
|
|
|
providers:
|
|
vllm:
|
|
qa_base_url: http://localhost:8002
|
|
```
|
|
|
|
**Note:** You need to run a vLLM server separately with a model that supports tool calling loaded. Consult the specific model's documentation for proper vLLM serving configuration.
|
|
|
|
### Other Providers
|
|
|
|
Any provider supported by Pydantic AI can be used. Examples:
|
|
|
|
```yaml
|
|
# Google Gemini
|
|
qa:
|
|
model:
|
|
provider: gemini
|
|
name: gemini-1.5-flash
|
|
|
|
# Groq
|
|
qa:
|
|
model:
|
|
provider: groq
|
|
name: llama-3.3-70b-versatile
|
|
|
|
# Mistral
|
|
qa:
|
|
model:
|
|
provider: mistral
|
|
name: mistral-small-latest
|
|
```
|
|
|
|
See the [Pydantic AI documentation](https://ai.pydantic.dev/models/) for the complete list of supported providers and models.
|
|
|
|
## Reranking Providers
|
|
|
|
Reranking improves search quality by re-ordering the initial search results using specialized models. When enabled, the system retrieves more candidates (10x the requested limit) and then reranks them to return the most relevant results.
|
|
|
|
Reranking is **disabled by default** (`provider: ""`) for faster searches. You can enable it by configuring one of the providers below.
|
|
|
|
### MixedBread AI
|
|
|
|
If you installed `haiku.rag` (full package), MxBAI is already included. If you installed `haiku.rag-slim`, add the mxbai extra:
|
|
|
|
```bash
|
|
uv pip install haiku.rag-slim[mxbai]
|
|
```
|
|
|
|
Then configure:
|
|
|
|
```yaml
|
|
reranking:
|
|
model:
|
|
provider: mxbai
|
|
name: mixedbread-ai/mxbai-rerank-base-v2
|
|
```
|
|
|
|
### Cohere
|
|
|
|
If you installed `haiku.rag` (full package), Cohere is already included. If you installed `haiku.rag-slim`, add the cohere extra:
|
|
|
|
```bash
|
|
uv pip install haiku.rag-slim[cohere]
|
|
```
|
|
|
|
Then configure:
|
|
|
|
```yaml
|
|
reranking:
|
|
model:
|
|
provider: cohere
|
|
name: rerank-v3.5
|
|
```
|
|
|
|
Set your API key via environment variable:
|
|
|
|
```bash
|
|
export CO_API_KEY=your-api-key
|
|
```
|
|
|
|
### Zero Entropy
|
|
|
|
If you installed `haiku.rag` (full package), Zero Entropy is already included. If you installed `haiku.rag-slim`, add the zeroentropy extra:
|
|
|
|
```bash
|
|
uv pip install haiku.rag-slim[zeroentropy]
|
|
```
|
|
|
|
Then configure:
|
|
|
|
```yaml
|
|
reranking:
|
|
model:
|
|
provider: zeroentropy
|
|
name: zerank-1 # Currently the only available model
|
|
```
|
|
|
|
Set your API key via environment variable:
|
|
|
|
```bash
|
|
export ZEROENTROPY_API_KEY=your-api-key
|
|
```
|
|
|
|
### vLLM
|
|
|
|
For high-performance local reranking using dedicated reranking models:
|
|
|
|
```yaml
|
|
reranking:
|
|
model:
|
|
provider: vllm
|
|
name: mixedbread-ai/mxbai-rerank-base-v2
|
|
|
|
providers:
|
|
vllm:
|
|
rerank_base_url: http://localhost:8001
|
|
```
|
|
|
|
**Note:** vLLM reranking uses the `/rerank` API endpoint. You need to run a vLLM server separately with a reranking model loaded. Consult the specific model's documentation for proper vLLM serving configuration.
|