После разбиения текста на чанки нам нужно преобразовать каждый фрагмент в числовое представление – эмбеддинг. ## 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**.