Skip to content
PПромтбук
RUEN
03Инструменты

Дизайн RAG-системы для агента

Чанкинг, эмбеддинги, индекс, реранкинг — RAG, который правда находит нужное.

Спроектируй RAG для корпуса {{corpus}}.

Зачем RAG

Дать агенту доступ к актуальной, специфичной информации которой нет в его обучающих данных.

Когда RAG лучше fine-tune

  • Данные часто меняются
  • Нужна цитируемость (показать источник)
  • Корпус большой (десятки тысяч документов+)
  • Нет ресурсов на fine-tune

Архитектура

[Документы][Чанкер][Эмбеддер][Vector DB][Query][LLM][Контекст][Reranker][Top-K]

1. Чанкинг (как резать документы)

Самое важное решение. Размер чанка влияет на качество.

СтратегияКогда
Fixed-size (512-1024 токенов)Простой baseline, документы плотные
Sentence-basedДлинные тексты, важна границы предложений
Markdown-aware (по заголовкам)Документация, structured docs
Semantic chunking (разрезы по смыслу)Сложные тексты, требует extra ML

Overlap: 10-20% между соседними чанками — чтобы не разрывать контекст.

Метаданные на чанк: doc_id, section, page, timestamp, source — это поможет фильтрации и rerank.

2. Эмбеддинги

Модель:

  • OpenAI text-embedding-3-large — топ качество
  • Voyage AI — хорошее качество, лучше для кода
  • Open-source: bge-large, nomic-embed — self-host

Размер: 1024-3072 dimensions для качества. Для скорости — 384-768.

Hybrid поиск: комбинируй векторный + keyword (BM25). Векторный лучше для семантики, keyword — для точных терминов / имён.

3. Vector DB

ОпцияКогда
pgvector (Postgres)Уже есть Postgres, < 1M векторов
Qdrant / Weaviate1-100M векторов, нужны фичи
PineconeManaged, не хочешь админить
ChromaПростое локальное использование

4. Запрос → результаты

Шаг 1: query embedding
Шаг 2: top-50 ближайших векторов
Шаг 3: rerank top-50  top-5 (cross-encoder reranker)
Шаг 4: context = concatenate top-5 chunks
Шаг 5: LLM с context + query

Reranking — критично. После retrieve у тебя 50 кандидатов, нужно выбрать лучшие 5. Cross-encoder (Cohere Rerank, Voyage Rerank) делает это сильно лучше чем cosine similarity.

5. Контекст для LLM

Тебе доступны следующие фрагменты из {{corpus}}:

[1] Source: doc.md, section: "Setup"
"..."

[2] Source: api.md, section: "Auth"
"..."

[3] Source: faq.md
"..."

На основе этих фрагментов ответь на вопрос. Если ответ не в фрагментах — скажи "не знаю". Цитируй источники [N].

6. Метрики качества

  • Retrieval recall@k: есть ли правильный документ в top-k
  • Faithfulness: не выдумал ли LLM то чего нет в контексте
  • Answer relevance: соответствует ли ответ вопросу
  • Citation precision: правильные ли цитаты

Делай eval set из 50-100 пар "вопрос → правильный документ" и прогоняй на каждом изменении.

7. Обновление индекса

  • Полная переиндексация (раз в неделю)
  • Delta-обновления (на каждый изменённый документ)
  • Удаление: чанки помечаются tombstone, периодический cleanup

8. Стоимость

Часть$$
Эмбеддинги документовОдин раз, OpenAI ≈ $0.13/1M токенов
Эмбеддинги запросовПостоянно, но дёшево
Vector DB hosting$20-500/мес зависит от объёма
Reranking$1/1k запросов ≈ Cohere
LLM contextЗависит от размера контекста

Анти-паттерны

  • ❌ Чанки по 100 токенов — нет контекста
  • ❌ Чанки по 8k токенов — слишком много шума в контексте LLM
  • ❌ Без reranking — top-5 будут случайные
  • ❌ Хранить вектор без метаданных — нечем фильтровать
  • ❌ Грузить весь doc в context, а не chunks — bloat
  • ❌ Не делать eval — летаешь вслепую

Принципы

  • Качество retrieval > качество LLM. Если retrieval плохой — никакая модель не вытянет.
  • Hybrid > pure vector
  • Reranking даёт +20-40% к качеству
  • Eval set обязателен
К подразделу «Инструменты»
Похожие промты