После разбиения текста на чанки нам нужно преобразовать каждый фрагмент в числовое представление – эмбеддинг.
## 1. Что такое embeddings в RAG:
Embeddings – это способ превратить текст в числовой вектор так, чтобы **похожие по смыслу тексты имели похожие вектора**.
Именно embeddings позволяют RAG-системе делать **семантический поиск**, а не искать совпадения слов.
В RAG embeddings используются в двух местах:
1. **При индексации** – когда мы превращаем документы (чанки) в вектора и кладём их в vector store.
2. **При запросе пользователя** – когда вопрос тоже превращается в вектор и сравнивается с документами.
Одна и та же embedding-модель должна использоваться и для документов, и для запросов.
Эмбеддинги – это векторы из десятков, сотен или тысяч чисел, и каждый такой вектор – это точка в многомерном пространстве.
**В этом пространстве смысловые связи отражаются геометрически: похожие тексты оказываются "близко" друг к другу, а непохожие – далеко.**
Векторное хранилище (например, Chroma, Qdrant или Pinecone) сохраняет эти точки и позволяет быстро находить ближайшие, измеряя расстояние между ними через cosine similarity, dot product или другую метрику.
Именно это и делает возможным семантический поиск: **модель не ищет совпадение слов – она ищет смысловую близость в пространстве эмбеддингов.**
>[!info] > Модель для создания эмбеддингов – это специальная нейросеть, которая преобразует текст в такие векторные представления и позволяет выполнять семантический поиск по базе документов.
![[Pasted image 20260125191045.png|800]]
От выбора embedding-модели зависит качество поиска: чем лучше она понимает язык и контекст, тем точнее система сможет находить нужные фрагменты.
*Выбор модели определяется:*
1. языком данных
2. доступными ресурсами (нужна ли локальная модель или облачная)
3. требуемым балансом между скоростью, стоимостью и качеством.
## 2. Какие бывают embedding-модели:
В LangChain embedding-модели – это отдельные интеграции, каждая из которых реализует единый интерфейс `Embeddings`.
По сути, у любой модели есть два метода:
- `embed_documents()` – для документов;
- `embed_query()` – для пользовательского запроса.
### Основные категории embedding-моделей:
|Категория|Примеры|Когда использовать|
|---|---|---|
|**Облачные (API)**|OpenAI, Cohere, Voyage, Mistral|Быстрый старт, высокое качество, минимум инфраструктуры|
|**Локальные**|Ollama, HuggingFace|Контроль данных, офлайн, дешевле при больших объёмах|
|**Мультиязычные**|BGE, E5, Snowflake Arctic|Когда данные не только на английском|
|**Domain-specific**|Code embeddings, legal embeddings|Когда тексты сильно специализированы|
В документации LangChain прямо подчёркивается: **выбор embedding-модели – один из самых важных факторов качества RAG**.