RAG (Retrieval-Augmented Generation) — архитектурный паттерн, при котором LLM получает релевантный контекст из базы знаний перед генерацией ответа. Качество RAG-системы зависит от двух компонентов: embedding-модели для поиска релевантных документов и LLM для генерации ответа. Разберём лучшие варианты для каждого компонента.
Лучшие embedding-модели для RAG
| Модель | Размерность | MTEB Score | Цена ($/1M токенов) | Макс. длина |
|---|---|---|---|---|
| text-embedding-3-large (OpenAI) | 3072 | 64.6 | $0.13 | 8191 |
| text-embedding-3-small (OpenAI) | 1536 | 62.3 | $0.02 | 8191 |
| embed-v4 (Cohere) | 1024 | 66.3 | $0.10 | 512 |
| voyage-large-2 (Voyage AI) | 1536 | 65.4 | $0.12 | 16000 |
| bge-large-en-v1.5 (BAAI) | 1024 | 63.6 | Бесплатно* | 512 |
* При самостоятельном развёртывании, без учёта стоимости инфраструктуры
Для русскоязычных RAG-систем рекомендуем text-embedding-3-large — он лучше всего работает с кириллицей среди коммерческих моделей.
Лучшие LLM для генерации ответов в RAG
| Модель | Faithfulness* | Relevance* | Цена за запрос** | Контекст |
|---|---|---|---|---|
| GPT-4o | 9.2/10 | 9.0/10 | $0.023 | 128K |
| Claude 3.5 Sonnet | 9.4/10 | 8.8/10 | $0.033 | 200K |
| GPT-4o-mini | 8.1/10 | 8.5/10 | $0.001 | 128K |
| Gemini 2.0 Pro | 8.7/10 | 8.9/10 | $0.011 | 2M |
| Llama 3.1 70B | 8.3/10 | 8.2/10 | $0.004 | 128K |
* По шкале RAGAS framework. ** Средний запрос: 2K input + 500 output токенов
Faithfulness (верность контексту) — ключевая метрика для RAG. Она измеряет, насколько ответ модели основан на предоставленном контексте, а не на «выдуманных» фактах. Claude 3.5 Sonnet лидирует по этому показателю.
Оптимальная архитектура RAG через ModelSwitch
from openai import OpenAI
client = OpenAI(
base_url="https://api.modelswitch.ru/v1",
api_key="msk_ваш_ключ"
)
# 1. Создание embedding для запроса
query_embedding = client.embeddings.create(
model="text-embedding-3-large",
input="Какие документы нужны для возврата товара?"
)
# 2. Поиск в векторной БД (Pinecone, Qdrant, Weaviate...)
# results = vector_db.search(query_embedding.data[0].embedding, top_k=5)
# 3. Генерация ответа с контекстом
response = client.chat.completions.create(
model="gpt-4o", # или "claude-3.5-sonnet" для лучшей faithfulness
messages=[
{"role": "system", "content": "Отвечай только на основе предоставленного контекста."},
{"role": "user", "content": f"Контекст: {context}\n\nВопрос: {query}"}
],
temperature=0.1 # Низкая температура для RAG
)
Рекомендации по выбору
| Сценарий | Embedding-модель | LLM |
|---|---|---|
| Enterprise (точность критична) | text-embedding-3-large | Claude 3.5 Sonnet |
| Стартап (баланс цена/качество) | text-embedding-3-small | GPT-4o-mini |
| Большая база знаний (1M+ документов) | embed-v4 (Cohere) | GPT-4o |
| Максимальная экономия | bge-large-en (self-hosted) | Llama 3.1 70B |
ModelSwitch предоставляет все эти модели через единый API: и embedding-модели для индексации, и LLM для генерации. Единый ключ, единый формат, единый биллинг — и вся мощь RAG-стека в одном месте.