6b26bf28a7
index_store.py сканирует папку карточек, считает отпечаток каждой (embed_fn инъекцией) и складывает индекс nisha/roditel/sinonimy/path/vector; save_index/load_index — JSON roundtrip. build_index.py — CLI ручной пересборки индекса (провайдер эмбеддингов через ALEX_EMBED). TDD: тест падал на ModuleNotFoundError до реализации, затем 2 passed (плюс полный пакет brain — 12 passed, регрессий нет). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
23 lines
919 B
Python
23 lines
919 B
Python
"""CLI: пересобрать индекс ниш. Запуск (из корня репо):
|
|
python -m brain.build_index --nishi knowledge/aleksandra/nishi --out knowledge/aleksandra/nishi_index.json
|
|
Провайдер эмбеддингов — переменная ALEX_EMBED (aitunnel|local|fake)."""
|
|
import argparse
|
|
from brain.embed import get_embedder
|
|
from brain.index_store import build_index, save_index
|
|
|
|
|
|
def main():
|
|
ap = argparse.ArgumentParser()
|
|
ap.add_argument("--nishi", default="knowledge/aleksandra/nishi")
|
|
ap.add_argument("--out", default="knowledge/aleksandra/nishi_index.json")
|
|
ap.add_argument("--provider", default=None)
|
|
a = ap.parse_args()
|
|
emb = get_embedder(provider=a.provider)
|
|
idx = build_index(a.nishi, embed_fn=emb)
|
|
save_index(idx, a.out)
|
|
print(f"индекс собран: {len(idx)} карточек → {a.out}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|