# Выгрузка в векторную БД

Обработка `APA_ВыгрузкаВВекторнуюБД` предназначена для выгрузки данных в векторную базу данных для использования в RAG.

<figure><img src="/files/DjxVLOCbjKGfgLcX8IW9" alt=""><figcaption></figcaption></figure>

## Назначение

RAG (Retrieval-Augmented Generation) позволяет агентам использовать внутренние базы знаний:

* Документация компании
* Регламенты и инструкции
* Базы знаний
* Справочные данные

## Принцип работы RAG

```
┌─────────────────┐         ┌─────────────────┐
│  Вопрос         │         │  Векторная БД   │
│  пользователя   │────────►│  (знания)       │
└─────────────────┘         └────────┬────────┘
                                     │
                            релевантные документы
                                     │
                                     ▼
                            ┌─────────────────┐
                            │      LLM        │
                            │  (генерация     │
                            │   ответа)       │
                            └─────────────────┘
```

## Интерфейс обработки

```
┌─────────────────────────────────────────────────────────────────────────┐
│  Выгрузка в векторную БД                               [—][□][×]        │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  Параметры подключения:                                                  │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │ Адрес БД:    [http://localhost:8000                            ]   │ │
│  │ Коллекция:   [company_docs                                     ]   │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
│  Источник данных:                                                        │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │ ○ Справочник                                                       │ │
│  │ ○ Документ                                                         │ │
│  │ ● Произвольный запрос                                              │ │
│  │                                                                     │ │
│  │ Код запроса:                                                        │ │
│  │ ┌────────────────────────────────────────────────────────────────┐ │ │
│  │ │ ВЫБРАТЬ Наименование, Содержимое                               │ │ │
│  │ │ ИЗ Справочник.БазаЗнаний                                       │ │ │
│  │ └────────────────────────────────────────────────────────────────┘ │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
│  Опции:                                                                  │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │ ☐ Очистить коллекцию перед загрузкой                               │ │
│  │ ☑ Показывать прогресс                                              │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
│                                              [Выгрузить]  [Закрыть]     │
└─────────────────────────────────────────────────────────────────────────┘
```

## Реквизиты обработки

| Реквизит              | Тип    | Описание                      |
| --------------------- | ------ | ----------------------------- |
| **АдресБД**           | Строка | URL векторной базы данных     |
| **Коллекция**         | Строка | Имя коллекции в БД            |
| **СвойКод**           | Строка | Код запроса для выбора данных |
| **ОчиститьКоллекцию** | Булево | Удалить существующие данные   |

## Выгрузка данных

### Шаг 1: Настройка подключения

Укажите адрес векторной БД:

| БД       | Пример адреса             |
| -------- | ------------------------- |
| Chroma   | <http://localhost:8000>   |
| Milvus   | <http://localhost:19530>  |
| Pinecone | <https://xxx.pinecone.io> |
| Qdrant   | <http://localhost:6333>   |

### Шаг 2: Выбор коллекции

Укажите имя коллекции:

* `company_docs` — документация компании
* `regulations` — регламенты
* `faq` — часто задаваемые вопросы

### Шаг 3: Определение источника данных

Напишите запрос для выбора данных:

```sql
ВЫБРАТЬ
    Наименование КАК Заголовок,
    Содержимое КАК Текст,
    Код КАК ID
ИЗ
    Справочник.БазаЗнаний
ГДЕ
    НЕ ПометкаУдаления
```

### Шаг 4: Выгрузка

Нажмите "Выгрузить" и дождитесь завершения.

## Примеры запросов

### Выгрузка справочника

```sql
ВЫБРАТЬ
    Наименование,
    Описание
ИЗ
    Справочник.Номенклатура
ГДЕ
    НЕ ПометкаУдаления
```

### Выгрузка документов

```sql
ВЫБРАТЬ
    Номер,
    Дата,
    Комментарий
ИЗ
    Документ.ЗаказКлиента
ГДЕ
    Дата >= &НачалоПериода
```

### Выгрузка регистра

```sql
ВЫБРАТЬ
    Вопрос,
    Ответ,
    Категория.Наименование КАК Категория
ИЗ
    РегистрСведений.ЧастыеВопросы
```

## Использование в агентах

### Создание инструмента RAG

1. Создайте инструмент "Поиск в базе знаний"
2. В коде инструмента вызовите модуль `APA_RAG`:

```bsl
// Инструмент: Поиск в базе знаний
// Параметр: Запрос (string)

ЗапросПользователя = Параметры.Запрос;

// Поиск в векторной БД
Результаты = APA_RAG.НайтиДокументы(
    "http://localhost:8000",
    "company_docs",
    ЗапросПользователя,
    5  // количество результатов
);

Возврат Результаты;
```

### Пример диалога с RAG

```
Пользователь: Какова процедура оформления командировки?

Агент:
📊 Поиск в базе знаний...

Согласно внутреннему регламенту компании (документ "Положение о 
командировках" от 01.01.2025), процедура оформления включает:

1. Заполнение заявки на командировку в системе
2. Согласование с непосредственным руководителем
3. Утверждение в отделе кадров
4. Оформление приказа и командировочного удостоверения
5. Получение аванса в бухгалтерии

Срок оформления: не позднее 3 рабочих дней до даты выезда.
```

## Поддерживаемые векторные БД

| База данных  | Описание               | URL          |
| ------------ | ---------------------- | ------------ |
| **Chroma**   | Простая, open-source   | chromadb.com |
| **Milvus**   | Масштабируемая         | milvus.io    |
| **Pinecone** | Облачная               | pinecone.io  |
| **Qdrant**   | Высокопроизводительная | qdrant.tech  |
| **Weaviate** | С AI-интеграциями      | weaviate.io  |

## Рекомендации

### Подготовка данных

* Очищайте текст от HTML-тегов и спецсимволов
* Разбивайте длинные документы на фрагменты
* Добавляйте метаданные (категория, дата, автор)

### Размер фрагментов

| Тип документа | Рекомендуемый размер |
| ------------- | -------------------- |
| FAQ           | 200-500 символов     |
| Инструкции    | 500-1000 символов    |
| Регламенты    | 1000-2000 символов   |

### Обновление данных

* Настройте регулярную выгрузку
* Используйте инкрементальное обновление
* Очищайте устаревшие данные

## Устранение проблем

### Ошибка подключения к БД

1. Проверьте URL базы данных
2. Убедитесь, что БД запущена
3. Проверьте firewall

### Медленная выгрузка

1. Уменьшите объём данных
2. Оптимизируйте запрос
3. Увеличьте ресурсы сервера БД

### Плохое качество поиска

1. Улучшите качество текстов
2. Настройте параметры эмбеддингов
3. Увеличьте количество возвращаемых результатов

## Далее

{% content-ref url="/pages/Vzntrhm2qhWmu91muHGP" %}
[Экспорт/импорт агентов](/ai-platforma-oneapa/obrabotki/eksport-import-agentov.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.onerpa.ru/ai-platforma-oneapa/obrabotki/vygruzka-v-vektornuyu-bd.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
