Files
content-atom/spike/RESULTS.md
T

2.0 KiB

spike/extract_atoms.py — выводы

Результаты спейка (2026-09-14)

Тест: 2 статьи (glvrd-research.md, promotion-plan-unikor-v2.md) → 387 атомов.

  • Эмбеддинг bge-m3: ~19ms/atom (батчами по 5)
  • Qdrant: коллекция content_atoms (dim=1024, Cosine)
  • Дедуп: 17 дублей найдено (порог 0.85)

Ключевые находки

Qdrant source build (1.18.2) — баг схемы

  • PUT /collections/{name} и POST /collections/{name} создают коллекцию с vectors: {}
  • Все способы создания (vector, vector_params, vector_params_map) дают пустую схему
  • Решение: использовать Python-клиент qdrant-client (1.19.0) — он правильно формирует запросы
  • create_collection(collection_name=..., vectors_config=VectorParams(size=1024, distance=Distance.COSINE))

Qdrant API v1 (локальный бинарник)

  • PUT /collections/{name} — создать (но с пустой схемой)
  • POST /collections/{name}/points — upsert (нужен top-level ids)
  • POST /collections/{name}/points/search — поиск (нужен vector)
  • Point id = UUID или unsigned int, не строка
  • search требует vector, query_points — альтернатива

bge-m3

  • dim=1024, ~19ms/atom (локально)
  • Правильно работает для русского SEO-текста
  • Гибридный (dense+sparse) — но в спейке только dense

Выводы

  1. bge-m3 + Qdrant работают — дедуп между доменами ловится (17 дублей)
  2. Qdrant source build — использовать Python-клиент, не raw HTTP
  3. Масштаб: 387 атомов за 7.4с → ~50 доменов × 200 атомов = ~10000 атомов за ~3мин (приемлемо)
  4. Следующий шаг: MVP stage 1 (extract → atom_versions → web-канал)