Перейти к основному содержимому

Семантический поиск

Семантический поиск позволяет находить документы по смыслу запроса, а не по точному совпадению слов. Это ключевая функция базы знаний, которая используется агентами и воркфлоу для получения актуальной информации.

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

  1. Запрос пользователя преобразуется в вектор (эмбеддинг) той же моделью, что использовалась при индексации
  2. Выполняется поиск ближайших векторов в Qdrant по косинусному сходству
  3. Найденные чанки ранжируются по релевантности (reranking)
  4. Наиболее релевантные фрагменты возвращаются как контекст для 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_idID источника, из которого загружен документ
chunk_indexПорядковый номер чанка в документе
metadataДополнительные метаданные (путь к файлу, коннектор и т.д.)

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

Текстовые агенты (RAG-режим)

Для подключения базы знаний к текстовому агенту:

  1. Откройте настройки агента
  2. Перейдите в раздел Memory
  3. Включите RAG Enabled
  4. При необходимости укажите Vector Store IDs для ограничения поиска по конкретным коллекциям

Когда RAG включен, при каждом запросе пользователя:

  1. Текст запроса отправляется в базу знаний
  2. Найденные фрагменты добавляются в контекст LLM
  3. LLM генерирует ответ, опираясь на найденную информацию

Воркфлоу

В визуальном редакторе воркфлоу доступна нода Knowledge Base Search:

  • Вход: текстовый запрос
  • Параметры: limit, score_threshold, source_id, project_id
  • Выход: массив найденных фрагментов с оценками

Голосовые агенты

Голосовые агенты используют базу знаний через подключённые инструменты:

  1. Создайте функцию или воркфлоу, выполняющий поиск по базе знаний
  2. Подключите этот инструмент к голосовому агенту
  3. Агент будет вызывать поиск при необходимости, чтобы ответить на вопрос
Подробнее

Для расширенного управления данными используйте расписания синхронизации и пайплайны обработки.


Оптимизация качества поиска

Качество документов

Качество поиска напрямую зависит от качества загруженных документов:

  • Структура -- документы с чёткой структурой (заголовки, абзацы) индексируются лучше
  • Язык -- избегайте смешения языков в одном документе
  • Актуальность -- удаляйте устаревшие документы
  • Дублирование -- избегайте дублирования информации (это снижает точность ранжирования)

Настройка чанкинга

Размер чанков влияет на качество поиска:

  • Слишком мелкие чанки -- теряется контекст, ответ может быть неполным
  • Слишком крупные чанки -- снижается точность совпадения, нерелевантный текст попадает в результаты

Для настройки чанкинга создайте кастомный пайплайн с оптимальными параметрами для ваших документов.

Переранжирование

Пайплайн поиска по умолчанию включает узел Reranker, который переоценивает результаты для повышения релевантности. Параметр top_k определяет, сколько результатов останется после переранжирования (по умолчанию: 10).

Совет

Если результаты поиска неточны, попробуйте:

  1. Увеличить limit в узле Vector Search (например, до 50) для более широкой выборки
  2. Уменьшить top_k в Reranker (например, до 5) для более строгой фильтрации
  3. Повысить score_threshold для отсечения нерелевантных результатов

Изоляция данных

Поиск по базе знаний изолирован на нескольких уровнях:

  1. Организация -- каждая организация имеет отдельную коллекцию в Qdrant. Данные разных организаций никогда не пересекаются
  2. Проект -- при указании project_id поиск ограничивается документами, привязанными к проекту
  3. Источник -- при указании source_id поиск ограничивается документами из конкретного источника

Это обеспечивает безопасность данных в мультитенантной среде.