Skip to content

RAG: Retrieval-Augmented Generation

Коротко:

RAG (Retrieval-Augmented Generation) — pattern для "grounding" LLM на специфических данных без fine-tuning. Шаги: (1) embed documents в vectors → store в vector DB (Qdrant/Pinecone/Weaviate), (2) embed user query → retrieve top-k похожих chunks, (3) inject retrieved context в prompt → LLM generates answer со ссылками. Используется в ChatBot на docs, enterprise Q&A, code search. Frameworks: LlamaIndex, LangChain, Haystack.

Ниже: подробности, пример, смежные термины, FAQ.

Попробовать бесплатно →

Подробности

  • Chunking: split docs на 500-1500 token chunks (semantic или fixed)
  • Embedding models: OpenAI text-embedding-3-large, Cohere embed-v3, jina-embeddings-v3
  • Vector DB: Qdrant (Rust open-source), Pinecone (managed), Weaviate, pgvector (PostgreSQL extension)
  • Retrieval: ANN (HNSW) top-k=5-20 chunks + rerank via Cohere/Voyage
  • Generation: LLM with augmented context, often с цитатами в answer

Пример

# RAG в LangChain.js
import { OpenAIEmbeddings } from '@langchain/openai';
import { QdrantVectorStore } from '@langchain/qdrant';

const vectorStore = await QdrantVectorStore.fromExistingCollection(
  new OpenAIEmbeddings(), { url: 'http://qdrant:6333', collectionName: 'docs' }
);
const relevantDocs = await vectorStore.similaritySearch(userQuery, 5);
// Inject relevantDocs в prompt
const answer = await chatModel.invoke([
  { role: 'system', content: `Context: ${relevantDocs.join('

')}` },
  { role: 'user', content: userQuery }
]);

Смежные термины

Больше по теме

Часто задаваемые вопросы

RAG vs fine-tuning?

RAG: dynamic knowledge, легко обновлять, прозрачно (видны sources). Fine-tune: лучше стиль/тон, фиксированный knowledge. Комбинируются.

Наилучший chunk size?

512-1024 токена обычно. Больше — контекст размазывается, меньше — теряется смысл. Test для your corpus.

Hallucinations при RAG?

Снижены, но не исключены. Prompt: "Если ответа нет в context — скажи \"Не знаю\"". + chain-of-citations.