feat(maria): modelul de embedding in cheia de cache si listarea grupurilor WhatsApp
Cheia de refolosire a embeddings-urilor era doar textul chunk-ului. La schimbarea
lui EMBED_MODEL indexul ar fi ramas un amestec de vectori din doua modele, iar
cautarea ar fi dat rezultate aiurea fara nici un mesaj de eroare. Acum fiecare
intrare poarta modelul cu care a fost calculata si se refolosesc doar cele cu
modelul curent; intrarile vechi, fara camp, se recalculeaza o singura data.
Indexul de pe container a fost stampilat manual cu `nomic-embed-text` (singurul
folosit pana acum), deci nu s-au recalculat cele 169 de chunk-uri.
`GET /groups` listeaza grupurile contului cu JID, nume si numar de participanti.
JID-ul unui grup ("120363...@g.us") nu se vede nicaieri in WhatsApp, iar el e
singurul mod de a scrie SUPPORT_JID pentru un grup de suport.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
This commit is contained in:
@@ -291,3 +291,44 @@ def test_stergerea_gaseste_documentul_in_ambele_directoare(write):
|
||||
assert store.delete_document("local.md") is True
|
||||
assert store.delete_document("drive.md") is True
|
||||
assert store.delete_document("inexistent.md") is False
|
||||
|
||||
|
||||
def test_schimbarea_modelului_reface_embeddings(monkeypatch, write):
|
||||
"""Alt EMBED_MODEL = alti vectori; refolosirea lor ar amesteca tacut doua modele."""
|
||||
import config
|
||||
import indexer
|
||||
|
||||
write("doc.md", "acelasi text, alt model")
|
||||
monkeypatch.setattr(indexer, "embed", lambda chunk: [1.0])
|
||||
indexer.build()
|
||||
|
||||
calculate = []
|
||||
monkeypatch.setattr(indexer, "embed", lambda chunk: calculate.append(chunk) or [2.0])
|
||||
monkeypatch.setattr(config, "get", lambda k, d=None: "alt-model"
|
||||
if k == "EMBED_MODEL" else config.DEFAULTS.get(k, d))
|
||||
|
||||
rezultat = indexer.build()
|
||||
assert calculate == ["acelasi text, alt model"]
|
||||
assert rezultat["embeddings_refolosite"] == 0
|
||||
|
||||
|
||||
def test_indexul_fara_camp_model_se_recalculeaza_o_data(monkeypatch, write):
|
||||
"""Intrarile scrise inainte de campul `model` nu se pot atribui unui model."""
|
||||
import json
|
||||
import config
|
||||
import indexer
|
||||
|
||||
write("doc.md", "text vechi")
|
||||
config.STATE_DIR.mkdir(parents=True, exist_ok=True)
|
||||
config.INDEX_FILE.write_text(json.dumps(
|
||||
[{"source": "doc.md", "chunk": 0, "text": "text vechi", "embedding": [9.0]}]),
|
||||
encoding="utf-8")
|
||||
|
||||
calculate = []
|
||||
monkeypatch.setattr(indexer, "embed", lambda chunk: calculate.append(chunk) or [1.0])
|
||||
assert indexer.build()["embeddings_refolosite"] == 0
|
||||
assert calculate == ["text vechi"]
|
||||
|
||||
calculate.clear()
|
||||
assert indexer.build()["embeddings_refolosite"] == 1
|
||||
assert calculate == []
|
||||
|
||||
Reference in New Issue
Block a user