USearch, FAISS-CPU и sqlite-vec на M4 для CPU-retrieval, если эмбеддинги уже локально или за шлюзом. Контекст: чанки, батчи и квоты RAG, Haystack 2.x на удалённом Mac, опыт аренды Mac mini. Дальше — матрица и чек-лист для runbook.
Риски: пик RAM при сборке графа; индекс не в «облачных» каталогах; мелкий батч + лишние потоки удлиняют аренду сверх выгоды.
Матрица сравнения
| Измерение | USearch | FAISS-CPU | sqlite-vec |
|---|---|---|---|
| Лучше всего | Компактный API, HNSW-класс на CPU | Разнообразие индексов и лабораторные базовые линии | SQL-удаления, один файл на тенанта |
| Батч импорта | 4096–16384 векторов, dim 768 fp32 | обучение IVF, затем добавления 8192–32768 | 500–2000 строк на транзакцию, WAL, внутренний SSD |
| Потоки сборки | число P-ядер минус один (~9 на M4 Pro) | то же; faiss.omp_set_num_threads |
один писатель при массовой загрузке |
| Память | пик сборки ~2–3× сырых байт векторов | IVFPQ экономит RAM, recall дороже калибровки | дружелюбно к page cache, оверхед SQLite |
| Каталоги на диске | ~/Library/Caches/LlmMac/vec/usearch/<corpus> |
~/Library/Caches/LlmMac/vec/faiss/<corpus> + json манифеста |
~/Library/Caches/LlmMac/vec/sqlite/<tenant>.sqlite |
Переменные окружения
Одинаковые значения на ноутбуке и аренде; VEC_INGEST_BATCH подгоняйте под эмбеддер.
export VEC_INDEX_ROOT="${HOME}/Library/Caches/LlmMac/vec"
export VEC_CACHE_ROOT="${HOME}/Library/Caches/LlmMac/vec/tmp"
export VEC_INGEST_BATCH=8192
export VEC_BUILD_THREADS=9
export VEC_QUERY_THREADS=4
mkdir -p "${VEC_INDEX_ROOT}/usearch" "${VEC_INDEX_ROOT}/faiss" "${VEC_INDEX_ROOT}/sqlite" "${VEC_CACHE_ROOT}"SSD внутри корпуса; внешний APFS — без Spotlight на томе; серийник тома в тикете для replay.
Короткий rollout
- Holdout + brute на тех же dim/dtype.
- Одинаковая метрика/нормализация; хеш корпуса в манифесте.
- Sweep батча до жёлтого memory pressure; прогрев 5 мин; p50/p95 и recall.
- Tarball + env + checksum — тот же прогон на аренде.
Чек-лист приёмки удалённого узла (стоимость и качество)
| Ворота | Критерий прохождения |
|---|---|
| Экономика | soak 24 ч без рестартов; ставка_аренды × wall time дешевле «своего» железа + инженерного времени |
| Задержка | p95 не хуже +10% к ноутбуку при том же top-k, efSearch или числе probes |
| Recall | среднее по holdout в пределах ±2 п.п. к brute |
| Термика | нет устойчивого просадочного такта при ingest+query replay |
| Аудит | логи: версия корпуса, параметры, снимок env, SHA tarball |
FAQ: sqlite-vec — удаления и файл на тенанта; USearch — HNSW-сервис на CPU; FAISS — IVF/PQ и baselines. Просадка recall на аренде: dtype, efSearch/probes, прогрев.
Без входа в аккаунт: тарифы, покупка, технический блог.
Итог: выбор движка — про эксплуатацию; закрепите батч, потоки и пути; прогоните чек-лист на аренде до прод-ретривала.