Семантический поиск
Семантический поиск позволяет находить документы по смыслу запроса, а не по точному совпадению слов. Это ключевая функция базы знаний, которая используется агентами и воркфлоу для получения актуальной информации.
Принцип работы
- Запрос пользователя преобразуется в вектор (эмбеддинг) той же моделью, что использовалась при индексации
- Выполняется поиск ближайших векторов в Qdrant по косинусному сходству
- Найденные чанки ранжируются по релевантности (reranking)
- Наиболее релевантные фрагменты возвращаются как контекст для LLM
Параметры поиска
При выполнении запроса к базе знаний доступны следующие параметры:
| Параметр | Описание | По умолчанию |
|---|---|---|
| query | Текст поискового запроса | Обязательный |
| limit | Максимальное количество результатов | 10 |
| score_threshold | Минимальный порог релевантности (0.0 - 1.0) | Не задан (все результаты) |
| source_id | Фильтр по конкретному источнику | Не задан |
| project_id | Фильтр по проекту | Не задан |
Порог релевантности (score_threshold)
Порог определяет, насколько "похожим" должен быть документ на запрос, чтобы попасть в результаты:
| Порог | Поведение | Применение |
|---|---|---|
| Не задан | Возвращаются все результаты, отсортированные по релевантности | Для широкого поиска |
| 0.3 - 0.5 | Широкий поиск, много результатов | Когда нужно найти максимум информации |
| 0.5 - 0.7 | Сбалансированный поиск | Для большинства сценариев |
| 0.7 - 0.85 | Строгий поиск | Когда важна точность |
| 0.85 - 1.0 | Очень строгий | Только практически идеальные совпадения |
- Начните с порога 0.5 и постепенно повышайте, если результаты содержат нерелевантную информацию
- Для FAQ и точных вопросов используйте 0.7+
- Для творческих запросов и широкого контекста используйте 0.3 - 0.5
Фильтрация по проекту
Параметр project_id позволяет ограничить поиск документами, привязанными к конкретному проекту. Это полезно, когда:
- Разные проекты используют разные базы документации
- Нужно изолировать контекст поиска для конкретного продукта или направления
Привязка документов к проектам выполняется на вкладке "Документы в базе знаний" через действие Привязать.
Результат поиска
Каждый результат поиска содержит:
| Поле | Описание |
|---|---|
| text | Текст найденного фрагмента (чанка) |
| score | Оценка релевантности (0 - 1.0, чем выше -- тем релевантнее) |
| source_id | ID источника, из которого загружен документ |
| chunk_index | Порядковый номер чанка в документе |
| metadata | Дополнительные метаданные (путь к файлу, коннектор и т.д.) |
Использование в агентах
Текстовые агенты (RAG-режим)
Для подключения базы знаний к текстовому агенту:
- Откройте настройки агента
- Перейдите в раздел Memory
- Включите RAG Enabled
- При необходимости укажите Vector Store IDs для ограничения поиска по конкретным коллекциям
Когда RAG включен, при каждом запросе пользователя:
- Текст запроса отправляется в базу знаний
- Найденные фрагменты добавляются в контекст LLM
- LLM генерирует ответ, опираясь на найденную информацию
Воркфлоу
В визуальном редакторе воркфлоу доступна нода Knowledge Base Search:
- Вход: текстовый запрос
- Параметры: limit, score_threshold, source_id, project_id
- Выход: массив найденных фрагментов с оценками
Голосовые агенты
Голосовые агенты используют базу знаний через подключённые инструменты:
- Создайте функцию или воркфлоу, выполняющий поиск по базе знаний
- Подключите этот инструмент к голосовому агенту
- Агент будет вызывать поиск при необходимости, чтобы ответить на вопрос
Для расширенного управления данными используйте расписания синхронизации и пайплайны обработки.
Оптимизация качества поиска
Качество документов
Качество поиска напрямую зависит от качества загруженных документов:
- Структура -- документы с чёткой структурой (заголовки, абзацы) индексируются лучше
- Язык -- избегайте смешения языков в одном документе
- Актуальность -- удаляйте устаревшие документы
- Дублирование -- избегайте дублирования информации (это снижает точность ранжирования)
Настройка чанкинга
Размер чанков влияет на качество поиска:
- Слишком мелкие чанки -- теряется контекст, ответ может быть неполным
- Слишком крупные чанки -- снижается точность совпадения, нерелевантный текст попадает в результаты
Для настройки чанкинга создайте кастомный пайплайн с оптимальными параметрами для ваших документов.
Переранжирование
Пайплайн поиска по умолчанию включает узел Reranker, который переоценивает результаты для повышения релевантности. Параметр top_k определяет, сколько результатов останется после переранжирования (по умолчанию: 10).
Если результаты поиска неточны, попробуйте:
- Увеличить
limitв узле Vector Search (например, до 50) для более широкой выборки - Уменьшить
top_kв Reranker (например, до 5) для более строгой фильтрации - Повысить
score_thresholdдля отсечения нерелевантных результатов
Изоляция данных
Поиск по базе знаний изолирован на нескольких уровнях:
- Организация -- каждая организация имеет отдельную коллекцию в Qdrant. Данные разных организаций никогда не пересекаются
- Проект -- при указании
project_idпоиск ограничивается документами, привязанными к проекту - Источник -- при указании
source_idпоиск ограничивается документами из конкретного источника
Это обеспечивает безопасность данных в мультитенантной среде.