## **1. Индексация** Обычно индексация работает следующим образом: 1. **Загрузка**: сначала нам нужно загрузить наши данные. Это делается с помощью [**загрузчиков документов**](https://docs.langchain.com/oss/javascript/integrations/document_loaders). 2. **Разделение**: [**Разделители текста**](https://docs.langchain.com/oss/javascript/integrations/splitters) разбивают большие документы на более мелкие фрагменты. Это полезно как для индексации данных, так и для передачи их в модель, поскольку большие фрагменты сложнее искать и они не помещаются в конечное контекстное окно модели. 3. **Store**: нам нужно где-то хранить и индексировать наши разбиения, чтобы потом можно было выполнять поиск по ним. Часто для этого используют [**VectorStore**](https://docs.langchain.com/oss/javascript/integrations/vectorstores) и модель [**Embeddings**](https://docs.langchain.com/oss/javascript/integrations/text_embedding). ## 2. Поиск Приложения RAG обычно работают следующим образом: 1. **Извлечение (Retrieve)**: на основе пользовательского ввода из хранилища извлекаются соответствующие фрагменты с помощью [Retrieval](https://docs.langchain.com/oss/python/langchain/retrieval#retrievers). 2. **Генерация**: [**модель**](https://docs.langchain.com/oss/python/langchain/models) выдаёт ответ на запрос пользователя. Но перед генерацией ответа, к запросу подмешивается контекст, полученный из retrieval.