Реализация AI-кэширования ответов (Semantic Cache) в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Реализация AI-кэширования ответов (Semantic Cache) в мобильном приложении
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    864
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Реализация AI-кэширования ответов (Semantic Cache) в мобильном приложении

Обычный кэш работает по точному совпадению ключа. «Как добавить транзакцию?» и «Как мне добавить новую транзакцию?» — разные строки, разные запросы, два вызова API. Семантический кэш работает по смыслу: оба вопроса получают один и тот же кэшированный ответ, потому что их embeddings близки в векторном пространстве.

Архитектура семантического кэша

Схема работы: запрос пользователя → генерация embedding → поиск ближайшего в векторном хранилище → если cosine similarity > threshold, вернуть кэшированный ответ → иначе запрос к LLM → сохранить embedding + ответ в кэш.

# Серверная часть (FastAPI) — semantic cache middleware
import numpy as np
from openai import AsyncOpenAI

client = AsyncOpenAI()
cache: list[dict] = []  # В проде — Redis + pgvector или Pinecone

async def get_embedding(text: str) -> list[float]:
    response = await client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )
    return response.data[0].embedding

def cosine_similarity(a: list[float], b: list[float]) -> float:
    a_arr, b_arr = np.array(a), np.array(b)
    return float(np.dot(a_arr, b_arr) / (np.linalg.norm(a_arr) * np.linalg.norm(b_arr)))

async def semantic_cache_lookup(query: str, threshold: float = 0.92) -> str | None:
    query_emb = await get_embedding(query)
    for entry in cache:
        similarity = cosine_similarity(query_emb, entry["embedding"])
        if similarity >= threshold:
            return entry["response"]
    return None

Threshold — критичный параметр. При 0.85 кэш слишком агрессивен: разные по смыслу вопросы получают один ответ. При 0.97 — почти не работает. Оптимальный диапазон для большинства доменов: 0.90–0.95, подбирается на реальных запросах.

Где хранить кэш

Redis + RediSearch — для небольших объёмов. Vector similarity search встроен начиная с Redis Stack. Latency поиска — 1–5мс для десятков тысяч записей.

pgvector — если PostgreSQL уже в стеке. Расширение добавляет тип vector и поддержку HNSW/IVFFlat индексов. Запрос к кэшу:

SELECT response, 1 - (embedding <=> $1::vector) AS similarity
FROM ai_cache
WHERE 1 - (embedding <=> $1::vector) > 0.92
ORDER BY embedding <=> $1::vector
LIMIT 1;

Pinecone / Weaviate — managed-решения, не требуют администрирования. Оправданы при миллионах записей или мультитенантной архитектуре.

Инвалидация и TTL

Семантический кэш нужно инвалидировать при обновлении системного промпта или базовой модели — старые ответы могут не соответствовать новому поведению. Минимальный TTL — 7–30 дней для стабильных FAQ-подобных вопросов. Для вопросов с временной привязкой («какой у меня баланс?») кэширование неприменимо — выявляем через классификатор или по ключевым словам.

Ориентиры по срокам

Базовый семантический кэш на Redis + OpenAI Embeddings — 2–3 дня. С подбором threshold на реальных данных и мониторингом hit rate — 3–5 дней.