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.
# 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: dynamic knowledge, легко обновлять, прозрачно (видны sources). Fine-tune: лучше стиль/тон, фиксированный knowledge. Комбинируются.
512-1024 токена обычно. Больше — контекст размазывается, меньше — теряется смысл. Test для your corpus.
Снижены, но не исключены. Prompt: "Если ответа нет в context — скажи \"Не знаю\"". + chain-of-citations.