Реализация векторного поиска для AI-базы знаний в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация векторного поиска для AI-базы знаний в мобильном приложении
Сложный
~5 дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Реализация векторного поиска для AI-базы знаний в мобильном приложении

Векторный поиск находит семантически похожие документы, а не просто совпадения по ключевым словам. Запрос «как восстановить доступ» найдёт статью «сброс пароля», даже если слово «восстановить» в ней не встречается. Это основа любого AI-поиска по базе знаний.

Как работает на уровне кода

Каждый текстовый фрагмент превращается в вектор — массив чисел (1536 или 3072 значений для OpenAI, 768 для локальных моделей). Семантически похожие тексты дают близкие векторы. Поиск — это нахождение ближайших векторов к запросу (Approximate Nearest Neighbor, ANN).

На практике для мобильного приложения это означает:

  1. Пользователь вводит запрос
  2. Клиент отправляет запрос на бэкенд
  3. Бэкенд создаёт эмбеддинг запроса через API (OpenAI, Cohere) или локальную модель
  4. Векторная БД возвращает топ-K ближайших чанков
  5. Результаты передаются в LLM или возвращаются напрямую

Весь pipeline до шага 4 занимает 50–300 мс — вполне приемлемо для mobile UX.

Векторные индексы: что выбрать

pgvector — расширение для PostgreSQL. Если у вас уже PostgreSQL, это нулевая дополнительная инфраструктура. Поддерживает HNSW и IVFFlat индексы.

-- HNSW-индекс для быстрого ANN-поиска
CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);

-- Поиск топ-5 ближайших
SELECT id, content, 1 - (embedding <=> $1) AS similarity
FROM documents
ORDER BY embedding <=> $1
LIMIT 5;

<=> — cosine distance в pgvector. Для нормализованных векторов cosine distance эквивалента inner product (<#>), но <=> работает без нормализации.

Выбор индекса:

  • IVFFlat — быстро создаётся, меньше памяти, чуть менее точный
  • HNSW — лучшая точность, быстрый поиск, больше памяти при построении

Для базы до 1 млн документов pgvector с HNSW справляется без проблем. При 10+ млн — рассматривайте Pinecone, Weaviate, Qdrant.

Фильтрация по метаданным

Векторный поиск без фильтров ищет по всему индексу. Если нужно искать только по документам конкретного продукта, отдела или языка — добавляйте фильтрацию.

SELECT id, content, 1 - (embedding <=> $1) AS similarity
FROM documents
WHERE
    language = 'ru'
    AND category = 'installation'
    AND updated_at > NOW() - INTERVAL '1 year'
ORDER BY embedding <=> $1
LIMIT 10;

Важно: pgvector выполняет фильтр ПОСЛЕ векторного поиска при использовании HNSW/IVFFlat. Для высокоселективных фильтров (отбирают < 10% строк) это приводит к плохим результатам — нужно либо строить отдельные индексы для каждого подмножества, либо использовать partitioned HNSW.

Эмбеддинги на клиенте vs на сервере

Генерировать эмбеддинг запроса можно на клиенте (локальная ML-модель) или на сервере. Для мобильного приложения серверный вариант предпочтительнее: модели эмбеддингов весят 80–500 МБ, локальный вывод требует ресурсов, а API-ключ не торчит из APK.

Исключение — полностью офлайн-сценарий. Тогда используем Core ML на iOS (конвертация модели через coremltools) или ONNX Runtime на Android. Пример: all-MiniLM-L6-v2 в ONNX весит ~22 МБ и выдаёт 384-мерные векторы достаточного качества для поиска по корпоративной документации.

Отображение результатов поиска на мобильном

Каждый результат содержит: отрывок текста, название документа/раздела, score схожести, дату обновления. На мобильном отображаем:

  • Score как визуальный индикатор релевантности (три точки/бар, не число — число ничего не говорит пользователю)
  • Хлебные крошки источника: «Руководство пользователя → Установка → iOS»
  • Подсветка совпадающих слов (даже при семантическом поиске — слова всё равно часто пересекаются)
  • Кнопка «Открыть полный документ»

Этапы и сроки

Инвентаризация и нормализация базы знаний → выбор модели эмбеддингов → настройка векторной БД и индексов → разработка ingestion pipeline → поисковый API с фильтрацией → мобильный UI поиска с результатами → тестирование качества (precision@K, recall@K) → итерация.

Векторный поиск по корпусу до 50 тысяч документов с pgvector — 2–4 недели. С кастомной моделью эмбеддингов, reranking и мультиязычностью — 5–8 недель.